diff --git a/hapi-base/pom.xml b/hapi-base/pom.xml index 0b92f1114..335c40c96 100644 --- a/hapi-base/pom.xml +++ b/hapi-base/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -57,6 +57,18 @@ + + maven-javadoc-plugin + 2.8 + true + + 128m + 1g + true + true + true + + org.codehaus.mojo taglist-maven-plugin diff --git a/hapi-examples/pom.xml b/hapi-examples/pom.xml index 59a0e7346..9d735794d 100644 --- a/hapi-examples/pom.xml +++ b/hapi-examples/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml diff --git a/hapi-osgi-base/pom.xml b/hapi-osgi-base/pom.xml index d31d20735..3338725f8 100644 --- a/hapi-osgi-base/pom.xml +++ b/hapi-osgi-base/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml diff --git a/hapi-sourcegen/pom.xml b/hapi-sourcegen/pom.xml index bb082c40e..e48584922 100644 --- a/hapi-sourcegen/pom.xml +++ b/hapi-sourcegen/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml diff --git a/hapi-structures-v21/pom.xml b/hapi-structures-v21/pom.xml index 834f3d29a..76a6d219d 100644 --- a/hapi-structures-v21/pom.xml +++ b/hapi-structures-v21/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -89,7 +89,7 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m diff --git a/hapi-structures-v22/pom.xml b/hapi-structures-v22/pom.xml index c4a0a5a3d..9d6bb01b0 100644 --- a/hapi-structures-v22/pom.xml +++ b/hapi-structures-v22/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -89,7 +89,7 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m diff --git a/hapi-structures-v23/pom.xml b/hapi-structures-v23/pom.xml index ba8e90e5d..60706ef5a 100644 --- a/hapi-structures-v23/pom.xml +++ b/hapi-structures-v23/pom.xml @@ -4,7 +4,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -90,7 +90,7 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m diff --git a/hapi-structures-v231/pom.xml b/hapi-structures-v231/pom.xml index eeb4fb861..de175d4a0 100644 --- a/hapi-structures-v231/pom.xml +++ b/hapi-structures-v231/pom.xml @@ -4,7 +4,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -90,7 +90,7 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m diff --git a/hapi-structures-v24/pom.xml b/hapi-structures-v24/pom.xml index 05000ba67..c614c780c 100644 --- a/hapi-structures-v24/pom.xml +++ b/hapi-structures-v24/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -89,7 +89,7 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m diff --git a/hapi-structures-v25/pom.xml b/hapi-structures-v25/pom.xml index 397e86445..4b1c24809 100644 --- a/hapi-structures-v25/pom.xml +++ b/hapi-structures-v25/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -89,13 +89,14 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m 1g true true + true http://hl7api.sourceforge.net/apidocs/ diff --git a/hapi-structures-v251/pom.xml b/hapi-structures-v251/pom.xml index 89f4ca607..29df86cef 100644 --- a/hapi-structures-v251/pom.xml +++ b/hapi-structures-v251/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -89,13 +89,14 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m 1g true true + true http://hl7api.sourceforge.net/apidocs/ diff --git a/hapi-structures-v26/pom.xml b/hapi-structures-v26/pom.xml index 7ef9dbdff..04f69be90 100644 --- a/hapi-structures-v26/pom.xml +++ b/hapi-structures-v26/pom.xml @@ -4,7 +4,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml @@ -90,13 +90,14 @@ maven-javadoc-plugin - 2.6.1 + 2.8 true 128m 1g true true + true http://hl7api.sourceforge.net/apidocs/ diff --git a/hapi-test/pom.xml b/hapi-test/pom.xml index f2714406e..c7c89eaf4 100644 --- a/hapi-test/pom.xml +++ b/hapi-test/pom.xml @@ -3,7 +3,7 @@ hapi ca.uhn.hapi - 1.2-alpha2 + 1.2-beta1 ../pom.xml diff --git a/pom.xml b/pom.xml index b9938567c..1acbeb642 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ ca.uhn.hapi hapi pom - 1.2-alpha2 + 1.2-beta1 HAPI - Open Source Java HL7 Parser and API http://hl7api.sourceforge.net/ @@ -80,6 +80,9 @@ + + Axel Biernat + Rodolfo Chavez @@ -194,17 +197,6 @@ 1024m - - maven-assembly-plugin - false - - - src/assembly/hapi-all.xml - src/assembly/hapi-src.xml - src/assembly/hapi-jdk14.xml - - - @@ -218,12 +210,13 @@ UTF-8 all - 1.2-alpha2 - 1.2-alpha2 + 1.2-beta1 + 1.2-beta1 + org.apache.maven.plugins maven-jxr-plugin @@ -382,6 +376,7 @@ hapi-structures-v26 hapi-test hapi-osgi-base + hapi-dist diff --git a/src/assembly/hapi-all.xml b/src/assembly/hapi-all.xml deleted file mode 100644 index f81a321c2..000000000 --- a/src/assembly/hapi-all.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - all - - - zip - tar.bz2 - - - false - - - - - ca.uhn.hapi:hapi-base - - - true - lib - false - - - - - ca.uhn.hapi:hapi-examples - ca.uhn.hapi:hapi-structures-v21 - ca.uhn.hapi:hapi-structures-v22 - ca.uhn.hapi:hapi-structures-v23 - ca.uhn.hapi:hapi-structures-v231 - ca.uhn.hapi:hapi-structures-v24 - ca.uhn.hapi:hapi-structures-v25 - ca.uhn.hapi:hapi-structures-v251 - ca.uhn.hapi:hapi-structures-v26 - - - false - lib - false - - - - - ca.uhn.hapi:hapi-base - ca.uhn.hapi:hapi-structures-v21 - ca.uhn.hapi:hapi-structures-v22 - ca.uhn.hapi:hapi-structures-v23 - ca.uhn.hapi:hapi-structures-v231 - ca.uhn.hapi:hapi-structures-v24 - ca.uhn.hapi:hapi-structures-v25 - ca.uhn.hapi:hapi-structures-v251 - ca.uhn.hapi:hapi-structures-v26 - - - sources - false - sources - false - - - - - - - - src/docs - - **/* - - - - - diff --git a/src/assembly/hapi-jdk14.xml b/src/assembly/hapi-jdk14.xml index 36f0ac483..fd225bb20 100644 --- a/src/assembly/hapi-jdk14.xml +++ b/src/assembly/hapi-jdk14.xml @@ -1,46 +1,42 @@ - - - - jdk14 - - - zip - tar.bz2 - - - false - - - - - ca.uhn.hapi:hapi-base - ca.uhn.hapi:hapi-structures-v21 - ca.uhn.hapi:hapi-structures-v22 - ca.uhn.hapi:hapi-structures-v23 - ca.uhn.hapi:hapi-structures-v231 - ca.uhn.hapi:hapi-structures-v24 - ca.uhn.hapi:hapi-structures-v25 - ca.uhn.hapi:hapi-structures-v251 - ca.uhn.hapi:hapi-structures-v26 - - - jdk14 - false - false - - - - - - - - src/jdk14docs - - **/* - - - - - - + + + + jdk14 + + + zip + tar.bz2 + + + false + + + + + ca.uhn.hapi:hapi-base:jdk14 + ca.uhn.hapi:hapi-structures-v21:jdk14 + ca.uhn.hapi:hapi-structures-v22:jdk14 + ca.uhn.hapi:hapi-structures-v23:jdk14 + ca.uhn.hapi:hapi-structures-v231:jdk14 + ca.uhn.hapi:hapi-structures-v24:jdk14 + ca.uhn.hapi:hapi-structures-v25:jdk14 + ca.uhn.hapi:hapi-structures-v251:jdk14 + ca.uhn.hapi:hapi-structures-v26:jdk14 + + lib + + + + + + + ../src/jdk14docs + + **/* + + + + + + diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 7381c33b4..43995003d 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -1,157 +1,230 @@ - - - - HAPI - - - - - Fix an issue where calling - AbstractPrimitive#parse(String) - (for example on an ST datatype) - would not clear existing - extra components - if any were defined. - - - Prevent MessageIDGenerator (used to generate message control IDs for ACK messages, for example in SimpleServer) - from throwing an exception if it is not able to parse the value found in id_file. Previously if something - went wrong and this file was blank, a hard to debug exception was thrown. Now, control ID sequencing is simply - reset to zero. Thanks to an anonymous bug submittor. - - - Fix an issue where inserting/removing a repetition of the very last field in a segment - fails due to an incorrect range check in AbstractSegment. Thanks Rodolfo for submitting! - - - Where multiple structures are marked as associated with the same trigger event - (example: ORN_O02 and ORR_O02 are both indicated as matching trigger ORR^O02) the - parser will favour the structure whose name matches the event type and trigger (ORR_O02 in the - previous example) when parsing a message with no structure explicitly defined in MSH-9-3. - - - Fix an issue where subcomponents within a Varies (OBX-5) value are incorrectly handled. For example, - if OBX-2 specifies a composite type, and the first component is also a composite, the first subcomponent - (represented by the text F1C2 below) would be lost. - - OBX||AD|||F1C1&F1C2^F2C1 - - ]]> - - - Correct a PipeParser parsing issue: When a message is being parsed which contains - multiple unexpected segments, any unexpected segments after the first one may appear - out of order if the message is re-encoded. - - - When encoding a group using the PipeParser where the first segment is required, but no data has been populated in that segment, - the empty segment is now still encoded if needed as a blank segment in order to give parsers a hint about which - group further segments are in. For example, in an ORU^R01 message with a populated OBX segment, but no data - in the mandatory OBR segment which begins the ORDER_OBSERVATION group (see - reference]]>), - the message would still contain an empty OBR segment when encoded: - - MSH|^~\&|REG|W|||201103230042||ORU^R01|32153168|P|2.5 - OBR| - OBX||ST|||Value Data - - ]]> - Previously, the following encoding would have occurred, which would have incorrectly been parsed as - having a custom OBX segment instead of having a normal ORDER_OBSERVATION group: - - MSH|^~\&|REG|W|||201103230042||ORU^R01|32153168|P|2.5 - OBX||ST|||Value Data - - ]]> - - - - HAPI libraries are now available in the Maven Central Repo. Thanks to Francis De Brabandere for figuring out how to make this happen! - (Regression in 1.0-beta1) Some structures contained incorrect version information which led to inability to parse Z segments - Message types now have a convenience method initQuickstart which sets default values to MSH segment (field separator, message type, etc) - HAPI now has a Maven plugin which generates Message/Group/Segment struxctures based on an HL7 conformance profile. See the conformance]]> page for more information. - Allow users of HAPI SimpleServer to create an Application that handles errors. The provided patch adds an interface, which should be implemented by exception aware Applications. The application can then re-dispatch the provided ACK, or a create a completely new message. - Correct XML encoding of OMD_O03. (OMD_O03.DIET was incorrectly being encoded simply as "DIE") - Correct the spelling of the name TIMING in a number of group structures (e.g. OML_O21_TIMING which was previously OML_O21_TIIMING) - Update structure classes source generator to use an Apache Velocity based template instead of simple hard-coded string concatenation. This will make it much easier to add new features to the structures in the future. - Message now has a method Message#printStructure()]]>, which returns a useful String for debugging containing a description of the entire structure of the message - GenericParser ignores custom ModelClassFactory implementations passed into its constructor. Thanks to John R for reporting. - XML parser now parses subsequent datatype components correctly when a component is missing. E.g. if ED.1 is missing but ED.2 is present: Previously, ED.2 would be parsed as ED.1. - Parsing OBX-5 failed when value (as indicated by OBX-2) was a type which requires a table number (IS or ID). HAPI now defaults to table 0. - Parsing OBX-5 failed when value (as indicated by OBX-2) was a type which requires a table number (IS or ID). HAPI now defaults to table 0. - Add check to ConnectionHub to avoid returning a connection which was explicitly closed. Also update "send and receive" example in documentation to show correct way of discarding a connection using ConnectionHub. - HAPI now logs the current version as it is being initialized, for troubleshooting purposes. - Add getters and setters to DT, TM, and TS data types to get and set values using standard Java Date and Calendar objects. (Examples here and here]]>) - Add factory method]]> to PipeParser which returns an instance with validation disabled (useful for one-liner parse routines) - Add system property]]> to allow OBX-2 to contain invalid values and still parse - - - Correct an issue where a NullPointerException occurs if a mandatory segment at the end of a message is not present - - - Correct regression introduced in 1.0-beta1 where a second segment within a group with the same name (i.e. the two PID segments in an ADT^A17) fails to parse correctly. - Provide default implementation of new abstract method "createNewTypeWithoutReflection" on AbstractSegment class to prevent breaking existing user defined types. Thanks to Christian Ohr for reporting. - Clean up logging in ServerSocketStreamSource (used by HL7Server) so that it doesn't spew unneccesary logs while waiting for a connection - Remove all test suites (not tests, just the suites), as they cause maven to execute tests twice, and clean up test execution. Full test suie execution is down to ~90 seconds from 10 mins. - - - CanonicalModelClassFactory (always returns the same version), and CustomModelClassFactory (provides easy way to use custom structure packages)]]> - Fix a bug where formatting escape sequences were stripped from messages (i.e. leave sequences such as /.br/ alone) - Overhaul Escape class (handles HL7 escape sequences) to dramatically improve performance - Fix NullPointerException in DefaultValidator when no table present for an ID datatype - Allow parsing of unknown message types for 2.5.1 and 2.6 messages - Convert HAPI source version JDK 5.0. This allows the use (and begins a gradual conversion) to generics by HAPI's internal structures. Support for JDK1.4 will still remain through version specific JARs produced by RetroTranslator. - Add getNames() method to Segment, to allow programatic access to segment's field names (needed by hUnit) - Fix serialization of HAPI Message objects. Also added serialVersionUID to a number of core classes. - Fix a memory leak in Escape.java when lots of different encoding chars are used - Modify ProcessorImpl (HL7Server processing class) to use an ExecutorService instead of spawning a new thread for each message to generate ACKs. - Fix XML parsing of seg groups containing more than one instance of the same segment (e.g. A17) - - - Add constructors to all parser types allowing a custom model factory - Fix XML parsing of seg groups containing more than one instance of the same segment (e.g. A17) - Added isRunning() method to SimpleServer - Add NULLDT datatype, to be used in withdrawn fields. Note that default validation expects this datatype to be empty, but custom validation does not need to enforce this. - Add setEncoding method to XmlParser to allow text encoding to be specified when creating XML messages. In response to mailing list query from Fernando Ramírez Sánchez - Add single argument constructor to ID datatype, to allow it to be used in OBX-5 - New HAPI maven repository now available at http://hl7api.sourceforge.net/m2/ - Make PipeParser not crash on empty segments (meaning segments with just a segment name, no field separator or fields) - NullPointerException if OBX-2 is invalid and OBX-5 is set - Parsing fails when (pipe) is used as non-field separator - Allow Parser to accept a null ValidationContext, which will prevent any attempt at validating messages from being made. - Allow Parsers now get their default validation context from ValidationContextFactory if none is supplied - Allow A new system property (See Varies JavaDoc) may be specified to supply a default datatype to be assumed for OBX-5 if none is found in OBX-2. A missing OBX-2 is not a valid case, but this property would allow a user to work around problems receiving from a bad message source - - - Remove JDK 5 dependency - - - hapi 0.4.3 Class Parser : Multi-threading conflict can occur - Unescaping in XMLParser.getCriticalResponseData() - PipeParser.getCriticalResponseData() does not use version - NullPointerException on garbage messages - Class ExtraComponents not Serializable - "I" instead of "PID" freezes the parser - validation contexts are not used during parsing - Error generating error responses for XML messages - SIU S12 Segment Issue - DFT-P03 - incorrect message structure - NM integer magnitude limited to java int - ORU_R01_OBSERVATION incorrectly defined - OBX-5 type assignment only operates on first rep - Missing Code in Version 2.5 - ORL_O34 message incorrectly defined - - - + + + + HAPI + + + + + Add two new system properties which allow OBX segments messages to be parsed + even if they are either missing, or have an invalid value in OBX-2 (which defines + the datatype used in OBX-5). + More information + ]]> + + + Add new utility classes for + iterating over + ]]> + a file containing multiple + ER7 encoded HL7 messages + + + Fix an issue where calling + AbstractPrimitive#parse(String) + ]]> + (for example on an ST datatype) + would not clear existing + extra components + ]]> + if any were defined. + + + Fix one regression caused by the feature below in 1.2-beta1, where a group containing at least one + mandatory segment would be encoded if it was accessed, even if no content was added to it. + + + When encoding a group using the PipeParser where the first segment is required, but no data has been populated in that segment, + the empty segment is now still encoded if needed as a blank segment in order to give parsers a hint about which + group further segments are in. This helps to ensure that messages can be "round tripped", meaning that + a message which is parsed, encoded, and then re-parsed should contain exactly the same structure from + beginning to end. + For example, in an ORU^R01 message with a populated OBX segment, but no data + in the mandatory OBR segment which begins the ORDER_OBSERVATION group (see + reference]]>), + the message would still contain an empty OBR segment when encoded: + + MSH|^~\&|REG|W|||201103230042||ORU^R01|32153168|P|2.5 + OBR| + OBX||ST|||Value Data + + ]]> + Previously, the following encoding would have occurred, which would have incorrectly been parsed as + having a custom OBX segment instead of having a normal ORDER_OBSERVATION group: + + MSH|^~\&|REG|W|||201103230042||ORU^R01|32153168|P|2.5 + OBX||ST|||Value Data + + ]]> + + + Group]]> + interface now has a new method: isGroup(String). This method allows callers to determine + if a child structure is a segment or a group. The only provided implementation, AbstractGroup, + implements this method, so the API change should not have any effect on users. + + + Restore missing get[FIELD_NAME]Reps() methods from segments. These were accidentally removed + with the conversion to a Velocity based structure generator, but they have now been + restored. + + + Avoid a NullPointerException if a null value is passed into the "setValue(Date)" or + "setValue(Calendar)" methods on a DT, TS, or TM datatype. Passing in a null now + simply clears any existing value, bringing these methods in line with + the behaviour of the "setValue(String)" method. + Thanks to Michael for reporting! + + + Fix potential race condition when using ConnectionHub in a multithreaded + environment. + + + Avoid line wrapping when XML encoding messages using the XMLParser. This means + that values with very long strings won't have unexpected breaks added when + they are encoded and re-parsed. + + + Correct issue where extra components in primitive types within OBX-5 appear twice when + message is re-encoded. This is useful, for example, if you are receiving messages + from a system which is not correctly escaping ampersands or carats within + an OBX-5 value. Prior to chis change, a message containing the following + segment: + + OBX||ST|||F1C1^F2C1&F2C2 + + ]]> + Would be re-encoded as: + + OBX||ST|||F1C1&F2C2^F2C1&F2C2 + + ]]> + Thanks to Andbuty Choy for finding this. + + + Prevent MessageIDGenerator (used to generate message control IDs for ACK messages, for example in SimpleServer) + from throwing an exception if it is not able to parse the value found in id_file. Previously if something + went wrong and this file was blank, a hard to debug exception was thrown. Now, control ID sequencing is simply + reset to zero. Thanks to an anonymous bug submittor. + + + Fix an issue where inserting/removing a repetition of the very last field in a segment + fails due to an incorrect range check in AbstractSegment. Thanks Rodolfo for submitting! + + + Where multiple structures are marked as associated with the same trigger event + (example: ORN_O02 and ORR_O02 are both indicated as matching trigger ORR^O02) the + parser will favour the structure whose name matches the event type and trigger (ORR_O02 in the + previous example) when parsing a message with no structure explicitly defined in MSH-9-3. + + + Fix an issue where subcomponents within a Varies (OBX-5) value are incorrectly handled. For example, + if OBX-2 specifies a composite type, and the first component is also a composite, the first subcomponent + (represented by the text F1C2 below) would be lost. + + OBX||AD|||F1C1&F1C2^F2C1 + + ]]> + + + Correct a PipeParser parsing issue: When a message is being parsed which contains + multiple unexpected segments, any unexpected segments after the first one may appear + out of order if the message is re-encoded. + + + + HAPI libraries are now available in the Maven Central Repo. Thanks to Francis De Brabandere for figuring out how to make this happen! + (Regression in 1.0-beta1) Some structures contained incorrect version information which led to inability to parse Z segments + Message types now have a convenience method initQuickstart which sets default values to MSH segment (field separator, message type, etc) + HAPI now has a Maven plugin which generates Message/Group/Segment struxctures based on an HL7 conformance profile. See the conformance]]> page for more information. + Allow users of HAPI SimpleServer to create an Application that handles errors. The provided patch adds an interface, which should be implemented by exception aware Applications. The application can then re-dispatch the provided ACK, or a create a completely new message. + Correct XML encoding of OMD_O03. (OMD_O03.DIET was incorrectly being encoded simply as "DIE") + Correct the spelling of the name TIMING in a number of group structures (e.g. OML_O21_TIMING which was previously OML_O21_TIIMING) + Update structure classes source generator to use an Apache Velocity based template instead of simple hard-coded string concatenation. This will make it much easier to add new features to the structures in the future. + Message now has a method Message#printStructure()]]>, which returns a useful String for debugging containing a description of the entire structure of the message + GenericParser ignores custom ModelClassFactory implementations passed into its constructor. Thanks to John R for reporting. + XML parser now parses subsequent datatype components correctly when a component is missing. E.g. if ED.1 is missing but ED.2 is present: Previously, ED.2 would be parsed as ED.1. + Parsing OBX-5 failed when value (as indicated by OBX-2) was a type which requires a table number (IS or ID). HAPI now defaults to table 0. + Parsing OBX-5 failed when value (as indicated by OBX-2) was a type which requires a table number (IS or ID). HAPI now defaults to table 0. + Add check to ConnectionHub to avoid returning a connection which was explicitly closed. Also update "send and receive" example in documentation to show correct way of discarding a connection using ConnectionHub. + HAPI now logs the current version as it is being initialized, for troubleshooting purposes. + Add getters and setters to DT, TM, and TS data types to get and set values using standard Java Date and Calendar objects. (Examples here and here]]>) + Add factory method]]> to PipeParser which returns an instance with validation disabled (useful for one-liner parse routines) + Add system property]]> to allow OBX-2 to contain invalid values and still parse + + + Correct an issue where a NullPointerException occurs if a mandatory segment at the end of a message is not present + + + Correct regression introduced in 1.0-beta1 where a second segment within a group with the same name (i.e. the two PID segments in an ADT^A17) fails to parse correctly. + Provide default implementation of new abstract method "createNewTypeWithoutReflection" on AbstractSegment class to prevent breaking existing user defined types. Thanks to Christian Ohr for reporting. + Clean up logging in ServerSocketStreamSource (used by HL7Server) so that it doesn't spew unneccesary logs while waiting for a connection + Remove all test suites (not tests, just the suites), as they cause maven to execute tests twice, and clean up test execution. Full test suie execution is down to ~90 seconds from 10 mins. + + + CanonicalModelClassFactory (always returns the same version), and CustomModelClassFactory (provides easy way to use custom structure packages)]]> + Fix a bug where formatting escape sequences were stripped from messages (i.e. leave sequences such as /.br/ alone) + Overhaul Escape class (handles HL7 escape sequences) to dramatically improve performance + Fix NullPointerException in DefaultValidator when no table present for an ID datatype + Allow parsing of unknown message types for 2.5.1 and 2.6 messages + Convert HAPI source version JDK 5.0. This allows the use (and begins a gradual conversion) to generics by HAPI's internal structures. Support for JDK1.4 will still remain through version specific JARs produced by RetroTranslator. + Add getNames() method to Segment, to allow programatic access to segment's field names (needed by hUnit) + Fix serialization of HAPI Message objects. Also added serialVersionUID to a number of core classes. + Fix a memory leak in Escape.java when lots of different encoding chars are used + Modify ProcessorImpl (HL7Server processing class) to use an ExecutorService instead of spawning a new thread for each message to generate ACKs. + Fix XML parsing of seg groups containing more than one instance of the same segment (e.g. A17) + + + Add constructors to all parser types allowing a custom model factory + Fix XML parsing of seg groups containing more than one instance of the same segment (e.g. A17) + Added isRunning() method to SimpleServer + Add NULLDT datatype, to be used in withdrawn fields. Note that default validation expects this datatype to be empty, but custom validation does not need to enforce this. + Add setEncoding method to XmlParser to allow text encoding to be specified when creating XML messages. In response to mailing list query from Fernando Ramírez Sánchez + Add single argument constructor to ID datatype, to allow it to be used in OBX-5 + New HAPI maven repository now available at http://hl7api.sourceforge.net/m2/ + Make PipeParser not crash on empty segments (meaning segments with just a segment name, no field separator or fields) + NullPointerException if OBX-2 is invalid and OBX-5 is set + Parsing fails when (pipe) is used as non-field separator + Allow Parser to accept a null ValidationContext, which will prevent any attempt at validating messages from being made. + Allow Parsers now get their default validation context from ValidationContextFactory if none is supplied + Allow A new system property (See Varies JavaDoc) may be specified to supply a default datatype to be assumed for OBX-5 if none is found in OBX-2. A missing OBX-2 is not a valid case, but this property would allow a user to work around problems receiving from a bad message source + + + Remove JDK 5 dependency + + + hapi 0.4.3 Class Parser : Multi-threading conflict can occur + Unescaping in XMLParser.getCriticalResponseData() + PipeParser.getCriticalResponseData() does not use version + NullPointerException on garbage messages + Class ExtraComponents not Serializable + "I" instead of "PID" freezes the parser + validation contexts are not used during parsing + Error generating error responses for XML messages + SIU S12 Segment Issue + DFT-P03 - incorrect message structure + NM integer magnitude limited to java int + ORU_R01_OBSERVATION incorrectly defined + OBX-5 type assignment only operates on first rep + Missing Code in Version 2.5 + ORL_O34 message incorrectly defined + + + diff --git a/src/docs/examples/Create_A_Message.sh b/src/docs/examples/Create_A_Message.sh new file mode 100755 index 000000000..020e0d041 --- /dev/null +++ b/src/docs/examples/Create_A_Message.sh @@ -0,0 +1,14 @@ +# ******************************************* +# * This batch file runs example code +# * +# * For more info, see: http://hl7api.sourceforge.net/devbyexample.html +# ******************************************* + +CP="." +for i in ../lib/*.jar; +do + CP=$i:$CP; +done + +java -cp $CP ca.uhn.hl7v2.examples.CreateAMessage + diff --git a/src/docs/examples/Run_Test_Panel.sh b/src/docs/examples/Run_Test_Panel.sh new file mode 100755 index 000000000..eb4cae2cd --- /dev/null +++ b/src/docs/examples/Run_Test_Panel.sh @@ -0,0 +1,20 @@ +# ******************************************* +# * This batch file runs the HAPI test panel +# * +# * For more info, see: http://hl7api.sourceforge.net/testpanel.html +# ******************************************* + +CP="." +for i in ../lib/*.jar; +do + CP=$i:$CP; +done + +HAPI_HOME="." +PORT="8888" + +echo HAPI_HOME is set to $HAPI_HOME +echo Running ca.uhn.hl7v2.app.TestPanel with HL7Service on port $PORT + +java -cp $CP -Dhapi.home=$HAPI_HOME ca.uhn.hl7v2.app.TestPanel $PORT + diff --git a/src/site/apt/devbyexample.apt b/src/site/apt/devbyexample.apt index 8889ec75f..a273f2b85 100644 --- a/src/site/apt/devbyexample.apt +++ b/src/site/apt/devbyexample.apt @@ -18,6 +18,20 @@ Developing using HAPI - By Example Please note that this page assumes at least a basic familiarity with {{{http://hl7.org}HL7}} and it's terminology. + +* HAPI Community Survey 2011 + + HAPI Community Survey! This year, HAPI will be ten years old! To celebrate, we are + launching our first survey on the HAPI user community. The survey takes less than five + minutes to fill out, as it is just 8 quick multiple choice questions. Please take + a few minutes to show your support! + + {{{https://sourceforge.net/apps/limesurvey/hl7api/index.php?sid=69291&newtest=Y}Access the survey here}} + + The survey will run until the fall. + + + * The Basics * A good starting point with regards to using HAPI would be to @@ -65,11 +79,15 @@ Developing using HAPI - By Example * {{{./xref/ca/uhn/hl7v2/examples/CustomModelClasses.html}Custom Model Classes}} and generic segments can be used to handle custom message types and Z-segments. + * Use {{{./xref/ca/uhn/hl7v2/examples/ParseInvalidObx2Values.html}system properties}} to allow parsing of ORU^R01 (and other messages with OBX segments) which have + an invalid value in OBX-2, which specifies the type used to parse OBX-5. * Advanced Creating Messages * Alessandro Delprete submitted {{{./xref/ca/uhn/hl7v2/examples/EncapsulatedData.html}this example}} of how to embed a CDA document as MIME content in an MDM^T02 message. - +* Utility Classes + + * {{{./xref/ca/uhn/hl7v2/examples/ReadMessagesFromFile.html}Reading Messages from a File}} \ No newline at end of file diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt index 6bb7699c4..c2e771480 100644 --- a/src/site/apt/index.apt +++ b/src/site/apt/index.apt @@ -15,6 +15,27 @@ Welcome (a large multi-site teaching hospital in Toronto, Canada). +HAPI Community Survey - June 9, 2011 + + HAPI 1.2-beta1 has been uploaded to Sourceforge. This release brings some bug fixes and a + few enhancements. See the {{{./changes-report.html}Changelog}} for more info. A final release should + be out in about two weeks barring any unforeseen issues. + + Also, don't forget to {{{https://sourceforge.net/apps/limesurvey/hl7api/index.php?sid=69291&newtest=Y}take the 2011 survey!}} + + +HAPI Community Survey - June 1, 2011 + + This year, HAPI will be ten years old! To celebrate, we are + launching our first survey on the HAPI user community. The survey takes less than five + minutes to fill out, as it is just 8 quick multiple choice questions. Please take + a few minutes to show your support! + + {{{https://sourceforge.net/apps/limesurvey/hl7api/index.php?sid=69291&newtest=Y}Access the survey here}} + + The survey will run until the fall. + + What's New - Mar 28, 2011 HAPI 1.1 has been released!