package ch.elexis.core.hl7.v2x; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import ch.elexis.core.data.util.PlatformHelper; import ch.elexis.core.exceptions.ElexisException; import ch.elexis.core.hl7.v2x.Test_HL7_Imports.DummyPatientResolver; import ch.elexis.core.model.IPatient; import ch.elexis.core.types.Gender; import ch.elexis.data.Patient; import ch.elexis.hl7.HL7Reader; import ch.elexis.hl7.HL7ReaderFactory; import ch.elexis.hl7.model.IValueType; import ch.elexis.hl7.model.LabResultData; import ch.elexis.hl7.model.ObservationMessage; import ch.rgw.tools.TimeTool; public class Test_HL7_v26_Imports { private static DummyPatientResolver resolver; @BeforeClass public static void setUpBeforeClass() throws Exception{ Patient dummyPatient = new Patient("Grissemann", "Christoph", "17.05.1966", Patient.MALE); resolver = new DummyPatientResolver(dummyPatient); } @Test public void testGetSender() throws ElexisException, IOException{ File[] files = loadv26Files(); assertNotSame(0, files.length); for (int i = 0; i < files.length; i++) { File file = files[i]; List<HL7Reader> hl7Readers = HL7ReaderFactory.INSTANCE.getReader(file); assertNotNull(hl7Readers); assertEquals(1, hl7Readers.size()); HL7Reader reader = hl7Readers.get(0); System.out.println("Version [" + reader.getVersion() + "]"); assertNotNull(reader.getSender()); System.out.println("Sender [" + reader.getSender() + "]"); } } @Test public void testGetPatient() throws ElexisException, IOException{ File[] files = loadv26Files(); assertNotSame(0, files.length); for (int i = 0; i < files.length; i++) { File file = files[i]; List<HL7Reader> hl7Readers = HL7ReaderFactory.INSTANCE.getReader(file); assertNotNull(hl7Readers); assertEquals(1, hl7Readers.size()); HL7Reader reader = hl7Readers.get(0); reader.readObservation(resolver, false); IPatient patient = reader.getPatient(); assertEquals("Grissemann", patient.getFamilyName()); assertTrue(patient.getDateOfBirth().isEqual(new TimeTool("17.05.1966"))); assertEquals(Gender.MALE, patient.getGender()); } } @Test public void testReadObservation() throws ElexisException, IOException{ File[] files = loadv26Files(); assertNotSame(0, files.length); for (int i = 0; i < files.length; i++) { File file = files[i]; System.out.println("TESTING Hl7 Observation of... " + file.getAbsolutePath()); List<HL7Reader> hl7Readers = HL7ReaderFactory.INSTANCE.getReader(file); assertNotNull(hl7Readers); assertEquals(1, hl7Readers.size()); HL7Reader reader = hl7Readers.get(0); ObservationMessage observationMsg = reader.readObservation(resolver, false); List<IValueType> observations = observationMsg.getObservations(); System.out.println("Observations [" + observations.size() + "]"); boolean valueFound = false; assertFalse(observations.isEmpty()); for (IValueType iValueType : observations) { if (iValueType instanceof LabResultData) { LabResultData data = (LabResultData) iValueType; if (data.isNumeric()) { assertNotNull(data.getCode()); } assertNotNull(data.getValue()); valueFound = true; } } assertTrue(valueFound); } } private File[] loadv26Files(){ File directory = new File(PlatformHelper.getBasePath("ch.elexis.core.hl7.v2x.tests"), "rsc/v26"); if (directory.exists() && directory.isDirectory()) { return directory.listFiles(); } return new File[] {}; } }