care services discovery and health worker information openhie provider registry community call...
TRANSCRIPT
1
Care Services Discovery and
Health Worker Information
OpenHIE Provider Registry Community Call
September 18, 2013
2
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Point of Care Applications
OpenMRS Provider Module
SMS Query for Doctor Certifications
iHRIS asking for Facility List
Find Health Workers in a District
Consolidates information from Service Directories
Exposes information to Service Finders
Facility Registries: DHIS2 Resource Map
Provider Databases RapidSMS iHRIS
Illustrative Examples
3
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
XML Data Model : CSD document
4
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
XML Data Model : CSD document
5
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Figure 3.73.4-1: Find Matching Service
6
Info ManagerService Finder
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Figure 3.73.4-1: Find Matching Service
Submit request as <careServicesRequest/>
Document
Finds requested stored query in library of
<careServicesFunction/> documents
Stored XQuery executed and returned as
<careServicesResponse/>or raw result (e.g. JSON)
Does Something!
<careServicesRequest> <function uuid='4e8bbeb9-f5f5-11e2-b778-0800200c9a66'> <requestParams> <codedType code="2221" codingSchema="ISCO-08" /> <address> <addressLine component='city'>Kigali</addressLine> </address>
<max>5</max> </requestParams> </function></careServicesRequest>
Figure 3.73.4.1.2.2-1: Example Provider Search Request
<careServicesFunction content-type='text/xml' uuid='4e8bbeb9-f5f5-11e2-b778-0800200c9a66'> <description> Performs a search for all providers by name, coded type, address or ID. </description> <definition><xi:include href="provider_search.xq" parse='text'/></definition> <xforms:instance id='instance-4e8bbeb9-f5f5-11e2-b778-0800200c9a66'> <requestParams> <id/> <commonName/> <codedType/> <address/> <start/> <max/> <record/> </requestParams> </xforms:instance> <xforms:bind nodeset="instance(’instance-4e8bbeb9-f5f5-11e2-b778-0800200c9a66’)/requestParams/id" type="csd:uniqueID" id='bind-4e8bbeb9-f5f5-11e2-b778-0800200c9a66-id'/> <!-- A BUNCH MORE OF THESE TO DEFINE PARAMETER TYPES--> </careServicesFunction>
Figure Y.3-2: Provider Search Care Services Function
<CSD xmlns="urn:ihe:iti:csd:2013"> <organizationDirectory/> <serviceDirectory/> <facilityDirectory/> <providerDirectory> <provider oid="2.25.329800735698586629295641978511506172918"> <!--Details of provider record go here--> </provider> </providerDirectory></CSD>
Un-encapsulted/Raw Response
7
Service Finder Info Manager
Submit request as <careServicesRequest/>
Document
Does Something!Stored XQuery executed
and returned as <careServicesResponse/>or raw result (e.g. JSON)
• Use of UUID to name stored queries
• Contains XQuery function to be executed by XQuery Engine
• Parameters of XQuery function are defined with XForms Core Modelhttp://www.w3.org/TR/xforms/#structure-abstract
• Point is: Build one User Interface with XForms for multiple client systems• RapidSMS uses Django with XForms library• Client-side (web browser) with XSLTForms• Server-side (web browser) Oberon, betterForm java engines• OpenDataKit / JavaRosa for Nokia fun java applications
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Finds requested stored query in library of
<careServiceFunction/> documents
Figure 3.73.4-1: Find Matching Service
<html> <head> <title>Simple Provider Search Example</title> <xf:model id='simple_search_model'>
<csd:careServicesRequest> <csd:function uuid="4e8bbeb9-f5f5-11e2-b778-0800200c9a66"/> </csd:careServicesRequest>
<xf:submission id="submit-search" method="post" action="4e8bbeb9-f5f5-11e2-b778-0800200c9a66” />
</xf:model> </head> <body> <h1>Simple Provider Search Example</h1> <xf:input ref="instance('instance-4e8bbeb9-f5f5-11e2-b778-0800200c9a66')/requestParams/commonName"
id="search-field-name"> <xf:label>Search By Name:</xf:label> <xf:action ev:event="DOMActivate"> <xf:send submission="submit-provider-search"/> </xf:action> </xf:input> <xf:submit submission="submit-provider-search"> <xf:label>Search</xf:label> </xf:submit> </body></html>
Replace with XForm <instance> from <careServicesFunction>
8
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Figure 3.74.4-1: Query for Updated Services
9
Service Finder(client system)
Info Manager(XQuery Engine, XML Database)
Services Directory(source of HW,
facility info)
Figure 3.74.4-1: Query for Updated Services
Service DirectoryInfo Manager
Polls (nightly?) all Services Directory for new
information. SOAP with <getModificationsRequest>
Query in local data store for changed/new data.
Returns all new/updates as a <CSD/> document.
iHRIS: XSL transform of
report
Checks for consistency and Puts updated data into XML
database, it’s cache of service directories
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:csd="urn:ihe:iti:csd:2013"> <soap:Header> <wsa:Action soap:mustUnderstand="1" >urn:ihe:iti:csd:2013:GetDirectoryModificationsRequest</wsa:Action> <wsa:MessageID>urn:uuid:def119ad-dc13-49c1-a3c7-e3742531f9b3</wsa:MessageID> <wsa:ReplyTo soap:mustUnderstand="1"> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:To soap:mustUnderstand="1">http://host/csDirectory</wsa:To> </soap:Header> <soap:Body> <csd:getModificationsRequest> <csd:lastModified>2002-05-30T09:30:10.5</csd:lastModified> </csd:getModificationsRequest> </soap:Body></soap:Envelope>
Figure 3.74.4.1.2-1: Example SOAP Request
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:csd="urn:ihe:iti:csd:2013"> <soap:Header> <wsa:Action soap:mustUnderstand="1" >urn:ihe:iti:csd:2013:GetDirectoryModificationsResponse</wsa:Action> <wsa:MessageID>urn:uuid:060bf1f5-a5d8-4741-86c6-cb240f887e5b</wsa:MessageID> <wsa:To soap:mustUnderstand="1"> http://www.w3.org/2005/08/addressing/anonymous</wsa:To> <wsa:RelatesTo>urn:uuid:def119ad-dc13-49c1-a3c7-e3742531f9b3</wsa:RelatesTo> </soap:Header> <soap:Body> <csd:getModificationsResponse> <CSD xmlns="urn:ihe:iti:csd:2013"> <organizationDirectory/> <serviceDirectory/> <facilityDirectory/> <providerDirectory> <provider oid="2.25.329800735698586629295641978511506172918"> <!--Details of provider record go here--> </provider> </providerDirectory> </CSD> </csd:getModificationsResponse> </soap:Body></soap:Envelope>
Figure 3.74.4.2.2-1: Example Query for Updated Services Request SOAP message