From 6e9baf575445d431b4f43d812446adfd527ea5a7 Mon Sep 17 00:00:00 2001 From: Herman Muhereza Date: Fri, 23 Feb 2024 01:00:46 +0300 Subject: [PATCH] FM2-632: Medication Request should return Null when Drug Order has dose units but no dose (#535) --- .../impl/DosageTranslatorImpl.java | 4 ++-- .../impl/DosageTranslatorImplTest.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImpl.java b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImpl.java index 453c489242..37a1481435 100644 --- a/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImpl.java +++ b/api/src/main/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImpl.java @@ -51,7 +51,7 @@ public Dosage toFhirResource(@Nonnull DrugOrder drugOrder) { dosage.setRoute(conceptTranslator.toFhirResource(drugOrder.getRoute())); dosage.setTiming(timingTranslator.toFhirResource(drugOrder)); - if (drugOrder.getDose() != null || drugOrder.getDoseUnits() != null) { + if (drugOrder.getDose() != null) { Dosage.DosageDoseAndRateComponent doseAndRate = new Dosage.DosageDoseAndRateComponent(); Quantity dose = new SimpleQuantity(); dose.setValue(drugOrder.getDose()); @@ -66,7 +66,7 @@ public Dosage toFhirResource(@Nonnull DrugOrder drugOrder) { doseAndRate.setDose(dose); dosage.addDoseAndRate(doseAndRate); } - + return dosage; } diff --git a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImplTest.java b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImplTest.java index 12fa41c499..b5e80bf7db 100644 --- a/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImplTest.java +++ b/api/src/test/java/org/openmrs/module/fhir2/api/translators/impl/DosageTranslatorImplTest.java @@ -14,12 +14,17 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; +import static org.hl7.fhir.r4.utils.client.FHIRToolingClient.DATE_FORMAT; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; +import java.text.ParseException; import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; import java.util.Locale; +import org.apache.commons.lang3.time.DateUtils; import org.hl7.fhir.r4.model.BooleanType; import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Coding; @@ -211,6 +216,23 @@ public void toFhirResource_shouldTranslateDrugOrderDoseToDoseQuantity() { assertThat(result.getDoseAndRate().get(0).getDoseQuantity().getCode(), is(CONCEPT_UUID)); } + @Test + public void toFhirResource_shouldReturnDosageWhenSubmittingDrugOrderWithDoseUnitButNoDose() throws ParseException { + Concept mg = new Concept(); + mg.addName(new ConceptName("mg", Locale.ENGLISH)); + mg.setUuid(CONCEPT_UUID); + + drugOrder.setDose(null); + drugOrder.setDoseUnits(mg); + drugOrder.setAsNeeded(Boolean.TRUE); + drugOrder.setDosingInstructions(DOSING_INSTRUCTION); + Dosage result = dosageTranslator.toFhirResource(drugOrder); + + assertThat(result, notNullValue()); + assertThat(result.getAsNeededBooleanType().booleanValue(), is(true)); + assertThat(result.getText(), equalTo(DOSING_INSTRUCTION)); + } + @Test public void toFhirResource_shouldTranslateDrugOrderDoseToDoseQuantityPreferringRxNormIfPresent() { ConceptMapType sameAs = new ConceptMapType();