This repository contains the openmrs-owa-orderentry OpenMRS Open Web App.
The OpenMRS Order Entry UI is an application to support (drug) orders through UI For further documentation about OpenMRS Open Web Apps see Open Web App Wiki Order Entry UI OWA wiki.
git clone https://github.com/openmrs/openmrs-owa-orderentry.git
cd into openmrs-owa-orderentry
npm install
Create a config.json
file in the top level directory following this template:
{
'LOCAL_OWA_FOLDER': '/Users/name/openmrs-standalone-2.4/appdata/owa/',
'APP_ENTRY_POINT': 'http://localhost:8081/openmrs-standalone/owa/orderentry/index.html'
}
LOCAL_OWA_FOLDER
should point to the owa
directory of your locally running OpenMRS instance, and
APP_ENTRY_POINT
should point to the entry point of your app
For example in a link environment where I have OpenMRS running on port 8080
via the SDK in
directory /home/mgoodrich/openmrs/haiti
, I set config.json
as follows:
{"LOCAL_OWA_FOLDER":"/home/mgoodrich/openmrs/haiti/owa",
"APP_ENTRY_POINT":"http://localhost:8080/openmrs/owa/openmrs-owa-orderentry/index.html"}
Locate the appdata/owa
directory and type the following command to get the path to the appdata/owa
directory and copy it to the clipboard.
pwd | pbcopy
An example of the path is: /Users/name/downloads/openmrs-owa-orderentry/appdata\owa
Modify the path to look like: /Users/name/downloads/openmrs-owa-orderentry/appdata\\owa/
Copy the path. Edit config.json
as follows:
{
"LOCAL_OWA_FOLDER": "PASTE_THE_PATH_YOU_COPIED_HERE",
"APP_ENTRY_POINT": "http://localhost:8081/openmrs-standalone/owa/openmrs-owa-orderentry/index.html"
}
Note: Start your cohort builder standalone server locally. Make sure you tomcat port is 8081
, if not, change the APP_ENTRY_POINT
localhost port to be the same as your tomcat port.
npm run watch
You will need NodeJS 6+ installed to do this. See the install instructions here.
Once you have NodeJS installed, install the dependencies (first time only):
npm install
Build the distributable using Webpack as follows:
npm run build:prod
This will create a file called openmrs-owa-orderentry.zip
file in the root directory,
which can be uploaded to the OpenMRS Open Web Apps module.
To deploy directly to your local Open Web Apps directory, run:
npm run build:deploy
This will build and deploy the app to the /Users/name/openmrs-standalone-2.4/appdata/owa
directory.
To change the deploy directory, edit the LOCAL_OWA_FOLDER
entry in config.json
.
If this file does not exists, create one in the root directory that looks like:
{
"LOCAL_OWA_FOLDER": "/Users/name/openmrs-standalone-2.4/appdata/owa"
}
Note: This could be different depending on your installed version and install location.
To use Browersync to watch your files and reload
the page, inject CSS or synchronize user actions across browser instances, you will need the APP_ENTRY_POINT
entry in your config.json
file:
{
"LOCAL_OWA_FOLDER": "/Users/name/openmrs-standalone-2.4/appdata/owa",
"APP_ENTRY_POINT": "http://localhost:8081/openmrs-standalone/owa/openmrs-owa-orderentry/index.html"
}
Run Browsersync as follows:
npm run watch
Install npm packages dependencies as follows:
npm install --save <package>
To use the installed package, import it as follows:
//import and assign to variable
import variableName from 'package';
To contain package in vendor bundle, remember to add it to vendor entry point array, eg.:
entry: {
app : `${__dirname}/app/js/owa.js`,
css: `${__dirname}/app/css/owa.css`,
vendor : [
'package',
...//other packages in vendor bundle
]
},
Any files that you add manually must be added in the app
directory.
Releasing is done via Github Releases. The process is as follows:
- Update the version number in package.json, pom.xml, and app/manifest.webapp by removing the "-SNAPSHOT" in each. Ensure all 3 versions match.
- Commit and push to master and confirm everything builds successfully in Github Actions
- Go to the Releases Page and create a new release named after the version you want to release, publish this.
- Confirm that the Deploy release job completes successfully
- Confirm that the zip artifact has been successfully published to the Maven repository
- Update the version number in package.json, pom.xml, and app/manifest.webapp, by incrementing to the next version number and adding a "-SNAPSHOT" suffix
- Commit and push to master, and confirm that the next SNAPSHOT builds successfully
Because of the tight coupling on react-components, it is strongly recommended that prior to releasing labworkflow that the dependency on react components is updated to reflect an actual released version rather than the "next" tag. Ideally this version is an official release, but could also be a pre-release. Then, following the labworkflow release, one should update the dependency back to the "next" version to ensure the latest updates are incorporated in the next snapshot development.
You may experience problems due to the Access-Control-Allow-Origin
header not
being set by OpenMRS. To fix this you'll need to enable Cross-Origin Resource
Sharing in Tomcat.
See instructions here for Tomcat 7 and here for Tomcat 6.
Before using the Order Entry Open Web Application, First Load the orderentryui module into the OpenMRS instance , because it provides the Order Entry Widget on the Patient DashBoard used to acces the webb app. Then administrator should make the following one time configurations using the admin portal.
- Create an Encounter Type called
Order Entry
or any other name. - Create a setting
orderentryowa.encounterType
whose value should correspond to the name given to the Encounter Type created above. - Create an Encounter Role called
Clinician
or any other name. - Create a setting
orderentryowa.encounterRole
whose value should correspond to the name given to the encounter role created in 3 above. - Create a date format, setting
orderentryowa.dateAndTimeFormat
as the name, with a value of the date format, e.g.DD-MMM-YYYY HH:mm
, in the global properties - Add global property
orderentryowa.labOrderAutoExpireTimeInDays
with a value of30
days or any other number - Add global propery Lab Orderables Concept Set
orderentryowa.labOrderablesConceptSet
, whose value is the UUID of a concept set of Class LabSet and whose Set Members are other LabSet concept sets or concept of Class Test.
As of version 1.3.0, the module supports a collecting an "order reason" for Lab Orders. Order reasons are specified at
individual test or panel level via global property orderentryowa.orderReasonsMap
that supports a pipe-delimited
lists of panel or panel uuids mapping tests to concept sets that provides the reason for ordering. A single set of
tests/panels can also be mapped to the same concept set. For example:
uuid-of-test-a=uuid-of-concept-set-that-contains-potential-reasons-for-test-a|uuid-of-test-b,uuid-of-panel-a=uuid-of-concept-set-that contains potential-reasons-for-test-b-and-panel-a
NB: Not having any of the above configurations will result into an error notice. Please check more information here