VMDB Veterinary HL7 Library Project

Notes to potential library developers/contributors.

Most pressing needs for next early beta release:

Items requiring significant design choices

1. Validation of field length limits
   a.  How do we encode into rule string or other rule source
   b.  How to enforce during parsing and building

2. Validation at build-time
   a.  Currently must save and parse to do even the validation
       that currently does exist
   b.  Where in the cycle should validation take place?
   c.  How best to communicate details of validation failure.

3. Validation of ID and IS data type values
   a.  Very specific to each Message/Segment/Field

Items requiring HL7 design decisions and or clarification

1, Encoding of post-coordinated SNOMED terms.
   a.  Currently use multiple OBX segments linked by subid.
   b.  General preference if for SNOMED syntax in one OBX [1234(5678=0987), etc.]
   c.  Display of human readable text will be a little trickier.
   d.  Want to be able to keep high level interface (modifyDiagnosis())
       intact even if we change the implementation.

2. Proper handling of ORC types other than new.
   a.  Currently we expose the raw ORC "Order Control" field and ignore processing.
   b.  Need to properly link to the message we are modifying or deleting for
       RP and CA types.
   c.  Need to wrap in programmer-friendly API

Other items that need work

1. XML parsing
   a.  Should be able to build on one of the existing general purpose
       XML parsers.
   b.  "Official" DTDs/Schemas for XML representation of HL7 2.4 have been
       released and are available in members-only area of HL7

2. Fix remaining inconsistencies with official DTDs

3. Improve design of factory methods in C++ version (and Java version if
   needed to maintain consistency.)

4. Improve handling of constant objects (mostly CEElement) used as observation
   identifiers, etc.
   a.  Should not need to clone these constants for correct object lifetime
       management.  Current solution was quick compromise.

5. C++ implementation needs significant testing, profiling, and improvement
   a.  Memory issues
   b.  Const correctness
   c.  Exception handling
   d.  Namespace issues
   e.  Packaging as object code library

6. Make toString(), toHL7String(), toXML(), readString(), etc., more
   consistent.

MANY MORE ISSUES I'VE MISSED . . .