Looking for help?
Steps to setup new Openmrs Order Type
- Create a new Order Type. (There is no way to do it from UI, need to be done directly in DataBase using this SQL.)
Create New Openmrs Order Type
INSERT
INTO
`openmrs`.`order_type` (`
name
`, `description`, `creator`, `date_created`, `retired`, `uuid`,
`java_class_name`)
VALUES
(<
Name
of
Order
Type>, <
Order
type Description>,
'1'
, now(),
'0'
,
uuid(),
'org.openmrs.Order'
);
- Create a mapping between created Order Type and the concept_class of Order Type.
Create New Openmrs Order Type
INSERT
INTO
`openmrs`.`order_type_class_map` (`order_type_id`, `concept_class_id`)
VALUES
(<New
Order
Type ID>, <Concept Class ID
of
Concept Class>);
- To show this orders of this type of orders inBahmni Orders tab you need to do the following
- Create a new Concept as class ConvSet and datatype NA. Add it to All Orderable. This will appear as a separate type of order.
- Create new concepts(class ConvSet, datatype NA) and add it to above concept as set member to classify orders in different groups like blood, stool etc.
- Add Orders as set members to concepts created above according to their class.
- To show these orders to orders app
- Create a concept(class ConvSet, datatype NA) called <Name of Order Type> + ‘ Fulfillment Form‘. E.g. :- Procedure Order Fulfillment Form.
- Add the templated to be fulfilled as a member of above concept.
- In bahmni_apps/orders/extention.json add a config like below. It’s an example for Procedure Orders.
Config to show the order fulfilment in orders tab
"bahmni_clinical_patients_search_ProcedureOrder"
: {
"id"
:
"bahmni.clinical.patients.search.procedureOrder"
,
"extensionPointId"
:
"org.bahmni.patient.search"
,
"type"
:
"config"
,
"extensionParams"
: {
"searchHandler"
:
"emrapi.sqlSearch.active.procedureOrder"
,
"translationKey"
:
"Procedures"
,
"forwardUrl"
:
"../orders/#/patient/{{patientUuid}}/fulfillment/Procedure Order"
,
"forwardButtonTitle"
:
"View"
,
"view"
:
"tabular"
},
"label"
:
"Procedure Order"
,
"order"
: 1,
"requiredPrivilege"
:
"app:orders"
}
-
- Add a global property in OpenmrsAdvance Setting same as the value of SearchHandler key in above config. In above case it will be emrapi.sqlSearch.active.procedureOrder with value below.
Create New Openmrs Order Type
SELECT
DISTINCT
Concat(pn.given_name,
' '
, pn.family_name)
AS
name
,
pi.identifier,
Concat(
""
,p.uuid)
AS
uuid,
Date_format(o.date_activated,
'%b %d %Y %h:%i %p'
)
AS
'Order Placed on'
FROM
orders o
JOIN
person_name pn
ON
o.patient_id = pn.person_id
JOIN
patient_identifier pi
ON
o.patient_id = pi.patient_id
AND
pi.identifier_type = (
select
patient_identifier_type_id
from
patient_identifier_type
where
name
=
'Patient Identifier'
)
JOIN
person p
ON
o.patient_id = p.person_id
LEFT
OUTER
JOIN
obs ob
ON
o.order_id = ob.order_id
JOIN
concept c
ON
o.concept_id = c.concept_id
JOIN
concept_name cn
ON
c.concept_id = cn.concept_id
AND
cn.concept_name_type=
'FULLY_SPECIFIED'
INNER
JOIN
order_type ot
ON
ot.order_type_id = o.order_type_id
INNER
JOIN
encounter enc
on
o.encounter_id = enc.encounter_id
AND
enc.location_id
in
(
select
l.location_id
from
location l
where
l.location_id = <location_id
of
hospital>
or
l.parent_location = <location_id
of
hospital>)
AND
ot.
NAME
= <
Name
of
Order
Type>
group
by
pi.identifier;
The above SQL is used to fetch orders to be fulfilled on order fulfillment page.
- Add a global property in OpenmrsAdvance Setting same as the value of SearchHandler key in above config. In above case it will be emrapi.sqlSearch.active.procedureOrder with value below.
- To be able to upload these orders to SHR we should add a mapping for openmrs order type to FHIR Diagnostic Order Category.
goto Openmrs → Administration → Maintanence → Settings → SHR. Add a new mapping for property in bellow format
Mapping between order type to FHIR Diagnostic Category[
{
"type"
:
"Radiology Order"
,
"code"
:
"RAD"
,
"display"
:
"Radiology"
},
{
"type"
:
"Custom Order"
,
"code"
:
"CUST"
,
"display"
:
"Custom"
}
]