package ch.elexis.importer.div; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.util.Collections; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import ch.elexis.core.data.beans.ContactBean; import ch.elexis.core.importer.div.importers.HL7Parser; import ch.elexis.core.importer.div.importers.OverwriteAllImportHandler; import ch.elexis.core.model.IPatient; import ch.elexis.core.ui.importer.div.importers.DefaultLabContactResolver; import ch.elexis.core.ui.importer.div.importers.ImporterPatientResolver; import ch.elexis.core.ui.importer.div.importers.LabImportUtil; import ch.elexis.data.LabItem; import ch.elexis.data.Patient; import ch.elexis.data.Query; import ch.rgw.tools.Result; public class HL7InitLabItemTest { private static final String MY_TESTLAB = "myTestLab"; private static Path workDir = null; private HL7Parser hl7Parser; @Before public void setup() throws Exception{ removeExistingItems(); workDir = Helpers.copyRscToTempDirectory(); hl7Parser = new HL7Parser(MY_TESTLAB, new MaleFemalePatientResolver(), new LabImportUtil(), new OverwriteAllImportHandler(), new DefaultLabContactResolver(), false); } @After public void tearDown() throws Exception{ removeAllPatientsAndDependants(); if (workDir != null) { Helpers.removeTempDirectory(workDir); } } @Test public void testImportRefValues() throws IOException{ File hl7File = new File(workDir.toString(), "Viollier/Viollier_1.HL7"); Result<?> result = hl7Parser.importFile(hl7File, null, true); if (result.isOK()) { assertTrue(true); // show import was successful } else { fail(); } result = hl7Parser.importFile(hl7File, null, true); if (result.isOK()) { assertTrue(true); // show import was successful } else { fail(); } Query<LabItem> itemQuery = new Query<>(LabItem.class); itemQuery.add(LabItem.TITLE, Query.EQUALS, "Calcium"); List<LabItem> items = itemQuery.execute(); assertEquals(1, items.size()); LabItem item = items.get(0); assertEquals("mmol/L", item.getEinheit()); assertEquals("2.20 - 2.65", item.getReferenceFemale()); assertEquals("2.20 - 2.65", item.getReferenceMale()); } static private void removeAllPatientsAndDependants(){ Query<Patient> qr = new Query<Patient>(Patient.class); List<Patient> qrr = qr.execute(); for (int j = 0; j < qrr.size(); j++) { qrr.get(j).delete(true); } } static private void removeExistingItems(){ Query<LabItem> qr = new Query<>(LabItem.class); List<LabItem> qrr = qr.execute(); for (int j = 0; j < qrr.size(); j++) { qrr.get(j).delete(); } } private class MaleFemalePatientResolver extends ImporterPatientResolver { private Patient female; private Patient male; private Patient last; public MaleFemalePatientResolver(){ female = new Patient("Test", "Female", "01.01.1999", Patient.FEMALE); male = new Patient("Test", "Male", "01.01.1999", Patient.MALE); } @Override public IPatient resolvePatient(String firstname, String lastname, String birthDate){ if (last == null || last == male) { last = female; return new ContactBean(female); } else { last = male; return new ContactBean(male); } } @Override public boolean matchPatient(IPatient patient, String firstname, String lastname, String birthDate){ return true; } @Override public List<? extends IPatient> getPatientById(String patid){ return Collections.singletonList(resolvePatient("", "", "")); } } }