diff --git a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImpl.java b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImpl.java index e3b37ebd9..7cd0f9894 100644 --- a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImpl.java +++ b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImpl.java @@ -26,12 +26,12 @@ import org.openmrs.module.fhir2.FhirConstants; import org.openmrs.module.fhir2.api.translators.EncounterLocationTranslator; import org.openmrs.module.fhir2.api.translators.EncounterParticipantTranslator; +import org.openmrs.module.fhir2.api.translators.EncounterPeriodTranslator; import org.openmrs.module.fhir2.api.translators.EncounterReferenceTranslator; import org.openmrs.module.fhir2.api.translators.EncounterTranslator; import org.openmrs.module.fhir2.api.translators.EncounterTypeTranslator; import org.openmrs.module.fhir2.api.translators.PatientReferenceTranslator; import org.openmrs.module.fhir2.api.translators.ProvenanceTranslator; -import org.openmrs.module.fhir2.api.translators.EncounterPeriodTranslator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -59,7 +59,7 @@ public class EncounterTranslatorImpl extends BaseEncounterTranslator implements @Autowired private EncounterPeriodTranslator encounterPeriodTranslator; - + @Override public Encounter toFhirResource(@Nonnull org.openmrs.Encounter openMrsEncounter) { notNull(openMrsEncounter, "The Openmrs Encounter object should not be null"); @@ -82,7 +82,7 @@ public Encounter toFhirResource(@Nonnull org.openmrs.Encounter openMrsEncounter) } encounter.setPeriod(encounterPeriodTranslator.toFhirResource(openMrsEncounter.getEncounterDatetime())); - + encounter.getMeta().addTag(FhirConstants.OPENMRS_FHIR_EXT_ENCOUNTER_TAG, "encounter", "Encounter"); encounter.getMeta().setLastUpdated(openMrsEncounter.getDateChanged()); encounter.addContained(provenanceTranslator.getCreateProvenance(openMrsEncounter)); @@ -121,7 +121,7 @@ public org.openmrs.Encounter toOpenmrsType(@Nonnull org.openmrs.Encounter existi existingEncounter.setVisit(visitReferenceTranlator.toOpenmrsType(encounter.getPartOf())); existingEncounter.setEncounterDatetime(encounterPeriodTranslator.toOpenmrsType(encounter.getPeriod())); - + return existingEncounter; } } diff --git a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImpl.java b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImpl.java index 0e6bfbefc..ee6644474 100644 --- a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImpl.java +++ b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImpl.java @@ -53,7 +53,7 @@ public class VisitTranslatorImpl extends BaseEncounterTranslator implements Enco @Autowired private VisitPeriodTranslator visitPeriodTranslator; - + @Override public Encounter toFhirResource(@Nonnull Visit visit) { notNull(visit, "The OpenMrs Visit object should not be null"); @@ -67,12 +67,12 @@ public Encounter toFhirResource(@Nonnull Visit visit) { if (visit.getLocation() != null) { encounterLocationTranslator.toFhirResource(visit.getLocation()); } - + encounter.setClass_(mapLocationToClass(visit.getLocation())); - + encounter.setPeriod( visitPeriodTranslator.toFhirResource(new ImmutablePair(visit.getStartDatetime(), visit.getStopDatetime()))); - + encounter.getMeta().addTag(FhirConstants.OPENMRS_FHIR_EXT_ENCOUNTER_TAG, "visit", "Visit"); encounter.getMeta().setLastUpdated(visit.getDateChanged()); encounter.addContained(provenanceTranslator.getCreateProvenance(visit)); @@ -105,7 +105,7 @@ public Visit toOpenmrsType(@Nonnull Visit existingVisit, @Nonnull Encounter enco if (translatedPeriod != null && translatedPeriod.getValue() != null) { existingVisit.setStopDatetime(translatedPeriod.getValue()); } - + existingVisit.setPatient(patientReferenceTranslator.toOpenmrsType(encounter.getSubject())); existingVisit.setLocation(encounterLocationTranslator.toOpenmrsType(encounter.getLocationFirstRep())); diff --git a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImplTest.java b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImplTest.java index a468ce870..30fbcc645 100644 --- a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImplTest.java +++ b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/EncounterTranslatorImplTest.java @@ -25,6 +25,7 @@ import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Encounter; import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.Period; import org.hl7.fhir.r4.model.Provenance; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.Resource; @@ -105,7 +106,7 @@ public class EncounterTranslatorImplTest { @Mock private EncounterPeriodTranslator encounterPeriodTranslator; - + @Mock private EncounterClassMap encounterClassMap; @@ -134,7 +135,7 @@ public void setUp() { encounterTranslator.setVisitReferenceTranlator(visitReferenceTranslator); encounterTranslator.setEncounterTypeTranslator(encounterTypeTranslator); encounterTranslator.setEncounterPeriodTranslator(encounterPeriodTranslator); - + PatientIdentifier identifier = new PatientIdentifier(); identifier.setIdentifier(PATIENT_IDENTIFIER); @@ -361,18 +362,18 @@ public void toOpenMrsType_shouldTranslateTypeToEncounterType() { public void toOpenMrsType_shouldTranslatePeriodToEncounterDatetime() { Date encounterDate = new java.util.Date(); Period period = new Period(); - + fhirEncounter.setPeriod(period); - + when(encounterPeriodTranslator.toOpenmrsType(period)).thenReturn(encounterDate); when(patientReferenceTranslator.toOpenmrsType(patientRef)).thenReturn(patient); - + org.openmrs.Encounter result = encounterTranslator.toOpenmrsType(fhirEncounter); - + assertThat(result, notNullValue()); assertThat(result.getEncounterDatetime(), equalTo(encounterDate)); } - + @Test public void toFhirResource_shouldTranslateToPartOf() { Visit visit = new Visit(); @@ -483,31 +484,31 @@ public void toFhirResource_shouldTranslateEncounterTypeToEncounterTypeField() { assertThat(result.getType(), not(empty())); assertThat(result.getTypeFirstRep(), equalTo(fhirEncounterType)); } - + @Test public void toFhirResource_shouldHaveEncounterTag() { Encounter result = encounterTranslator.toFhirResource(omrsEncounter); - + assertThat(result, notNullValue()); assertThat(result.getMeta().getTag(), notNullValue()); assertThat(result.getMeta().getTag().get(0).getSystem(), equalTo(FhirConstants.OPENMRS_FHIR_EXT_ENCOUNTER_TAG)); assertThat(result.getMeta().getTag().get(0).getCode(), equalTo(TYPE_CODE)); assertThat(result.getMeta().getTag().get(0).getDisplay(), equalTo(TYPE_DISPLAY)); } - + @Test public void toFhirResource_shouldTranslateEncounterDatetimeToPeriod() { Date encounterDate = new java.util.Date(); Period period = new Period(); - + omrsEncounter.setEncounterDatetime(encounterDate); - + period.setStart(encounterDate); - + when(encounterPeriodTranslator.toFhirResource(encounterDate)).thenReturn(period); - + Encounter result = encounterTranslator.toFhirResource(omrsEncounter); - + assertThat(result, notNullValue()); assertThat(result.getPeriod(), equalTo(period)); } diff --git a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImplTest.java b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImplTest.java index 40d90e2a8..b4be85362 100644 --- a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImplTest.java +++ b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/VisitTranslatorImplTest.java @@ -15,6 +15,7 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; +import static org.hamcrest.Matchers.nullValue; import static org.mockito.Mockito.when; import java.text.SimpleDateFormat; @@ -29,6 +30,7 @@ import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Encounter; import org.hl7.fhir.r4.model.IdType; +import org.hl7.fhir.r4.model.Period; import org.hl7.fhir.r4.model.Provenance; import org.hl7.fhir.r4.model.Reference; import org.hl7.fhir.r4.model.Resource; @@ -89,14 +91,14 @@ public class VisitTranslatorImplTest { @Mock private VisitPeriodTranslatorImpl visitPeriodTranslator; - + @Mock private EncounterClassMap encounterClassMap; private VisitTranslatorImpl visitTranslator; private Date periodStart, periodEnd; - + @SneakyThrows @Before public void setup() { @@ -107,7 +109,7 @@ public void setup() { visitTranslator.setEncounterClassMap(encounterClassMap); visitTranslator.setVisitTypeTranslator(visitTypeTranslator); visitTranslator.setVisitPeriodTranslator(visitPeriodTranslator); - + periodStart = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse("10-Jan-2019 10:11:00"); periodEnd = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss").parse("10-Jan-2019 11:00:00"); } @@ -144,41 +146,41 @@ public void toOpenmrsType_shouldConvertIdToUuid() { @Test public void toOpenmrsType_shouldConvertPeriodToStartStopDatetime() { Encounter encounter = new Encounter(); - + Period period = new Period(); period.setStart(periodStart); period.setEnd(periodEnd); encounter.setPeriod(period); - + ImmutablePair pair = new ImmutablePair(periodStart, periodEnd); - + when(visitPeriodTranslator.toOpenmrsType(period)).thenReturn(pair); - + Visit result = visitTranslator.toOpenmrsType(new Visit(), encounter); - + assertThat(result, notNullValue()); assertThat(result.getStartDatetime(), equalTo(periodStart)); assertThat(result.getStopDatetime(), equalTo(periodEnd)); } - + @Test public void toOpenmrsType_shouldConvertPeriodWithNullValues() { Encounter encounter = new Encounter(); - + Period period = new Period(); encounter.setPeriod(period); - + ImmutablePair pair = new ImmutablePair(null, null); - + when(visitPeriodTranslator.toOpenmrsType(period)).thenReturn(pair); - + Visit result = visitTranslator.toOpenmrsType(new Visit(), encounter); - + assertThat(result, notNullValue()); assertThat(result.getStartDatetime(), nullValue()); assertThat(result.getStopDatetime(), nullValue()); } - + @Test(expected = NullPointerException.class) public void toFhirResource_shouldThrowExceptionWhenVisitIsNull() { visitTranslator.toFhirResource(null); @@ -341,37 +343,37 @@ public void toFhirResource_shouldTranslateTypeToEncounterType() { assertThat(result.getType(), not(empty())); assertThat(result.getTypeFirstRep(), equalTo(codeableConcept)); } - + @Test public void toFhirResource_shouldHaveEncounterTag() { Visit visit = new Visit(); visit.setUuid(VISIT_UUID); - + Encounter result = visitTranslator.toFhirResource(visit); - + assertThat(result, notNullValue()); assertThat(result.getMeta().getTag(), notNullValue()); assertThat(result.getMeta().getTag().get(0).getSystem(), equalTo(FhirConstants.OPENMRS_FHIR_EXT_ENCOUNTER_TAG)); assertThat(result.getMeta().getTag().get(0).getCode(), equalTo(TYPE_CODE)); assertThat(result.getMeta().getTag().get(0).getDisplay(), equalTo(TYPE_DISPLAY)); } - + @Test public void toFhirResource_shouldTranslateDateStartedStoppedToPeriod() { Visit visit = new Visit(); visit.setUuid(VISIT_UUID); - + Period period = new Period(); period.setStart(periodStart); period.setEnd(periodEnd); - + visit.setStartDatetime(periodStart); visit.setStartDatetime(periodEnd); - + when(visitPeriodTranslator.toFhirResource(ArgumentMatchers.any())).thenReturn(period); - + Encounter result = visitTranslator.toFhirResource(visit); - + assertThat(result, notNullValue()); assertThat(result.getPeriod().getStart(), equalTo(periodStart)); assertThat(result.getPeriod().getEnd(), equalTo(periodEnd));