@Override public EncounterTransaction.DrugOrder mapDrugOrder(DrugOrder openMRSDrugOrder) { EncounterTransaction.DrugOrder drugOrder = new EncounterTransaction.DrugOrder(); drugOrder.setUuid(openMRSDrugOrder.getUuid()); if (openMRSDrugOrder.getCareSetting() != null) { drugOrder.setCareSetting( CareSettingType.valueOf( openMRSDrugOrder.getCareSetting().getCareSettingType().toString())); } drugOrder.setAction(openMRSDrugOrder.getAction().name()); drugOrder.setOrderType(openMRSDrugOrder.getOrderType().getName()); org.openmrs.Order previousOrder = openMRSDrugOrder.getPreviousOrder(); if (previousOrder != null && StringUtils.isNotBlank(previousOrder.getUuid())) { drugOrder.setPreviousOrderUuid(previousOrder.getUuid()); } EncounterTransaction.Drug encounterTransactionDrug = new DrugMapper1_11().map(openMRSDrugOrder.getDrug()); drugOrder.setDrug(encounterTransactionDrug); drugOrder.setDosingInstructionType(openMRSDrugOrder.getDosingType().getName()); drugOrder.setDuration(openMRSDrugOrder.getDuration()); drugOrder.setDurationUnits(getConceptName(openMRSDrugOrder.getDurationUnits())); drugOrder.setScheduledDate(openMRSDrugOrder.getScheduledDate()); drugOrder.setDateActivated(openMRSDrugOrder.getDateActivated()); drugOrder.setEffectiveStartDate(openMRSDrugOrder.getEffectiveStartDate()); drugOrder.setAutoExpireDate(openMRSDrugOrder.getAutoExpireDate()); drugOrder.setEffectiveStopDate(openMRSDrugOrder.getEffectiveStopDate()); drugOrder.setDateStopped(openMRSDrugOrder.getDateStopped()); EncounterTransaction.DosingInstructions dosingInstructions = new EncounterTransaction.DosingInstructions(); dosingInstructions.setDose(openMRSDrugOrder.getDose()); dosingInstructions.setDoseUnits(getConceptName(openMRSDrugOrder.getDoseUnits())); dosingInstructions.setRoute(getConceptName(openMRSDrugOrder.getRoute())); dosingInstructions.setAsNeeded(openMRSDrugOrder.getAsNeeded()); if (openMRSDrugOrder.getFrequency() != null) { dosingInstructions.setFrequency(openMRSDrugOrder.getFrequency().getName()); } if (openMRSDrugOrder.getQuantity() != null) { dosingInstructions.setQuantity(openMRSDrugOrder.getQuantity()); } dosingInstructions.setQuantityUnits(getConceptName(openMRSDrugOrder.getQuantityUnits())); dosingInstructions.setAdministrationInstructions(openMRSDrugOrder.getDosingInstructions()); drugOrder.setDosingInstructions(dosingInstructions); drugOrder.setInstructions(openMRSDrugOrder.getInstructions()); drugOrder.setCommentToFulfiller(openMRSDrugOrder.getCommentToFulfiller()); drugOrder.setVoided(openMRSDrugOrder.getVoided()); drugOrder.setVoidReason(openMRSDrugOrder.getVoidReason()); drugOrder.setOrderNumber(openMRSDrugOrder.getOrderNumber()); return drugOrder; }
private static boolean regimenComponentIsTheSameAsDrugOrderExcludingDates( DrugOrder rc, DrugOrder doTmp) { if (rc.getDrug() != null && doTmp.getDrug() != null && rc.getDrug().getDrugId().intValue() != doTmp.getDrug().getDrugId().intValue()) return false; if (!OpenmrsUtil.nullSafeEquals(rc.getConcept(), doTmp.getConcept())) return false; if (!OpenmrsUtil.nullSafeEquals(rc.getDose(), doTmp.getDose())) return false; if (!OpenmrsUtil.nullSafeEquals(rc.getFrequency(), doTmp.getFrequency())) return false; if (!OpenmrsUtil.nullSafeEquals(rc.getUnits(), doTmp.getUnits())) return false; return true; }
@Test public void shouldAddNewDrugOrderWhenPrnIsTrueWIthNoDosageFrequencyOrDosageInstruction() { EncounterTransaction.DrugOrder drugOrder = new DrugOrderBuilder() .withBasicValues("drug-uuid", "test-concept-uuid", today, today, 3, "", "") .withPrn(true) .build(); Concept drugConcept = new Concept(3); OrderType drugOrderType = new OrderType("Drug Order", "this is a drug order type"); when(orderService.getAllOrderTypes()).thenReturn(asList(drugOrderType)); when(conceptService.getConceptByUuid("test-concept-uuid")).thenReturn(drugConcept); Drug drug = new Drug(); drug.setName("test drug"); when(conceptService.getDrugByUuid("drug-uuid")).thenReturn(drug); encounterDrugOrderServiceHelper.update(encounter, asList(drugOrder)); assertThat(encounter.getOrders().size(), is(1)); org.openmrs.DrugOrder order = (org.openmrs.DrugOrder) encounter.getOrders().iterator().next(); assertEquals(drugConcept, order.getConcept()); assertEquals(drugOrderType, order.getOrderType()); assertEquals(patient, order.getPatient()); assertEquals(encounter, order.getEncounter()); assertEquals(today, order.getStartDate()); assertEquals(today, order.getAutoExpireDate()); assertEquals(drug.getDisplayName(), order.getDrug().getDisplayName()); assertEquals(Double.valueOf(3), order.getDose()); assertEquals(true, order.getPrn()); assertEquals(null, order.getFrequency()); assertEquals(null, order.getUnits()); }
@Test public void shouldAddNewDrugOrder() throws Exception { executeDataSet("shouldAddNewDrugOrder.xml"); String json = "{ \"patientUuid\" : \"a76e8d23-0c38-408c-b2a8-ea5540f01b51\", " + "\"visitTypeUuid\" : \"b45ca846-c79a-11e2-b0c0-8e397087571c\", " + "\"encounterTypeUuid\": \"2b377dba-62c3-4e53-91ef-b51c68899890\", " + "\"encounterDateTime\" : \"2005-01-02T00:00:00.000+0000\", " + "\"testOrders\":[" + "{\"concept\":{ \"uuid\": \"d102c80f-1yz9-4da3-bb88-8122ce8868dd\"}, " + "\"instructions\":\"do it\", \"orderTypeUuid\": \"1a61ef2a-250c-11e3-b832-0800271c1b75\" }]," + "\"drugOrders\":[" + "{\"uuid\": \"4d6fb6e0-4950-426c-9a9b-1f97e6037893\"," + "\"concept\": {\"uuid\": \"29dc4a20-507f-40ed-9545-d47e932483fa\"}," + "\"notes\": \"Take as needed\"," + "\"startDate\": \"2013-09-30T09:26:09.717Z\"," + "\"endDate\": \"2013-10-02T09:26:09.717Z\"," + "\"numberPerDosage\": 1," + "\"dosageInstruction\": {\"uuid\": \"632aa422-2696-11e3-895c-0800271c1b75\"}," + "\"dosageFrequency\": {\"uuid\": \"6302096d-2696-11e3-895c-0800271c1b75\"}," + "\"prn\": true}" + "]}"; EncounterTransaction response = deserialize( handle(newPostRequest("/rest/emrapi/encounter", json)), EncounterTransaction.class); Visit visit = visitService.getVisitByUuid(response.getVisitUuid()); Encounter encounter = visit.getEncounters().iterator().next(); assertEquals(2, encounter.getOrders().size()); List<Order> orders = new ArrayList<Order>(encounter.getOrders()); List<DrugOrder> drugOrders = getOrdersOfType(orders, DrugOrder.class); assertEquals(1, drugOrders.size()); DrugOrder drugOrder = drugOrders.get(0); assertEquals("a76e8d23-0c38-408c-b2a8-ea5540f01b51", drugOrder.getPatient().getUuid()); assertEquals("f13d6fae-baa9-4553-955d-920098bec08f", drugOrder.getEncounter().getUuid()); assertEquals("29dc4a20-507f-40ed-9545-d47e932483fa", drugOrder.getConcept().getUuid()); assertEquals("1a61ef2a-250c-11e3-b832-9876541c1b75", drugOrder.getOrderType().getUuid()); assertEquals("Take as needed", drugOrder.getInstructions()); assertEquals(new DateTime("2013-09-30T09:26:09.717Z").toDate(), drugOrder.getStartDate()); assertEquals(new DateTime("2013-10-02T09:26:09.717Z").toDate(), drugOrder.getAutoExpireDate()); assertEquals("6302096d-2696-11e3-895c-0800271c1b75", drugOrder.getFrequency()); assertEquals("632aa422-2696-11e3-895c-0800271c1b75", drugOrder.getUnits()); assertEquals("test drug", drugOrder.getDrug().getDisplayName()); assertEquals(Double.valueOf(1), drugOrder.getDose()); assertEquals(true, drugOrder.getPrn()); List<TestOrder> testOrders = getOrdersOfType(orders, TestOrder.class); assertEquals(1, testOrders.size()); TestOrder testOrder = testOrders.get(0); assertEquals("d102c80f-1yz9-4da3-bb88-8122ce8868dd", testOrder.getConcept().getUuid()); assertEquals("a76e8d23-0c38-408c-b2a8-ea5540f01b51", testOrder.getPatient().getUuid()); assertEquals("f13d6fae-baa9-4553-955d-920098bec08f", testOrder.getEncounter().getUuid()); assertEquals("1a61ef2a-250c-11e3-b832-0800271c1b75", testOrder.getOrderType().getUuid()); assertEquals("do it", testOrder.getInstructions()); }
@Override public Date getAutoExpireDate(DrugOrder drugOrder) { return DrugOrderUtil.calculateAutoExpireDate( drugOrder.getDuration(), drugOrder.getDurationUnits(), drugOrder.getNumRefills(), drugOrder.getEffectiveStartDate(), drugOrder.getFrequency()); }