Wiki Spaces
Documentation
Projects
Resources
Get Help from Others
Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack
These were the user stories designed to drive the priorities for the initial release for the Webservices.rest Module while it was being created. See that page for up-to-date documentation
Fetch a patient, their encounters, and their observations.
GET /ws/rest/patient?q=123MT2
{ uuid: "1AA43D-324-AFE8349AC", uri: "https://foo.com/ws/rest/patient/1AA43D-324-AFE8349AC", display: "John A. Doe (93498309234)", name: "John A. Doe", identifier: 9349, identifierType: { display: "Hospital X Identifier Number", uuid: "342834239234", identifiers: [ {display: "9349 (Hospital X Identification Number)", uuid: "00AF-55-111", uri: "https://foo.com/openmrs/ws/rest/patient/1AA43D-324-AFE8349AC/identifier/00AF-55-111"},{display: "AA-4 (Hospital Y Id Number", uuid: "123", uri: "https://foo.com/openmrs/ws/rest/patient/1AA43D-324-AFE8349AC/identifier/123"} ] gender: "M", birthdate: "1955-05-25", voided: false, dead: false }
GET /ws/rest/encounter?patient=1AA43D-324-AFE8349AC&limit=10
GET /ws/rest/patient/1AA43D-324-AFE8349AC/encounters?limit=10
[ { uuid: "029434-AA-32EE", uri: "https://foo.com/ws/rest/encounter/029434-AA-32EE", display: "Adult Return Hospital X encounterDatetime: "2000-05-25 14:05:03", patient: { display: "John A. Doe (123-0)", uuid: "1AA43D-324-AFE8349AC", uri: "https://foo.com/openmrs/ws/rest/patient/1AA43D-324-AFE8349AC" }, location: { display: "Hospital X", uuid: "39209-324-999", uri: "https://foo.com/openmrs/ws/rest/location/39209-324-999" }, form: { display: "Outpatient Form", uuid: "F23BCA-324-22", uri: "https://foo.com/openmrs/ws/rest/form/F23BCA-324-22" }, encounterType: { display: "Adult Return", uuid: "123CA-324-22", uri: "https://foo.com/openmrs/ws/rest/encountertype/123CA-324-22" }, provider: { display: "Susan B Anthony (6400-6)", uuid: "392A-324-111", uri: "https://foo.com/openmrs/ws/rest/provider/392A-324-111" }, obs: [ { display: "WEIGHT (KG) = 70", uuid: "BBB-324-111", uri: "https://foo.com/openmrs/ws/rest/obs/BBB-324-111" },{ display: "TRANSPORTATION METHOD = VELOCIRAPTOR", uuid: "0019-324-111", uri: "https://foo.com/openmrs/ws/rest/obs/0019-324-111" } ] }, orders: [{ ... }, { ... } ] }, { encounterDatetime: ... ... } ]
[ { uuid: "029434-AA-32EE", uri: "https://foo.com/ws/rest/encounter/029434-AA-32EE", display: "Adult Return Hospital X encounterDatetime: "2000-05-25 14:05:03", patient: { display: "John A. Doe (123-0)", uuid: "1AA43D-324-AFE8349AC", uri: "https://foo.com/openmrs/ws/rest/patient/1AA43D-324-AFE8349AC" }, name: "John A Doe", identifier: "123-0", identifierType: "asdf", identifiers { (list of identifier refs) }, }, location: { display: "Hospital X", uuid: "39209-324-999", uri: "https://foo.com/openmrs/ws/rest/location/39209-324-999" }, form: { display: "Outpatient Form", uuid: "F23BCA-324-22", uri: "https://foo.com/openmrs/ws/rest/form/F23BCA-324-22" }, encounterType: { display: "Adult Return", uuid: "123CA-324-22", uri: "https://foo.com/openmrs/ws/rest/encountertype/123CA-324-22" }, provider: { display: "Susan B Anthony (6400-6)", uuid: "392A-324-111", uri: "https://foo.com/openmrs/ws/rest/provider/392A-324-111" }, obs: [ { display: "WEIGHT (KG) = 70", uuid: "BBB-324-111", uri: "https://foo.com/openmrs/ws/rest/obs/BBB-324-111" },{ display: "TRANSPORTATION METHOD = VELOCIRAPTOR", uuid: "0019-324-111", uri: "https://foo.com/openmrs/ws/rest/obs/0019-324-111" } ] }, orders: [{ ... }, { ... } ] }, { uuid: , display: , uuid: , encounterDatetime: ... ... } ]
In this story, the client could be a form entry tool.
POST /ws/rest/encounter
{ encounterDatetime: "2000-05-25 14:05:03", patient: "1AA43D-324-AFE8349AC", location: "Hospital X", form: "F23BCA-324-22", encounterType: "123CA-324-22", provider: "392A-324-111", obs: [ { question="034892-AA-3248", answer="70" },{ question="034892-AA-3248", answer="222-EE-222" } ] }
PUT /ws/rest/encounter/029434-AA-32EE
{ encounterDatetime: "2000-05-26 14:05:03", location: "Hospital Y" }
A counselor in the field using a mobile device needs to review a list of patients to be interviewed.
GET /ws/rest/cohort?name=
partialname
GET /ws/rest/cohort/
cohortsuuid
GET /ws/rest/patient?q=123MT-2
GET /ws/rest/patient?q=Joe+Bob
GET /ws/rest/encounter?patient=
uuid-of-patient
POST /ws/rest/encounter
GET /ws/rest/location?name=MTRH
POST to /ws/rest/patient
POST to /ws/rest/hl7
{ message: "KLJSDF||||SDF|S|DF|||||S|DF|S|F" }
In all cases, the client will need to authenticate before it can access the resources.
POST to /ws/rest/login
{ token: "af3je3jkLm7" }
POST to /ws/rest/logout
8 Comments
Burke Mamlin
For the default patient representation, I think we want to include known identifiers and I don't think a "ref" will suffice, since you need to know the type for each identifier as well as which is preferred.
Ben Wolfe
I'd rather we have the preferred identifier/identifierType a property by default with a list of Refs of all identifiers. If the user wants to know all identifiers+types with one query, they can ask for rep="default,custom(identifiers.identifier, identifiers.identifierType)" and get back objects that have identifier strings and Ref IdentifierTypes.
Burke Mamlin
When representing encounters, we have to decide on the default representation of observations.
Encounters with obs as refs
Encounters with simple obs representation by default
Ben Wolfe
What about doing neither unless the user puts it in the representation as Darius suggests? I like that solution more than creating some sort of medium sized object.
Darius Jazayeri
Ben Wolfe
(made your suggested changes in the page and removed them from your comment, so as to not confuse people later on)
Paul Biondich
Let's get that 0.1 module out the door, backwards-compatible with 1.8.0!
Ben Wolfe
It won't be compatible with 1.8.0, only 1.8.1 at best. There were changes we had to make to trunk in order for services to be registered, bug fixes, etc. Those were too late in the 1.8.0 release cycle to be included safely. We are working on backporting those fixes from trunk to the 1.8.x line now and the module will be released with that minimum dependency.