/** * @see DosingInstructions#setDosingInstructions(DrugOrder) */ @Override public void setDosingInstructions(DrugOrder order) { order.setDosingType(this.getClass()); order.setDose(this.dose); order.setDoseUnits(this.doseUnits); order.setRoute(this.route); order.setFrequency(this.frequency); order.setDuration(this.duration); order.setDurationUnits(this.durationUnits); order.setAsNeeded(this.asNeeded); order.setAsNeededCondition(this.asNeededCondition); order.setDosingInstructions(this.administrationInstructions); }
@Test public void getAutoExpireDate_shouldNotInferAutoExpireDateWhenDurationUnitsDoesNotExist() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 10:00:00")); drugOrder.setDuration(1); drugOrder.setDurationUnits(null); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(null, autoExpireDate); }
@Test public void getAutoExpireDate_shouldNotInferAutoExpireDateWhenDurationDoesNotExist() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 10:00:00")); drugOrder.setDurationUnits(createUnits(Duration.SNOMED_CT_SECONDS_CODE)); drugOrder.setDuration(null); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(null, autoExpireDate); }
@Test public void getAutoExpireDate_shouldNotInferAutoExpireDateWhenConceptMappingOfSourceSNOMEDCTDurationDoesNotExist() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 10:00:00")); drugOrder.setDuration(30); drugOrder.setDurationUnits(createUnits("Other.Source", Duration.SNOMED_CT_HOURS_CODE, null)); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(null, autoExpireDate); }
/** * @see SimpleDosingInstructions#validate(DrugOrder, org.springframework.validation.Errors) */ @Test public void validate_shouldRejectADurationUnitWithAMappingOfAnInvalidType() { DrugOrder drugOrder = createValidDrugOrder(); drugOrder.setDuration(30); Concept durationUnitWithInvalidMapType = createUnits("SCT", Duration.SNOMED_CT_DAYS_CODE, "Some-uuid"); drugOrder.setDurationUnits(durationUnitWithInvalidMapType); Errors errors = new BindException(drugOrder, "drugOrder"); new SimpleDosingInstructions().validate(drugOrder, errors); assertEquals(true, errors.hasErrors()); } }
@Test public void getAutoExpireDate_shouldNotInferAutoExpireDateWhenDrugOrderHasOneOrMoreRefill() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 10:00:00")); drugOrder.setDuration(30); drugOrder.setDurationUnits(createUnits(Duration.SNOMED_CT_SECONDS_CODE)); drugOrder.setNumRefills(1); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(null, autoExpireDate); }
@Test public void getAutoExpireDate_shouldInferAutoExpireDateForAKnownSNOMEDCTDurationUnit() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 10:00:00")); drugOrder.setDuration(30); drugOrder.setDurationUnits(createUnits(Duration.SNOMED_CT_SECONDS_CODE)); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(createDateTime("2014-07-01 10:00:29"), autoExpireDate); }
/** * @see DrugOrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailValidationIfDurationUnitsIsNullWhenDurationIsPresent() { DrugOrder order = new DrugOrder(); order.setDosingType(FreeTextDosingInstructions.class); order.setDuration(20); order.setDurationUnits(null); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("durationUnits")); }
@Test public void getAutoExpireDate_shouldInferAutoExpireDateForScheduledDrugOrder() throws ParseException { DrugOrder drugOrder = new DrugOrder(); drugOrder.setDateActivated(createDateTime("2014-07-01 00:00:00")); drugOrder.setScheduledDate(createDateTime("2014-07-05 00:00:00")); drugOrder.setUrgency(Order.Urgency.ON_SCHEDULED_DATE); drugOrder.setDuration(10); drugOrder.setDurationUnits(createUnits(Duration.SNOMED_CT_DAYS_CODE)); Date autoExpireDate = new SimpleDosingInstructions().getAutoExpireDate(drugOrder); assertEquals(createDateTime("2014-07-14 23:59:59"), autoExpireDate); }
@Test public void validate_shouldPassValidationIfAutoExpireDateIsSetAndDurationUnitsIsNotMappedToSNOMEDCTDuration() throws ParseException { DrugOrder drugOrder = createValidDrugOrder(); drugOrder.setDuration(30); Concept unMappedDurationUnits = new Concept(); drugOrder.setDurationUnits(unMappedDurationUnits); drugOrder.setAutoExpireDate(createDateTime("2014-07-01 10:00:00")); Errors errors = new BindException(drugOrder, "drugOrder"); new SimpleDosingInstructions().validate(drugOrder, errors); Assert.assertFalse(errors.hasErrors()); }
@Test public void validate_shouldFailValidationIfAutoExpireDateIsNotSetAndDurationUnitsIsNotMappedToSNOMEDCTDuration() { DrugOrder drugOrder = createValidDrugOrder(); drugOrder.setDuration(30); Concept unMappedDurationUnits = new Concept(); drugOrder.setDurationUnits(unMappedDurationUnits); drugOrder.setAutoExpireDate(null); Errors errors = new BindException(drugOrder, "drugOrder"); new SimpleDosingInstructions().validate(drugOrder, errors); Assert.assertTrue(errors.hasFieldErrors("durationUnits")); Assert.assertEquals("DrugOrder.error.durationUnitsNotMappedToSnomedCtDurationCode", errors.getFieldError( "durationUnits").getCode()); }
@Test public void saveOrder_shouldSetAutoExpireDateForReviseOrderWithSimpleDosingInstructions() { executeDataSet("org/openmrs/api/include/OrderServiceTest-drugOrderAutoExpireDate.xml"); DrugOrder originalOrder = (DrugOrder) orderService.getOrder(111); assertTrue(originalOrder.isActive()); DrugOrder revisedOrder = originalOrder.cloneForRevision(); revisedOrder.setOrderer(originalOrder.getOrderer()); revisedOrder.setEncounter(originalOrder.getEncounter()); revisedOrder.setNumRefills(0); revisedOrder.setAutoExpireDate(null); revisedOrder.setDuration(10); revisedOrder.setDurationUnits(conceptService.getConcept(1001)); orderService.saveOrder(revisedOrder, null); assertNotNull(revisedOrder.getAutoExpireDate()); }
/** * @see DrugOrderValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfDoseUnitsIsNotADoseUnitConcept() { Concept concept = Context.getConceptService().getConcept(3); assertThat(concept, not(isIn(Context.getOrderService().getDrugDosingUnits()))); DrugOrder order = new DrugOrder(); order.setDosingType(FreeTextDosingInstructions.class); order.setDuration(5); order.setDurationUnits(concept); order.setDose(1.0); order.setDoseUnits(concept); order.setQuantity(30.0); order.setQuantityUnits(concept); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("doseUnits")); }
/** * @see DrugOrderValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfDurationUnitsIsNotADurationUnitConcept() { Concept concept = Context.getConceptService().getConcept(3); assertThat(concept, not(isIn(Context.getOrderService().getDurationUnits()))); DrugOrder order = new DrugOrder(); order.setDosingType(FreeTextDosingInstructions.class); order.setDuration(5); order.setDurationUnits(concept); order.setDose(1.0); order.setDoseUnits(concept); order.setQuantity(30.0); order.setQuantityUnits(concept); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("durationUnits")); }
/** * @see DrugOrderValidator#validate(Object,Errors) */ @Test public void validate_shouldFailValidationIfQuantityUnitsItNotAQuantityUnitConcept() { Concept concept = Context.getConceptService().getConcept(3); assertThat(concept, not(isIn(Context.getOrderService().getDrugDispensingUnits()))); DrugOrder order = new DrugOrder(); order.setDosingType(FreeTextDosingInstructions.class); order.setDuration(5); order.setDurationUnits(concept); order.setDose(1.0); order.setDoseUnits(concept); order.setQuantity(30.0); order.setQuantityUnits(concept); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("quantityUnits")); }
/** * @see Order#cloneForRevisionHelper(Order) */ protected DrugOrder cloneForRevisionHelper(DrugOrder target) { super.cloneForRevisionHelper(target); target.setDose(getDose()); target.setDoseUnits(getDoseUnits()); target.setFrequency(getFrequency()); target.setAsNeeded(getAsNeeded()); target.setAsNeededCondition(getAsNeededCondition()); target.setQuantity(getQuantity()); target.setQuantityUnits(getQuantityUnits()); target.setDrug(getDrug()); target.setDosingType(getDosingType()); target.setDosingInstructions(getDosingInstructions()); target.setDuration(getDuration()); target.setDurationUnits(getDurationUnits()); target.setRoute(getRoute()); target.setNumRefills(getNumRefills()); target.setBrandName(getBrandName()); target.setDispenseAsWritten(getDispenseAsWritten()); target.setDrugNonCoded(getDrugNonCoded()); return target; }
/** * @see org.openmrs.Order#copyHelper(Order) */ protected DrugOrder copyHelper(DrugOrder target) { super.copyHelper(target); target.setDose(getDose()); target.setDoseUnits(getDoseUnits()); target.setFrequency(getFrequency()); target.setAsNeeded(getAsNeeded()); target.setAsNeededCondition(getAsNeededCondition()); target.setQuantity(getQuantity()); target.setQuantityUnits(getQuantityUnits()); target.setDrug(getDrug()); target.setDosingType(getDosingType()); target.setDosingInstructions(getDosingInstructions()); target.setDuration(getDuration()); target.setDurationUnits(getDurationUnits()); target.setNumRefills(getNumRefills()); target.setRoute(getRoute()); target.setBrandName(getBrandName()); target.setDispenseAsWritten(getDispenseAsWritten()); target.setDrugNonCoded(getDrugNonCoded()); return target; }
/** * @see DrugOrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailIfRouteIsNotAValidConcept() { Concept concept = Context.getConceptService().getConcept(3); assertThat(concept, not(isIn(Context.getOrderService().getDrugRoutes()))); DrugOrder order = new DrugOrder(); order.setDosingType(FreeTextDosingInstructions.class); order.setDuration(5); order.setDurationUnits(concept); order.setDose(1.0); order.setDoseUnits(concept); order.setQuantity(30.0); order.setQuantityUnits(concept); order.setRoute(concept); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); Assert.assertTrue(errors.hasFieldErrors("route")); Assert.assertEquals("DrugOrder.error.routeNotAmongAllowedConcepts", errors.getFieldError("route").getCode()); }
/** * @see DrugOrderValidator#validate(Object, org.springframework.validation.Errors) */ @Test public void validate_shouldFailIfDurationUnitsHasNoMappingToSNOMEDCTSource() { Patient patient = Context.getPatientService().getPatient(7); CareSetting careSetting = Context.getOrderService().getCareSetting(2); OrderType orderType = Context.getOrderService().getOrderTypeByName("Drug order"); //place drug order DrugOrder order = new DrugOrder(); Encounter encounter = Context.getEncounterService().getEncounter(3); order.setEncounter(encounter); ConceptService cs = Context.getConceptService(); order.setConcept(cs.getConcept(5497)); order.setPatient(patient); order.setCareSetting(careSetting); order.setOrderer(Context.getProviderService().getProvider(1)); order.setDateActivated(encounter.getEncounterDatetime()); order.setOrderType(orderType); order.setDosingType(FreeTextDosingInstructions.class); order.setInstructions("None"); order.setDosingInstructions("Test Instruction"); order.setDuration(20); order.setDurationUnits(cs.getConcept(28)); Errors errors = new BindException(order, "order"); new DrugOrderValidator().validate(order, errors); assertEquals("DrugOrder.error.durationUnitsNotMappedToSnomedCtDurationCode", errors.getFieldError("durationUnits") .getCode()); }
@Test public void saveOrder_shouldSetAutoExpireDateOfDrugOrderIfAutoExpireDateIsNotSet() throws ParseException { executeDataSet("org/openmrs/api/include/OrderServiceTest-drugOrderAutoExpireDate.xml"); Drug drug = conceptService.getDrug(3000); DrugOrder drugOrder = new DrugOrder(); Encounter encounter = encounterService.getEncounter(3); drugOrder.setEncounter(encounter); drugOrder.setPatient(patientService.getPatient(7)); drugOrder.setCareSetting(orderService.getCareSetting(1)); drugOrder.setOrderer(Context.getProviderService().getProvider(1)); drugOrder.setDrug(drug); drugOrder.setDosingType(SimpleDosingInstructions.class); drugOrder.setDose(300.0); drugOrder.setDoseUnits(conceptService.getConcept(50)); drugOrder.setQuantity(20.0); drugOrder.setQuantityUnits(conceptService.getConcept(51)); drugOrder.setFrequency(orderService.getOrderFrequency(3)); drugOrder.setRoute(conceptService.getConcept(22)); drugOrder.setNumRefills(0); drugOrder.setOrderType(null); drugOrder.setDateActivated(TestUtil.createDateTime("2014-08-03")); drugOrder.setDuration(20);// 20 days drugOrder.setDurationUnits(conceptService.getConcept(1001)); Order savedOrder = orderService.saveOrder(drugOrder, null); Order loadedOrder = orderService.getOrder(savedOrder.getId()); Assert.assertEquals(TestUtil.createDateTime("2014-08-22 23:59:59"), loadedOrder.getAutoExpireDate()); }