/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.api.builder; import java.util.Date; import org.openmrs.DosingInstructions; import org.openmrs.DrugOrder; import org.openmrs.Order; import org.openmrs.api.ConceptService; import org.openmrs.api.EncounterService; import org.openmrs.api.OrderService; import org.openmrs.api.PatientService; import org.openmrs.api.context.Context; public class DrugOrderBuilder { private final DrugOrder drugOrder; private final PatientService patientService; private final OrderService orderService; private final EncounterService encounterService; private final ConceptService conceptService; public DrugOrderBuilder() { patientService = Context.getPatientService(); conceptService = Context.getConceptService(); orderService = Context.getOrderService(); encounterService = Context.getEncounterService(); drugOrder = new DrugOrder(); } public DrugOrder build() { return drugOrder; } public DrugOrderBuilder withDrug(Integer drugID) { drugOrder.setDrug(conceptService.getDrug(drugID)); return this; } public DrugOrderBuilder withAutoExpireDate(Date autoExpireDate) { drugOrder.setAutoExpireDate(autoExpireDate); return this; } public DrugOrderBuilder withDosingInstructions(String dosingInstructions) { drugOrder.setDosingInstructions(dosingInstructions); return this; } public DrugOrderBuilder withDosingType(Class<? extends DosingInstructions> dosingType) { drugOrder.setDosingType(dosingType); return this; } public DrugOrderBuilder withQuantity(Double quantity) { drugOrder.setQuantity(quantity); return this; } public DrugOrderBuilder withQuantityUnits(Integer quantityUnitsID) { drugOrder.setQuantityUnits(conceptService.getConcept(quantityUnitsID)); return this; } public DrugOrderBuilder withNumRefills(Integer numRefills) { drugOrder.setNumRefills(numRefills); return this; } public DrugOrderBuilder withPatient(Integer patientID) { drugOrder.setPatient(patientService.getPatient(patientID)); return this; } public DrugOrderBuilder withConcept(Integer conceptID) { drugOrder.setConcept(conceptService.getConcept(conceptID)); return this; } public DrugOrderBuilder withCareSetting(Integer careSettingID) { drugOrder.setCareSetting(orderService.getCareSetting(careSettingID)); return this; } public DrugOrderBuilder withOrderer(Integer orderID) { drugOrder.setOrderer(orderService.getOrder(orderID).getOrderer()); return this; } public DrugOrderBuilder withEncounter(Integer encounterID) { drugOrder.setEncounter(encounterService.getEncounter(encounterID)); return this; } public DrugOrderBuilder withDateActivated(Date date) { drugOrder.setDateActivated(date); return this; } public DrugOrderBuilder withOrderType(Integer orderTypeID) { drugOrder.setOrderType(orderService.getOrderType(orderTypeID)); return this; } public DrugOrderBuilder withUrgency(Order.Urgency urgency) { drugOrder.setUrgency(urgency); return this; } public DrugOrderBuilder withScheduledDate(Date date) { drugOrder.setScheduledDate(date); return this; } }