Presentation on theme: "A Summary Care Record Architecture based on HL7 CDA and SOA"— Presentation transcript:
1A Summary Care Record Architecture based on HL7 CDA and SOA Mr. Peter GivenComputing and Mathematics DepartmentInstitute of Technology, Tralee
2Introduction This paper shows how Service Oriented Architectures can be combined withthe HL7 Clinical Document Architecture to facilitatethe sharing of Summary Care Records between health care information systems
3Goals The solution demonstrates that A federated architecture based on SOA and coding standards is a viable alternativeto a centralized record architecture for the sharing of summary care records
4System ArchitectureThe design describes a system that facilitates the sharing of documents from the electronic medical record between GPs and other healthcare providers (Out of hours, emergency etc)The architecture facilitates storing healthcare data locally and querying the data via an indexing mechanism.
6Data LayerThe Data layer involves the capture and storage of patient information in a GP Information SystemAn Open source GP Information System was chosen to represent legacy open source GP Systems (openEMR)
7OpenEMRA free open source medical practice management and electronic medical records application (www.openemr.org)Licensed under GNU GPLOperates in Linux, FreeBSD, MacOS X and WindowsA client/server architecture written in PHP with a mySQL database – downloadable as a WAMP application
8OpenEMRThe system is being used successfully at a number of sites [86,87,89].A number of commercial companies are also supporting the software [88,89,90].Not based on any EHR Standards but has some support for coding standards
9Functionality of OpenEMR The application storespatient demographic datapatient encounter informationvital signslaboratory resultsprescriptions and allergy information.The system also allows the management of appointments and the generation of reports.
14Interfacing to OpenEMR The project entailed building an Interface Engine was developed in order to extract:A Summary Care Record (SCR).This will hold patient demographic data along with known allergies and any medications prescribed in the last 6 months.A Prescription Record (PR).This will contain demographic details and prescription information that can be forwarded to a pharmacy system.A Patient Index for the SCR
16Interfacing to OpenEMR The HL7 Clinical Document Architecture was chosen as the document architecture standard.The Interface Engine retrieves data from openEMRs databases and construct CDA conformant documents using the CDA schema
17HL7 CDA“The HL7 Clinical Document Architecture (CDA) is a document markup standard that specifies the structure and semantics of "clinical documents" for the purpose of exchange” (HL7 website)A CDA document can includeTextImagesSoundsother multimedia content.Document-level, section-level and entry-level templates availableThe content of CDAs defined in the HL7 Reference Information Model and HL7 Data Types
19Summary Care Record as a CDA document The Summary Care RecordHeaderTitle, Time, Confidentiality Code, Version Number, Record Target (PatientRole, Patient Name, Gender, Birth Date), Provider Organization, Author, Custodian, Legal Authenticator, Encounter InformationSectionAllergies and Adverse ReactionsMedications
20Prescription Record as a CDA document The Prescription RecordHeaderTitle, Time, Confidentiality Code, Version Number, Record Target, Prescription Provider Organization, Author, Custodian, Legal Authenticator, Encounter,SectionPrescription Informationdrug name, quantity, dosage, refills and notes
22Implementing the interface The Interface Engine was coded using PHP/DOM and using a CDA document/section template schemaThe mapping from the openEMR database to the CDA schemas was incomplete as the database did not hold all the data specified in the CDA document schema.For example openEMR currently does not store clinical codes with separate parts of the medical record so the code fields in the CDA documents were left empty
23Mapping inconsistencies Also the openEMR system stores dosing intervals asqid, bid, q3hwhile the CDA document needs these intervals to be represented as time periods and unit (e.g. 3 hours).
25Designing the Communication Layer The Communication layer was designed in two parts.MPI Subsystem :The first part is the design of a distributed Master Patient IndexRecord Retrieval Subsystem : The second part of the design allows the user to retrieve the Summary Care Record or prescription record using a Service Oriented Architecture.
26Master Patient Index Subsystem The Master Patient Index was designed on top of a peer-to-peer network called the GP Peer Group.A GP with the correct credentials can join and leave the peer network.The GP can then publish patient indices to the network.The index advertises the existence of a Summary Care Record for a patient and the endpoint address for that record
28Patient IndexThe patient index is designed to hold the following information:document type etcThe patients’ surname and first nameThe patient’s date of birthThe patient’s PPS numberThe organisations’ id and nameThe endpoint where the full Summary Care Record can be found.The information to build the index was extracted from the openEMR system by the Interface Engine.
30Generating a patient index from OpenEMR The index information is initially retrieved from the openEMR Clinical Information System using the data layer interface as described aboveThe index information is wrapped in an XML message. A typical message is shown below:
31Example Mater Patient Index <?xml version="1.0" ?><SCR_Advert><Document_CDA_Type> </Document_CDA_Type><Document_Name>Summary Care Record</Document_Name><Document_Description>Clinical Document</Document_Description><Patient_Surname>Bloggs</Patient_Surname><Patient_Firstname>Joe</Patient_Firstname><Patient_DOB> </Patient_DOB><Patient_PPS>1</Patient_PPS><Organisation_ID>6</Organisation_ID><Organisation_Name>givens sugery</Organisation_Name><Endpoint>http://localhost:8080/ccx/mySCRInterface</Endpoint></SCR_Advert>
32Peer AdvertisementThe peer-to-peer software uses this information to generate a peer advertisement which appends the following header<?xml version="1.0" ?><!DOCTYPE SCRAdvertisement><SCRAdvertisement xmlns:jxta=http://jxta.org><Advert_ID>urn:jxta:uuid E C475C1C </Avert_ID>MPI Infromation</SCRAdvertisement>
33Peer to peer networkA node can both publish to and search this network for indices.To search for a particular patients SCR a discovery message is propagated to all peers in the network.
34Searching for a Patient Index The metadata contained within the index will improve the search results from the discovery process.Once a peer has retrieved the index for a patient the endpoint information is retrieved from the index.The second part of the communication layer will now use this endpoint to retrieve the actual Summary Care Record from the system in which it is stored.
35Implementing MPI Application The MPI application itself consists of Java Swing components that implement a Graphical User Interface, along with calls to the JXTA API to join the GP Peer Group network and to publish/discover advertisements on the network.
37Searching for a patient summary care records Once the user provides values the peer sends a discovery message to the other peers on the sub-network.Any Rendezvous peers on the local sub-network will further propagate the discovery message to other sub-networks they know about.Any advertisements that match the surname/PPS number are returned to the requesting peer.Clicking on a particular patient from this list will show the endpoint where the full Summary Care Record can be found.This endpoint information is now presented to the Web Service client to retrieve the patient’s full Summary Care Record
38Security in the Peer Network The JXTA configuration requires a username and password. A certificate may also be required.Once the peer starts up it can issue discovery messages to locate other peer groups it may wish to join.The peer groups enforce a second level of security. The user must supply a login name and password to join the GP Peer Group.
39Record Retrieval Subsystem SOA is used to deliver the Summary Care RecordA client program that knows the endpoint address can send a message to a Web Service on the GP site to retrieve the Summary Care Record as a CDA document
41SOA SolutionA Web Services Server called Cape Clear was used to build the SOAThe Web Service was defined in WSDL using Cape Clear Studio.The Web Service was implemented in Java and uses the SOAP protocol at the messaging layer.A Web Services client was built in JavaIt generates SOAP requests which are sent to the sever and the response contains either a Summary Care Record or a Prescription Record
42Retrieving the Summary Care Record The Web Service had two services; getSumaryCareRecord and getPrescriptionRecord.Both services require the patient’s PPS number (a java.String) and the patient’s surname (java.String).The service returns a CDA documents (also as a java.String) if one exists
44Integrating the CDA record A reverse process to that taken to generate the data at the data layer could be followed in order to integrate the data with a local system.For this project it was enough to be able to view the record
45Viewing the RecordOnce the record is saved the user can finally view the file.A standard XSL transform is attached to the file.The transform creates an HTML document that can be viewed by any browser.The document can also be printed out.
48Application areas Out of Hours Services – telephone triage etc Emergency ServicesCommunity Nursing
49Conclusions: Advantages GP buy incan maintain their systems of choice (open source or commercial)GPs can maintain their records locally (pull model)Healthcare StandardizationCDA for clinical document exchangeOther summaries can be implemented easilyTechnology StandardizationsSOA and Web ServicesDistributed MPI with location information
50Conclusions: Challenges Technical barriersEach GP system requires an interface Engine to generate CDA documentsGP database may not hold required informationGP Communications System is a hybrid SOA/P2P solutionSecurityCostDistributed MPI with location information