Loading bundles/ch.elexis.core.hl7.v2x/src/ch/elexis/hl7/HL7ReaderFactory.java +49 −3 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.slf4j.Logger; Loading Loading @@ -82,7 +84,7 @@ public enum HL7ReaderFactory { while (stringIterator.hasNext()) { String next = stringIterator.next(); next = assureSaveMSH9Access(next); next = assureSaveMessage(next); Message hl7Message = p.parse(next); messageList.add(hl7Message); ret.add(getReaderForMessage(hl7Message)); Loading Loading @@ -123,14 +125,58 @@ public enum HL7ReaderFactory { return new ByteArrayInputStream(bytes); } private String assureSaveMSH9Access(String hl7Message){ private String assureSaveMessage(String hl7Message){ String ret = assureSaveMSH9Access(hl7Message); ret = assureSaveORC(ret); return ret; } private String[] getLines(String hl7Message){ String separator = "\r"; String[] splitted = hl7Message.split(separator); if (splitted.length < 2) { separator = "\n"; splitted = hl7Message.split(separator); } // make sure no new lines at beginning of string for (int i = 0; i < splitted.length; i++) { splitted[i] = splitted[i].replaceAll("\n", ""); } return splitted; } private int getIndexOfSegment(String[] splittedMessage, String segmentStart){ int index = 0; boolean found = false; for (; index < splittedMessage.length; index++) { if (splittedMessage[index].startsWith(segmentStart)) { found = true; break; } } return found ? index : -1; } private String assureSaveORC(String hl7Message){ String[] splitted = getLines(hl7Message); if (splitted.length < 2) { throw new IllegalArgumentException("Could not split message"); } List<String> splittedList = new ArrayList<>(Arrays.asList(splitted)); String[] mshPart = splitted[0].split("\\|", -1); if (mshPart[8].contains("OUL^R22")) { int orcIndex = getIndexOfSegment(splitted, "ORC|"); int obrIndex = getIndexOfSegment(splitted, "OBR|"); if (orcIndex > 0 && obrIndex > 0 && orcIndex < obrIndex) { Collections.swap(splittedList, orcIndex, obrIndex); } } return joinStrings(splittedList.toArray(new String[splittedList.size()]), "\r\n"); } private String assureSaveMSH9Access(String hl7Message){ String[] splitted = getLines(hl7Message); if (splitted.length < 2) { throw new IllegalArgumentException("Could not split message"); } Loading Loading @@ -168,7 +214,7 @@ public enum HL7ReaderFactory { splitted[0] = joinStrings(mshPart, "|"); } return joinStrings(splitted, separator); return joinStrings(splitted, "\r\n"); } private String joinStrings(String[] array, String separator){ Loading tests/ch.elexis.core.hl7.v2x.tests/Test_HL7_Imports.launch +97 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,103 @@ <stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="product" value="ch.elexis.core.application.product"/> <booleanAttribute key="run_in_ui_thread" value="false"/> <stringAttribute key="selected_target_plugins" value="ca.uhn.hapi.osgi-base@default:default,ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.eclipsesource.jaxrs.jersey-all-nojavax@default:default,com.google.gson@default:default,com.google.guava@default:default,com.ibm.icu@default:default,com.mysql.cj@default:default,com.sun.activation.javax.activation@default:default,jakarta.persistence@default:default,javax.el@default:default,javax.enterprise.cdi-api@default:default,javax.inject@default:default,javax.interceptor-api@default:default,javax.servlet@default:default,javax.transaction-api@default:default,javax.transaction.jta@default:default,javax.xml.stream.stax-api@default:default,javax.xml@default:default,jaxb-api@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections4@default:default,org.apache.commons.collections@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.io*2.5.0@default:default,org.apache.commons.lang3@default:default,org.apache.commons.logging@default:default,org.apache.commons.pool@default:default,org.apache.felix.scr@1:true,org.beanshell.bsh@default:default,org.bouncycastle.bcprov@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.gemini.jpa@3:true,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.persistence.antlr@default:default,org.eclipse.persistence.asm@default:default,org.eclipse.persistence.core@default:default,org.eclipse.persistence.extension@default:false,org.eclipse.persistence.jpa.jpql@default:default,org.eclipse.persistence.jpa@default:default,org.h2@default:default,org.hamcrest.core@default:default,org.jdom@default:default,org.json@default:default,org.junit@default:default,org.postgresql.jdbc42@default:default,org.slf4j.api@default:default,org.slf4j.nop@default:false,osgi.enterprise@default:default"/> <stringAttribute key="selected_workspace_plugins" value="ch.elexis.core.hl7.v2x.tests@default:false,ch.elexis.core.hl7.v2x@default:default,ch.elexis.core.jcifs.test@default:false,ch.elexis.core.jcifs@default:default,ch.elexis.core.jpa.datasource@default:default,ch.elexis.core.jpa.entities.test@default:false,ch.elexis.core.jpa.entities@3:true,ch.elexis.core.jpa.logging.slf4j@default:false,ch.elexis.core.jpa.test@default:false,ch.elexis.core.jpa@default:true,ch.elexis.core.l10n@default:default,ch.elexis.core.logback.rocketchat@default:default,ch.elexis.core.logging.default_configuration@default:false,ch.elexis.core.model.test@default:false,ch.elexis.core.model@default:default,ch.elexis.core.services.test@default:false,ch.elexis.core.services@default:default,ch.elexis.core.test.context@default:false,ch.elexis.core.test@default:default,ch.elexis.core@default:default,ch.rgw.utility.tests@default:false,ch.rgw.utility@default:default,jaxb-api-impl-import-java9@default:default"/> <setAttribute key="selected_target_bundles"> <setEntry value="ca.uhn.hapi.osgi-base@default:default"/> <setEntry value="ch.qos.logback.classic@default:default"/> <setEntry value="ch.qos.logback.core@default:default"/> <setEntry value="ch.qos.logback.slf4j@default:false"/> <setEntry value="com.eclipsesource.jaxrs.jersey-all-nojavax@default:default"/> <setEntry value="com.google.gson@default:default"/> <setEntry value="com.google.guava@default:default"/> <setEntry value="com.ibm.icu@default:default"/> <setEntry value="com.mysql.cj@default:default"/> <setEntry value="com.sun.activation.javax.activation@default:default"/> <setEntry value="jakarta.persistence@default:default"/> <setEntry value="javax.el@default:default"/> <setEntry value="javax.enterprise.cdi-api@default:default"/> <setEntry value="javax.inject@default:default"/> <setEntry value="javax.interceptor-api@default:default"/> <setEntry value="javax.servlet@default:default"/> <setEntry value="javax.transaction-api@default:default"/> <setEntry value="javax.transaction.jta@default:default"/> <setEntry value="javax.xml.stream.stax-api@default:default"/> <setEntry value="javax.xml@default:default"/> <setEntry value="jaxb-api@default:default"/> <setEntry value="org.apache.commons.beanutils@default:default"/> <setEntry value="org.apache.commons.codec@default:default"/> <setEntry value="org.apache.commons.collections4@default:default"/> <setEntry value="org.apache.commons.collections@default:default"/> <setEntry value="org.apache.commons.dbcp@default:default"/> <setEntry value="org.apache.commons.io*2.5.0@default:default"/> <setEntry value="org.apache.commons.lang3@default:default"/> <setEntry value="org.apache.commons.logging@default:default"/> <setEntry value="org.apache.commons.pool@default:default"/> <setEntry value="org.apache.felix.scr@1:true"/> <setEntry value="org.beanshell.bsh@default:default"/> <setEntry value="org.bouncycastle.bcprov@default:default"/> <setEntry value="org.eclipse.ant.core@default:default"/> <setEntry value="org.eclipse.core.contenttype@default:default"/> <setEntry value="org.eclipse.core.expressions@default:default"/> <setEntry value="org.eclipse.core.filesystem.linux.x86_64@default:false"/> <setEntry value="org.eclipse.core.filesystem@default:default"/> <setEntry value="org.eclipse.core.jobs@default:default"/> <setEntry value="org.eclipse.core.resources@default:default"/> <setEntry value="org.eclipse.core.runtime@default:true"/> <setEntry value="org.eclipse.core.variables@default:default"/> <setEntry value="org.eclipse.emf.common@default:default"/> <setEntry value="org.eclipse.emf.ecore@default:default"/> <setEntry value="org.eclipse.equinox.app@default:default"/> <setEntry value="org.eclipse.equinox.common@2:true"/> <setEntry value="org.eclipse.equinox.ds@1:true"/> <setEntry value="org.eclipse.equinox.event@default:default"/> <setEntry value="org.eclipse.equinox.preferences@default:default"/> <setEntry value="org.eclipse.equinox.registry@default:default"/> <setEntry value="org.eclipse.gemini.jpa@3:true"/> <setEntry value="org.eclipse.osgi.compatibility.state@default:false"/> <setEntry value="org.eclipse.osgi.services@default:default"/> <setEntry value="org.eclipse.osgi.util@default:default"/> <setEntry value="org.eclipse.osgi@-1:true"/> <setEntry value="org.eclipse.persistence.antlr@default:default"/> <setEntry value="org.eclipse.persistence.asm@default:default"/> <setEntry value="org.eclipse.persistence.core@default:default"/> <setEntry value="org.eclipse.persistence.extension@default:false"/> <setEntry value="org.eclipse.persistence.jpa.jpql@default:default"/> <setEntry value="org.eclipse.persistence.jpa@default:default"/> <setEntry value="org.h2@default:default"/> <setEntry value="org.hamcrest.core@default:default"/> <setEntry value="org.jdom@default:default"/> <setEntry value="org.json@default:default"/> <setEntry value="org.junit@default:default"/> <setEntry value="org.postgresql.jdbc42@default:default"/> <setEntry value="org.slf4j.api@default:default"/> <setEntry value="org.slf4j.nop@default:false"/> <setEntry value="osgi.enterprise@default:default"/> </setAttribute> <setAttribute key="selected_workspace_bundles"> <setEntry value="ch.elexis.core.hl7.v2x.tests@default:false"/> <setEntry value="ch.elexis.core.hl7.v2x@default:default"/> <setEntry value="ch.elexis.core.jcifs.test@default:false"/> <setEntry value="ch.elexis.core.jcifs@default:default"/> <setEntry value="ch.elexis.core.jpa.datasource@default:default"/> <setEntry value="ch.elexis.core.jpa.entities.test@default:false"/> <setEntry value="ch.elexis.core.jpa.entities@3:true"/> <setEntry value="ch.elexis.core.jpa.logging.slf4j@default:false"/> <setEntry value="ch.elexis.core.jpa.test@default:false"/> <setEntry value="ch.elexis.core.jpa@default:true"/> <setEntry value="ch.elexis.core.l10n@default:default"/> <setEntry value="ch.elexis.core.logback.rocketchat@default:default"/> <setEntry value="ch.elexis.core.logging.default_configuration@default:false"/> <setEntry value="ch.elexis.core.model.test@default:false"/> <setEntry value="ch.elexis.core.model@default:default"/> <setEntry value="ch.elexis.core.services.test@default:false"/> <setEntry value="ch.elexis.core.services@default:default"/> <setEntry value="ch.elexis.core.test.context@default:false"/> <setEntry value="ch.elexis.core.test@default:default"/> <setEntry value="ch.elexis.core@default:default"/> <setEntry value="ch.rgw.utility.tests@default:false"/> <setEntry value="ch.rgw.utility@default:default"/> <setEntry value="jaxb-api-impl-import-java9@default:default"/> </setAttribute> <booleanAttribute key="show_selected_only" value="false"/> <booleanAttribute key="tracing" value="false"/> <booleanAttribute key="useCustomFeatures" value="false"/> Loading tests/ch.elexis.core.hl7.v2x.tests/rsc/LabCube/9885_LabCube_CelltacMEK6500_20191128093117_034358.hl7 0 → 100644 +1 −0 Original line number Diff line number Diff line MSH|^~\&|LabCube|CelltacMEK6500|||20191128093117||OUL^R22^OUL_R22|20191128093117034358|P|2.5.1||||NE||8859/1|en|| PID|1|9885|9885|||||U||||||||U|||||||||||||||||||||| SPM|1||||||||||P|||||||||||||||||| SAC||||||||U|||||||||||||||||||||||||||||||||||| INV||OK|||||||||||||||||| ORC|RE||||||||20191127093117|||||||||||||||||||||| OBR|1||||||20191127093117|||||||||||||||20191128093117|||||||||||||||||||||||||||| OBX|1|NM|WBC^Leukozyten||10|G/l|3-9.6|HH|||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|2|NM|LY%^Lymphozyten||37.4|%|19-48||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|3|NM|MO%^Monozyten||2.2|%|3.4-17.5|LL|||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|4|NM|GR%^Granulozyten||60.4|%|40-74||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|5|NM|LY^Lymphozyten||3.7|G/l|1.5-4||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|6|NM|MO^Monozyten||0.2|G/l|0.1-1.8||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|7|NM|GR^Granulozyten||6.1|G/l|1.4-8||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|8|NM|RBC^Erythrozyten||4.82|T/l|3.9-5.7||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|9|NM|HGB^Hmoglobin||15.3|g/l|11.7-17||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|10|NM|HCT^Hmatokrit||43.3|%|35-50||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|11|NM|MCV^MCV||89.8|fl|80-100||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|12|NM|MCH^MCH||31.7|pg|26-34||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|13|NM|MCHC^MCHC||35.3|g/l|31-36||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|14|NM|RDW-CV^RDW-CV||11.5|%|0-16||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|15|NM|PLT^Thrombozyten||325|G/l|143-400||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|16|NM|PCT^Thrombokrit||0.25|%|0.1-0.5||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|17|NM|MPV^Mittleres Thrombozytenvolumen||7.6|fl|6-13||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|18|NM|PDW^Thrombozyten-Verteilungsbreite||16|%|6-18||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| No newline at end of file tests/ch.elexis.core.hl7.v2x.tests/src/ch/elexis/core/hl7/v2x/Test_SpecificImportFiles.java +29 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,35 @@ public class Test_SpecificImportFiles { assertEquals(LabResultStatus.FINAL, lrd.getResultStatus()); } @Test public void test_V251_OUL_R22_17300() throws IOException, ElexisException{ File importFile = new File(PlatformHelper.getBasePath("ch.elexis.core.hl7.v2x.tests"), "rsc/LabCube/9885_LabCube_CelltacMEK6500_20191128093117_034358.hl7"); List<HL7Reader> hl7Readers = HL7ReaderFactory.INSTANCE.getReader(importFile); assertNotNull(hl7Readers); assertEquals(1, hl7Readers.size()); HL7Reader reader = hl7Readers.get(0); assertEquals(HL7ReaderV251.class, reader.getClass()); ObservationMessage observationMsg = reader.readObservation(resolver, false); List<IValueType> observations = observationMsg.getObservations(); System.out.println("Observations [" + observations.size() + "]"); assertEquals(18, observations.size()); LabResultData lrd = (LabResultData) observations.get(3); assertEquals("Granulozyten", lrd.getName()); assertEquals("GR%", lrd.getCode()); assertEquals("60.4", lrd.getValue()); assertEquals("40-74", lrd.getRange()); assertTrue(lrd.isNumeric()); assertFalse(lrd.isPlainText()); assertEquals("%", lrd.getUnit()); assertEquals("", lrd.getComment()); assertEquals("", lrd.getGroup()); assertEquals(LabResultStatus.FINAL, lrd.getResultStatus()); } /** * @throws IOException * @throws ElexisException Loading Loading
bundles/ch.elexis.core.hl7.v2x/src/ch/elexis/hl7/HL7ReaderFactory.java +49 −3 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.slf4j.Logger; Loading Loading @@ -82,7 +84,7 @@ public enum HL7ReaderFactory { while (stringIterator.hasNext()) { String next = stringIterator.next(); next = assureSaveMSH9Access(next); next = assureSaveMessage(next); Message hl7Message = p.parse(next); messageList.add(hl7Message); ret.add(getReaderForMessage(hl7Message)); Loading Loading @@ -123,14 +125,58 @@ public enum HL7ReaderFactory { return new ByteArrayInputStream(bytes); } private String assureSaveMSH9Access(String hl7Message){ private String assureSaveMessage(String hl7Message){ String ret = assureSaveMSH9Access(hl7Message); ret = assureSaveORC(ret); return ret; } private String[] getLines(String hl7Message){ String separator = "\r"; String[] splitted = hl7Message.split(separator); if (splitted.length < 2) { separator = "\n"; splitted = hl7Message.split(separator); } // make sure no new lines at beginning of string for (int i = 0; i < splitted.length; i++) { splitted[i] = splitted[i].replaceAll("\n", ""); } return splitted; } private int getIndexOfSegment(String[] splittedMessage, String segmentStart){ int index = 0; boolean found = false; for (; index < splittedMessage.length; index++) { if (splittedMessage[index].startsWith(segmentStart)) { found = true; break; } } return found ? index : -1; } private String assureSaveORC(String hl7Message){ String[] splitted = getLines(hl7Message); if (splitted.length < 2) { throw new IllegalArgumentException("Could not split message"); } List<String> splittedList = new ArrayList<>(Arrays.asList(splitted)); String[] mshPart = splitted[0].split("\\|", -1); if (mshPart[8].contains("OUL^R22")) { int orcIndex = getIndexOfSegment(splitted, "ORC|"); int obrIndex = getIndexOfSegment(splitted, "OBR|"); if (orcIndex > 0 && obrIndex > 0 && orcIndex < obrIndex) { Collections.swap(splittedList, orcIndex, obrIndex); } } return joinStrings(splittedList.toArray(new String[splittedList.size()]), "\r\n"); } private String assureSaveMSH9Access(String hl7Message){ String[] splitted = getLines(hl7Message); if (splitted.length < 2) { throw new IllegalArgumentException("Could not split message"); } Loading Loading @@ -168,7 +214,7 @@ public enum HL7ReaderFactory { splitted[0] = joinStrings(mshPart, "|"); } return joinStrings(splitted, separator); return joinStrings(splitted, "\r\n"); } private String joinStrings(String[] array, String separator){ Loading
tests/ch.elexis.core.hl7.v2x.tests/Test_HL7_Imports.launch +97 −2 Original line number Diff line number Diff line Loading @@ -34,8 +34,103 @@ <stringAttribute key="pde.version" value="3.3"/> <stringAttribute key="product" value="ch.elexis.core.application.product"/> <booleanAttribute key="run_in_ui_thread" value="false"/> <stringAttribute key="selected_target_plugins" value="ca.uhn.hapi.osgi-base@default:default,ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.eclipsesource.jaxrs.jersey-all-nojavax@default:default,com.google.gson@default:default,com.google.guava@default:default,com.ibm.icu@default:default,com.mysql.cj@default:default,com.sun.activation.javax.activation@default:default,jakarta.persistence@default:default,javax.el@default:default,javax.enterprise.cdi-api@default:default,javax.inject@default:default,javax.interceptor-api@default:default,javax.servlet@default:default,javax.transaction-api@default:default,javax.transaction.jta@default:default,javax.xml.stream.stax-api@default:default,javax.xml@default:default,jaxb-api@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections4@default:default,org.apache.commons.collections@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.io*2.5.0@default:default,org.apache.commons.lang3@default:default,org.apache.commons.logging@default:default,org.apache.commons.pool@default:default,org.apache.felix.scr@1:true,org.beanshell.bsh@default:default,org.bouncycastle.bcprov@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.linux.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.gemini.jpa@3:true,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.persistence.antlr@default:default,org.eclipse.persistence.asm@default:default,org.eclipse.persistence.core@default:default,org.eclipse.persistence.extension@default:false,org.eclipse.persistence.jpa.jpql@default:default,org.eclipse.persistence.jpa@default:default,org.h2@default:default,org.hamcrest.core@default:default,org.jdom@default:default,org.json@default:default,org.junit@default:default,org.postgresql.jdbc42@default:default,org.slf4j.api@default:default,org.slf4j.nop@default:false,osgi.enterprise@default:default"/> <stringAttribute key="selected_workspace_plugins" value="ch.elexis.core.hl7.v2x.tests@default:false,ch.elexis.core.hl7.v2x@default:default,ch.elexis.core.jcifs.test@default:false,ch.elexis.core.jcifs@default:default,ch.elexis.core.jpa.datasource@default:default,ch.elexis.core.jpa.entities.test@default:false,ch.elexis.core.jpa.entities@3:true,ch.elexis.core.jpa.logging.slf4j@default:false,ch.elexis.core.jpa.test@default:false,ch.elexis.core.jpa@default:true,ch.elexis.core.l10n@default:default,ch.elexis.core.logback.rocketchat@default:default,ch.elexis.core.logging.default_configuration@default:false,ch.elexis.core.model.test@default:false,ch.elexis.core.model@default:default,ch.elexis.core.services.test@default:false,ch.elexis.core.services@default:default,ch.elexis.core.test.context@default:false,ch.elexis.core.test@default:default,ch.elexis.core@default:default,ch.rgw.utility.tests@default:false,ch.rgw.utility@default:default,jaxb-api-impl-import-java9@default:default"/> <setAttribute key="selected_target_bundles"> <setEntry value="ca.uhn.hapi.osgi-base@default:default"/> <setEntry value="ch.qos.logback.classic@default:default"/> <setEntry value="ch.qos.logback.core@default:default"/> <setEntry value="ch.qos.logback.slf4j@default:false"/> <setEntry value="com.eclipsesource.jaxrs.jersey-all-nojavax@default:default"/> <setEntry value="com.google.gson@default:default"/> <setEntry value="com.google.guava@default:default"/> <setEntry value="com.ibm.icu@default:default"/> <setEntry value="com.mysql.cj@default:default"/> <setEntry value="com.sun.activation.javax.activation@default:default"/> <setEntry value="jakarta.persistence@default:default"/> <setEntry value="javax.el@default:default"/> <setEntry value="javax.enterprise.cdi-api@default:default"/> <setEntry value="javax.inject@default:default"/> <setEntry value="javax.interceptor-api@default:default"/> <setEntry value="javax.servlet@default:default"/> <setEntry value="javax.transaction-api@default:default"/> <setEntry value="javax.transaction.jta@default:default"/> <setEntry value="javax.xml.stream.stax-api@default:default"/> <setEntry value="javax.xml@default:default"/> <setEntry value="jaxb-api@default:default"/> <setEntry value="org.apache.commons.beanutils@default:default"/> <setEntry value="org.apache.commons.codec@default:default"/> <setEntry value="org.apache.commons.collections4@default:default"/> <setEntry value="org.apache.commons.collections@default:default"/> <setEntry value="org.apache.commons.dbcp@default:default"/> <setEntry value="org.apache.commons.io*2.5.0@default:default"/> <setEntry value="org.apache.commons.lang3@default:default"/> <setEntry value="org.apache.commons.logging@default:default"/> <setEntry value="org.apache.commons.pool@default:default"/> <setEntry value="org.apache.felix.scr@1:true"/> <setEntry value="org.beanshell.bsh@default:default"/> <setEntry value="org.bouncycastle.bcprov@default:default"/> <setEntry value="org.eclipse.ant.core@default:default"/> <setEntry value="org.eclipse.core.contenttype@default:default"/> <setEntry value="org.eclipse.core.expressions@default:default"/> <setEntry value="org.eclipse.core.filesystem.linux.x86_64@default:false"/> <setEntry value="org.eclipse.core.filesystem@default:default"/> <setEntry value="org.eclipse.core.jobs@default:default"/> <setEntry value="org.eclipse.core.resources@default:default"/> <setEntry value="org.eclipse.core.runtime@default:true"/> <setEntry value="org.eclipse.core.variables@default:default"/> <setEntry value="org.eclipse.emf.common@default:default"/> <setEntry value="org.eclipse.emf.ecore@default:default"/> <setEntry value="org.eclipse.equinox.app@default:default"/> <setEntry value="org.eclipse.equinox.common@2:true"/> <setEntry value="org.eclipse.equinox.ds@1:true"/> <setEntry value="org.eclipse.equinox.event@default:default"/> <setEntry value="org.eclipse.equinox.preferences@default:default"/> <setEntry value="org.eclipse.equinox.registry@default:default"/> <setEntry value="org.eclipse.gemini.jpa@3:true"/> <setEntry value="org.eclipse.osgi.compatibility.state@default:false"/> <setEntry value="org.eclipse.osgi.services@default:default"/> <setEntry value="org.eclipse.osgi.util@default:default"/> <setEntry value="org.eclipse.osgi@-1:true"/> <setEntry value="org.eclipse.persistence.antlr@default:default"/> <setEntry value="org.eclipse.persistence.asm@default:default"/> <setEntry value="org.eclipse.persistence.core@default:default"/> <setEntry value="org.eclipse.persistence.extension@default:false"/> <setEntry value="org.eclipse.persistence.jpa.jpql@default:default"/> <setEntry value="org.eclipse.persistence.jpa@default:default"/> <setEntry value="org.h2@default:default"/> <setEntry value="org.hamcrest.core@default:default"/> <setEntry value="org.jdom@default:default"/> <setEntry value="org.json@default:default"/> <setEntry value="org.junit@default:default"/> <setEntry value="org.postgresql.jdbc42@default:default"/> <setEntry value="org.slf4j.api@default:default"/> <setEntry value="org.slf4j.nop@default:false"/> <setEntry value="osgi.enterprise@default:default"/> </setAttribute> <setAttribute key="selected_workspace_bundles"> <setEntry value="ch.elexis.core.hl7.v2x.tests@default:false"/> <setEntry value="ch.elexis.core.hl7.v2x@default:default"/> <setEntry value="ch.elexis.core.jcifs.test@default:false"/> <setEntry value="ch.elexis.core.jcifs@default:default"/> <setEntry value="ch.elexis.core.jpa.datasource@default:default"/> <setEntry value="ch.elexis.core.jpa.entities.test@default:false"/> <setEntry value="ch.elexis.core.jpa.entities@3:true"/> <setEntry value="ch.elexis.core.jpa.logging.slf4j@default:false"/> <setEntry value="ch.elexis.core.jpa.test@default:false"/> <setEntry value="ch.elexis.core.jpa@default:true"/> <setEntry value="ch.elexis.core.l10n@default:default"/> <setEntry value="ch.elexis.core.logback.rocketchat@default:default"/> <setEntry value="ch.elexis.core.logging.default_configuration@default:false"/> <setEntry value="ch.elexis.core.model.test@default:false"/> <setEntry value="ch.elexis.core.model@default:default"/> <setEntry value="ch.elexis.core.services.test@default:false"/> <setEntry value="ch.elexis.core.services@default:default"/> <setEntry value="ch.elexis.core.test.context@default:false"/> <setEntry value="ch.elexis.core.test@default:default"/> <setEntry value="ch.elexis.core@default:default"/> <setEntry value="ch.rgw.utility.tests@default:false"/> <setEntry value="ch.rgw.utility@default:default"/> <setEntry value="jaxb-api-impl-import-java9@default:default"/> </setAttribute> <booleanAttribute key="show_selected_only" value="false"/> <booleanAttribute key="tracing" value="false"/> <booleanAttribute key="useCustomFeatures" value="false"/> Loading
tests/ch.elexis.core.hl7.v2x.tests/rsc/LabCube/9885_LabCube_CelltacMEK6500_20191128093117_034358.hl7 0 → 100644 +1 −0 Original line number Diff line number Diff line MSH|^~\&|LabCube|CelltacMEK6500|||20191128093117||OUL^R22^OUL_R22|20191128093117034358|P|2.5.1||||NE||8859/1|en|| PID|1|9885|9885|||||U||||||||U|||||||||||||||||||||| SPM|1||||||||||P|||||||||||||||||| SAC||||||||U|||||||||||||||||||||||||||||||||||| INV||OK|||||||||||||||||| ORC|RE||||||||20191127093117|||||||||||||||||||||| OBR|1||||||20191127093117|||||||||||||||20191128093117|||||||||||||||||||||||||||| OBX|1|NM|WBC^Leukozyten||10|G/l|3-9.6|HH|||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|2|NM|LY%^Lymphozyten||37.4|%|19-48||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|3|NM|MO%^Monozyten||2.2|%|3.4-17.5|LL|||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|4|NM|GR%^Granulozyten||60.4|%|40-74||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|5|NM|LY^Lymphozyten||3.7|G/l|1.5-4||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|6|NM|MO^Monozyten||0.2|G/l|0.1-1.8||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|7|NM|GR^Granulozyten||6.1|G/l|1.4-8||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|8|NM|RBC^Erythrozyten||4.82|T/l|3.9-5.7||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|9|NM|HGB^Hmoglobin||15.3|g/l|11.7-17||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|10|NM|HCT^Hmatokrit||43.3|%|35-50||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|11|NM|MCV^MCV||89.8|fl|80-100||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|12|NM|MCH^MCH||31.7|pg|26-34||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|13|NM|MCHC^MCHC||35.3|g/l|31-36||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|14|NM|RDW-CV^RDW-CV||11.5|%|0-16||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|15|NM|PLT^Thrombozyten||325|G/l|143-400||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|16|NM|PCT^Thrombokrit||0.25|%|0.1-0.5||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|17|NM|MPV^Mittleres Thrombozytenvolumen||7.6|fl|6-13||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| OBX|18|NM|PDW^Thrombozyten-Verteilungsbreite||16|%|6-18||||F|||20191127093117||||MEK6500^Celltac^^|20191127093117|||||| No newline at end of file
tests/ch.elexis.core.hl7.v2x.tests/src/ch/elexis/core/hl7/v2x/Test_SpecificImportFiles.java +29 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,35 @@ public class Test_SpecificImportFiles { assertEquals(LabResultStatus.FINAL, lrd.getResultStatus()); } @Test public void test_V251_OUL_R22_17300() throws IOException, ElexisException{ File importFile = new File(PlatformHelper.getBasePath("ch.elexis.core.hl7.v2x.tests"), "rsc/LabCube/9885_LabCube_CelltacMEK6500_20191128093117_034358.hl7"); List<HL7Reader> hl7Readers = HL7ReaderFactory.INSTANCE.getReader(importFile); assertNotNull(hl7Readers); assertEquals(1, hl7Readers.size()); HL7Reader reader = hl7Readers.get(0); assertEquals(HL7ReaderV251.class, reader.getClass()); ObservationMessage observationMsg = reader.readObservation(resolver, false); List<IValueType> observations = observationMsg.getObservations(); System.out.println("Observations [" + observations.size() + "]"); assertEquals(18, observations.size()); LabResultData lrd = (LabResultData) observations.get(3); assertEquals("Granulozyten", lrd.getName()); assertEquals("GR%", lrd.getCode()); assertEquals("60.4", lrd.getValue()); assertEquals("40-74", lrd.getRange()); assertTrue(lrd.isNumeric()); assertFalse(lrd.isPlainText()); assertEquals("%", lrd.getUnit()); assertEquals("", lrd.getComment()); assertEquals("", lrd.getGroup()); assertEquals(LabResultStatus.FINAL, lrd.getResultStatus()); } /** * @throws IOException * @throws ElexisException Loading