Skip to main content

Developer README for the openmrs adaptor

Source: https://github.com/OpenFn/adaptors/tree/main/packages/openmrs

Language OpenMRS

Language Pack for building expressions and operations for working with the OpenMRS API.

OpenMRS Data Model Explorer

Documentation

Sample configuration

{
"instanceUrl": "http://openmrs.com/instance/url",
"username": "admin@openmrs",
"password": "supersecretopenmrspassword"
}

Get a patient by some criteria

// getPatient({ uuid: '516af9aa-0402-4e11-ad79-e394fdec0c91' });
// getPatient({ uuid: dataValue('patientId')(state) });
getPatient({
uuid: state => state.data[0].uuid,
});

Example of searching for patients based on their EMR Id

getPatients(
{
identifier: state => state.data.emrId,
v: 'full',
},
{
exactlyOne: true,
}
);

Create an Encounter

createEncounter({
encounterDatetime: dataValue('visit_date'), //dynamically fill with source app data
patient: dataValue('uuid'),
encounterType: dataValue('visit_type'),
location: dataValue('location.uuid'),
encounterProviders: [
{
provider: dataValue('provider_name'),
encounterRole: '240b26f9-dd88-4172-823d-4a8bfeb7841f', //hardcoded value
},
],
});

Make a request to any OpenMRS endpoint

req({ method: 'GET', url: '/ws/rest/v1/concept' }, state => {
console.log(JSON.stringify(state, null, 2));
return state;
});

Create new patient

patient(
fields(
field('gender', 'M'),
field('names', function (state) {
return [
{
patient_id: dataValue('form.patientId')(state),
creator: dataValue('form.user')(state),
},
];
})
)
);

Development

Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

Run tests using pnpm run test or pnpm run test:watch

Build the project using pnpm build.

To just build the docs run pnpm build docs