package ch.elexis.core.findings;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.time.LocalDateTime;
import java.time.Month;
import java.util.Collections;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import ch.elexis.core.findings.test.AllTests;
public class ProcedureRequestTest {
@Before
public void beforeTest() {
AllTests.deleteAllFindings();
List<IFinding> findings = FindingsServiceComponent.getService().getPatientsFindings(AllTests.PATIENT_ID,
IFinding.class);
assertTrue(findings.isEmpty());
}
@Test
public void manyProcedureRequests() {
IFindingsFactory factory = FindingsServiceComponent.getService().getFindingsFactory();
assertNotNull(factory);
IEncounter encounter = factory.createEncounter();
assertNotNull(encounter);
encounter.setConsultationId(AllTests.CONSULTATION_ID);
encounter.setPatientId(AllTests.PATIENT_ID);
encounter.setStartTime(LocalDateTime.of(2016, Month.DECEMBER, 29, 9, 56));
FindingsServiceComponent.getService().saveFinding(encounter);
// create many
for (int i = 0; i < 1000; i++) {
IProcedureRequest procedureRequest = factory.createProcedureRequest();
assertNotNull(procedureRequest);
// set the properties
procedureRequest.setPatientId(AllTests.PATIENT_ID);
procedureRequest.setText("ProcedureRequest " + i);
procedureRequest.setEncounter(encounter);
FindingsServiceComponent.getService().saveFinding(procedureRequest);
}
// test many
List<IFinding> findings = FindingsServiceComponent.getService().getPatientsFindings(AllTests.PATIENT_ID,
IProcedureRequest.class);
assertEquals(1000, findings.size());
for (IFinding iFinding : findings) {
assertTrue(iFinding instanceof IProcedureRequest);
assertEquals(((IProcedureRequest) iFinding).getEncounter().get().getId(), encounter.getId());
}
}
@Test
public void getProperties() {
IFindingsFactory factory = FindingsServiceComponent.getService().getFindingsFactory();
assertNotNull(factory);
IEncounter encounter = factory.createEncounter();
assertNotNull(encounter);
encounter.setConsultationId(AllTests.CONSULTATION_ID);
encounter.setPatientId(AllTests.PATIENT_ID);
encounter.setStartTime(LocalDateTime.of(2016, Month.DECEMBER, 29, 9, 56));
FindingsServiceComponent.getService().saveFinding(encounter);
IProcedureRequest procedureRequest = factory.createProcedureRequest();
assertNotNull(procedureRequest);
// set the properties
procedureRequest.setPatientId(AllTests.PATIENT_ID);
procedureRequest.setEncounter(encounter);
LocalDateTime scheduledTime = LocalDateTime.of(2016, Month.JANUARY, 01, 0, 1);
procedureRequest.setScheduledTime(scheduledTime);
ICoding code = new ICoding() {
@Override
public String getSystem() {
return "testSystem";
}
@Override
public String getDisplay() {
return "test display";
}
@Override
public String getCode() {
return "test";
}
};
procedureRequest.setCoding(Collections.singletonList(code));
FindingsServiceComponent.getService().saveFinding(procedureRequest);
List<IFinding> procedureRequests = FindingsServiceComponent.getService()
.getConsultationsFindings(encounter.getConsultationId(),
IProcedureRequest.class);
assertNotNull(procedureRequests);
assertFalse(procedureRequests.isEmpty());
assertEquals(1, procedureRequests.size());
// read procedure request and test the properties
IProcedureRequest readProcedureRequest = (IProcedureRequest) procedureRequests.get(0);
assertEquals(AllTests.PATIENT_ID, readProcedureRequest.getPatientId());
assertTrue(readProcedureRequest.getScheduledTime().isPresent());
assertEquals(LocalDateTime.of(2016, Month.JANUARY, 01, 0, 1), readProcedureRequest.getScheduledTime().get());
List<ICoding> coding = readProcedureRequest.getCoding();
assertNotNull(coding);
assertFalse(coding.isEmpty());
assertEquals(coding.get(0).getDisplay(), "test display");
}
}