In a change from the usual blog posts, today we have a guest blog post from Michael K. Martin, DVM, MPH, DACVPM.
I work for the State Veterinarian of South Carolina. State Veterinarians around the U.S. and our counter-parts in the rest of world are something like the health departments are for people. When an animal is found to have a serious infectious disease, we need to be able to track down its contacts so they can be appropriately treated. That means figuring out where the animal has been. In much of the world there are sophisticated animal movement databases to help with this. In the U.S. however we still rely heavily on Interstate Certificates of Veterinary Inspection (CVIs) better known as “Health Certificates.” These list where animals moved from and where they were going to, as well as giving a general sense of when movement was planned.
When an infected animal was reported to us, the drill had been to start pulling out boxes of paper certificates looking for evidence that the animal had moved. Based on other clues we could often limit this to only having to look at a few hundred or thousand paper forms! We began looking for a document management system to convert these to images, index them, and store in a database. But the volume of paper, the complexities of the data and its links to our existing databases made off the shelf software unsuitable. I set out to write a custom application that would integrate scanned image files with our animal health database and allow very rapid entry of basic indexing information. Our scanner outputs PDF files. If we scan a stack of CVIs, they come out as one, multi-page PDF.
So my software just needed to be able to display a page at a time of the PDF in one panel while allowing rapid data entry into a form immediately to the side of the image. Obviously the PDF needed to be able to zoom, rotate, etc. I used iText to cut the pages out and create individual PDFs to store in the database. For the display I found the LGPL version of JPedal. Thus was born the first version of what we now call “Civet.” With that, we can quickly search for CVIs and then display or print the PDF for use in our disease tracing.
Meanwhile, some other State Veterinarians’ staffs created a fillable PDF using Adobe’s LiveCycle and the new XML Forms Architecture (XFA). These give us not just a picture of a piece of paper but actual data. But getting the data out is somewhat labor intensive. First we opened them PDF in Acrobat. Then used Acrobat’s tools to extract the data, then imported those data into the database and attached the original PDF. We wanted to be able to process the XFA CVIs the same way we did the others. JPedalXFA fit that bill. There was only one catch.
The new XFA standard is very tricky to work with, and the XFA CVI form is very complex. It changes its contents depending on whether it is a small animal or a livestock certificate, includes a digital signature, etc. Even most commercial PDF viewers won’t display them correctly. At first JPedalXFA did an only marginal job of displaying the forms. But with our site license I was able to get paid support. The support team at IDRSolutions worked with some sample forms I was able to give them and with each “daily build” the performance improved. Recently, they implemented their own image processing. Don’t ask me for details, I’m a full-time veterinary epidemiologist and only part-time programmer. That change has allowed proper display of more of the “weird format” PDFs we sometimes receive in the email from other state veterinarians.
We still run into issues now and then. Usually in my code, sometimes in the JPedal Java PDF Library, and sometimes in strange ways they interact with the host system. But with the support help I get from IDRSolutions, we work through them. Civet is now up to version 3, using a data standard endorsed by the US Animal Health Association’s Informatics Standards subcommittee to communicate with the back end database, etc. It is slowly being adopted by additional State Veterinarians’ offices around the country. For three versions JPedal’s PdfDecoder has continued to hold the place of honor on the display panel.
The result is that JPedal is now playing a small but important role in helping protect the health of livestock and pets around the U.S.
For more guest blog articles be sure to check out:
PDF to HTML5 – Thriving in a Transitional Phase
LabBest on working with PDF files in Java,
The Open Journal Project and PDF to HTML5: Removing the barriers,
PDF and PDF2HTML5: The Best of Both Worlds for Teachers,
JPedal thé perfect match for Qtree Solutions
JPedal used as a Smart Software in Retina.
Is there is something you’d like to blog about connected to Java, HTML5, SVG, JavaFX or PDF files? Any tips, tricks or recommendations? contact us and we would be happy to feature you in our new ‘Guest Blogger’ series.