Order Extension Module

Overview

This module aims to extend the Order API available in OpenMRS 1.9 and earlier, by building the following features:

  • Support for creating Order Sets, which allow users to pre-define a set of Order templates

  • Support for associating several Orders together in an Order Group

  • Extending the Order and DrugOrder objects with the addition of several new fields

  • New UI components for managing and viewing OrderSets and OrderGroups

Order Set Design

class OrderSet extends BaseOpenmrsMetadata { Operator operator; Concept indication; boolean cyclical Integer cycleLengthInDays; List<OrderSetMember> members; } abstract class OrderSetMember extends BaseOpenmrsObject { OrderSet orderSet; String title; String comment; boolean selected; Integer relativeStartDay; Integer lengthInDays; String template; } abstract class SingleOrderSetMember extends OrderSetMember { abstract OrderType getOrderType(); Concept concept; Concept indication; String instructions; } class TestOrderSetMember extends SingleOrderSetMember { OrderType getOrderType() { test order } } class DrugOrderSetMember extends SingleOrderSetMember { OrderType getOrderType() { ORDERTYPE_DRUG } Drug drug; Double dose; String units; Concept route; String frequency; boolean asNeeded; String administrationInstructions; } class NestedOrderSetMember extends OrderSetMember { OrderSet nestedOrderSet; }

Order Group Design

abstract class OrderGroup extends BaseOpenmrsData { OrderSet orderSet; } class DrugRegimen extends OrderGroup { List<ExtendedDrugOrder> members; Integer cycleNumber; }

Order Extensions

interface GroupableOrder extends OpenmrsData { Integer getOrderId(); void setOrderId(Integer orderId); Patient getPatient(); void setPatient(Patient patient); OrderType getOrderType(); void setOrderType(OrderType orderType); Concept getConcept(); void setConcept(Concept concept); String getInstructions(); void setInstructions(String instructions); Date getStartDate(); void setStartDate(Date startDate); Date getAutoExpireDate(); void setAutoExpireDate(Date autoExpireDate); Encounter getEncounter(); void setEncounter(Encounter encounter); User getOrderer(); void setOrderer(User orderer); Boolean getDiscontinued(); void setDiscontinued(Boolean discontinued); User getDiscontinuedBy(); void setDiscontinuedBy(User discontinuedBy); Date getDiscontinuedDate(); void setDiscontinuedDate(Date discontinuedDate); Concept getDiscontinuedReason(); void setDiscontinuedReason(Concept discontinuedReason); String getDiscontinuedReasonNonCoded(); void setDiscontinuedReasonNonCoded(String discontinuedReasonNonCoded); String getAccessionNumber(); void setAccessionNumber(String accessionNumber); } class ExtendedOrder extends Order implements GroupableOrder { OrderGroup group } class ExtendedDrugOrder extends DrugOrder implements GroupableOrder { OrderGroup group; Concept indication; Concept route; String administrationInstructions; }

API

Screenshots