Introduction This discussion focuses on Transport Issues with HL7v3 (transmission wrappers etc) Found on our (CFH & BT & co) large programme Straw poll Please feel free to ask questions
Contents Intro to English NHS National Programme for IT. (Optional) What does Spine do, by subsystem (Optional) Where is HL7 used How each subsystem uses HL7 Briefly mention the benefits of HL7 Five challenges faced by BT. (recommendations or advice) Some solutions
Introduction: An National Integrated Care Record System British Telecom Fujitsu National Programmes: N3 (BT) NWCS (BT) CAB (Atos) NHS Spine (BT) Accenture Owner: Peter Wilson. Doc. No. AH204. Issue 2. May ‘04. Review: Oct. ‘04. Page 5 of 47 CSC
Introduction: Some figures… so far Smartcard registration There are 410,575 Smartcard holders who are registered and approved for access to the Spine. Electronic Prescription Service (EPS) Over 48 million (48,044,505) prescription messages have now been transmitted electronically. 6,894 GP practices have had technical upgrades to the new system. 4,293 of these practices are actively operating the Electronic Prescription Service (EPS). 7,077 pharmacy systems have had technical upgrades to the new system and 4,887 are actively operating EPS. EPS is being used for over 17% of daily prescription messages. Choose & Book Over five and a half million (5,959,307) bookings have been made to date. Choose and Book is being used for over 45% of NHS referral activity from GP surgery to first outpatient appointment. Over 85% of all GP practices have used Choose and Book to refer their patients to hospital GP2GP Transfer GP2GP has now been used for 34,434 medical record transfers. 3,503 GP practices have had technical upgrades to the new system. 2,346 of these practices are now actively operating GP2GP.
What does Spine do? How all the parts fit together … A Cluster Electronic Booking Electronic Transfer of Prescriptions Personal Spine Information Service (PSIS) Personal Demographic Service (PDS) Data services for Secondary Uses Spine (NASP) delivers national services LSPs deliver a range of local functionality StHAs / Trusts / Units / Primary Care / Social Care care & services for patients TMS processes all messages Message traffic both-ways
NHS CRS domain Patient care domain LSP Service Information Clinical Event Healthcare service LSP Systems GP systems Hospital systems … etc.,. ●A clinical event takes place in a healthcare service ●The Local service requests summary information from the Spine ●Information is used to inform current care ●Care given – details placed onto LSPs local service ●The Spine is also updated with recent care details What does Spine do? A Typical Flow of Information The Spine Example Spine Information Personal Details Previous Care Summaries Details of Clinical Events Clinical correspondence Discharge summaries Referral information Current Care Providers Medication Information
9 COMMERCIAL IN CONFIDENCE & WITHOUT PREJUDICE To the extent that this document contains any information concerning clinical safety (such term having its ordinary meaning until a specific definition may be agreed upon by the Authority and the Contractor) or any other information not specifically mandated by the Project Agreement, it is shared by the Contractor with the Authority on a voluntary, confidential and 'without prejudice' basis for the purpose of informing the Authority. Where is HL7 used? Architectural Overview Data Messages Data Centres Applications Other Links Infrastructure/ Services Personal Demographic Service Business continuity and DR Access and Control Help Desk Patients Personal Spine Information Service Spine Directory Service Help Desk NHS Transaction Messaging Service Clinical Messages eTP eBooking Patient Details Live A Data Centre Live B Data Centre Links to ‘Health Space ’ Interfaces Links to Remote Settings Links to National Services Clinical Applications (View) Secondary Uses Services Replacement NWCS Clinical Applications (Input) Data Quality & Data Quality Management Clinical Messages eTP eBooking Patient Details ebXML WS-A LDAP
Where is HL7 used? Commercial considerations Different partners had different capabilities with HL7 Some partners were able to receive and send HL7 For others BT needed to build adapters
Where is HL7 used: How does each Spine subsystem use HL7v3? TMS – Routes HL7 (e.g. GP2GP, eBooking) but translates transmission information to an internal canonical format – CSF- for routing to subsystems. PDS – Java DTOs (VOs) – required adapter layer to translate HL7 Demographics into Java. ETP – state engine – stores HL7 in CLOBS plus meta data. PSIS – HL7 document storage. CLOBS plus meta data. SDS – Provides directory services. LDAP directory. Currently most interaction is via LDAP queries but also some HL7. ACF – Authorisation subsystem providing Legitimate Relationships between patients and clinicians. Java DTOs.
Benefits of implementing HL7 Improved interoperability; Benefit from the wealth of knowledge and work already done; An assurance of quality backed by a defined methodology.
Challenges of implementing HL7 Problem One: Inflexible wrappers. (HL7v3 dictates serialisation of meta data) Problem Two: Lack of guidance on addressing. Problem Three: Inflexible Interaction Id. (Versioning HL7v3 messages) Problem Four: Messages were perceived as unnecessarily complicated and verbose Problem Five: Typically slow processing of XML messages (Not really an HL7v3 problem). (Optional)
Problem One: Inextensible and Inflexible Infrastructure Wrappers HL7 Infrastructure prescribes a payload wrapper. Confuses the layering. Leads to confused error handling e.g. Need to send MCCIs from middleware. Can lead to repetition of data Result Both the SOAP header and the HL7 Transmission Wrapper are required. Would be nice to avoid the Transmission Wrapper.
MIME HL7 Wrapper …meta data HL7 Control Act Problem One: Confuses the layering HL7 Payload SOAP Envelop SOAP Header SOAP Body ebXML Header …meta data ebXML Manifest …meta data
Problem One: Repetition of Wrapper and Control Act Components Wrapper HeaderWrapper Response Additions Message IdDuplicateACK Type CodeDuplicate Creation TimeDuplicateRef-to Message IdDuplicate Version CodeRequiredACK Detail CodeDuplicate Interaction IdDuplicateACK Acceptance CodeDuplicate Processing CodeRequiredControl Act Processing Mode CodeNot UsedAuthor Person RoleRequired Accept ACK CodeNot UsedAuthor Person UserRequired Device To/FromRequiredAuthor Person Role Profile Required Organisation To/FromRequiredParticipant System IdRequired Detected Issue CodeRequired
Problem One Solution: A more flexible binding for the infrastructure
Simpler HL7 Wrapper
Problem One Solution: HL7 Message Query Request Example aa1 2bb aa1 2bb
Problem Two: How to do addressing. HL7 didn’t provide a lot of guidance on how to address a system (use of the DeviceID). How the National Programme performs Addressing and Routing (MHSs and ASIDs) They will address the message to an Accredited System ID. They will locate the Party Key (MHS ID) for that ASID (HL7 App ID). A client will look up a binding in the SDS directory based on PartyKey, Service, Interaction to find the binding. Messages arrive as HL7/ebXML or HL7/WS-A Web Services. But many suppliers have implemented ASID topologies in different manners.
Problem Two Solution: More guidance Better definition and descriptions of Device ID Reference Implementations?
Problem Three: Inflexible Interaction Id aa1 2bb aa1 2bb
Problem Three: Inflexible Interaction Id Is a composite key of the MessageType, Trigger Events and the version. It is the root element of the message. InteractionID as root: Inefficient generic XPaths and for XSLT processing e.g. to find HL7 message id XPath is hl7:*/hl7:id/@root Difficult to create generic schema to validate instance messages (for intermediary / integration engines). Made creation of WSDL with multiple possible responses difficult. Using the root node as version identifier - A small change to the message causes a change to the same element on which a message is processed. This causes: More substantial changes to the application Unnecessary changes to the integration / routing infrastructure How do you version for vocabulary changes. Corrupted use of InteractionId. Limited success utilising InteractionId as a composite key. The National Programme rarely creates a new Interaction ID for a different trigger event.
Problem Three Solution Our solution. We generally worked around the problems Response wrappers for WSDL Tolerated inefficient XPaths Accept cost of changes to InteractionsIDs Possible HL7 solutions Should we separate trigger (conversations) and versioning from the Interaction ID? Should we create a generic root element and keep Interaction as an attribute?
Problem Four: Messages were perceived as unnecessarily complicated / verbose. Some aspects of HL7 are verbose. Makes message less human readable Increases message development time. Increases implementation time. Increases testing Resource issues Increased processing costs Increased storage costs Increased traffic on network
Problem Four: Sample PDS Message Ms Three Zoe Editestpatient Mrs Three Zoe Virtualpatient Patient would like to discuss further with citizens advice bureau before agreement Ms Three Zoe Editestpatient Mrs Three Zoe Virtualpatient
Problem Four Solution: Two species of HL7 message – Books and Magazines Magazines stalls Magazines are lighter; Magazines are generally transported more quickly; Magazines use slang, they make cultural assumptions about the semantic meaning of their content. Magazines are generally thrown away once they have been read. Magazines know their target audience. Books shops Books are heavier. Books tend to be stored once received and read again later. Books tend to provide more background to their main point (semantics / meta data). Don’t always expect to know target audience
Problem Four Solution: Are Spine subsystems books or magazines? PDS PSISETP ACF SDS
Solution Four Solution: Design for both species – New XML ITS Applications in which HL7 is used as a transport mechanism (Magazines) can use the New XML ITS to reduce message bloat. Demographics applications like PDS Data translated to own semantics May not be interested in HL7 meta data. Applications that use store and query HL7 (Books) can take full advantage of HL7 specific meta data to aid semantic interoperability. Mainly clinical like PSIS Electronic Transfer of Prescriptions Tend to require semantic interpretation
Problem Five: Typically slow processing of XML Were getting processing of 8 message per second per CPU and still failing response time SLAs or 200ms. Problem complicated by unnecessary spaghetti code. We could have tried to improve the current J2EE code but we were so far behind required performance we realised a paradigm shift was required. Realised that without radical change we would need a new data centre.
Solution Five: Design for XML handling XML Acceleration Devices Fast XML processing Encourages simple design Naturally separates services Also create an architecture focussed on messaging Careful consideration of persistence Achieving throughput of 100-200 transactions per second with significantly lower response times.
Solution Five: Benefits of Appliances Using appliances for accelerating integration and security. Lower cost – Smaller code base, reduced development time, higher performance. Whilst meeting performance and capacity requirements. Service - Simplicity Deployment - Rapid deployment with less effort Flexibility – cross-SPINE support Security – New capability (outbound SSL, DOS protection, more validation)
Endpoint check, Orchestration & Routing, Contract Validation, Message Transformation, Outbound SSL, Accredited System checks De-duplication Dead Letter Administration Retry mechanisms Message Persistence Transport and Routing Conceptual Architecture Endpoint validation check. Orchestration & Routing Contract validation Message transformation Outbound SSL encryption De-duplication Accredited system (Authorisation checks) Messages Persistence Dead Letters Retry Mechanisms Transport and routing Solution Five: Integration Hub Services
Solution Five: Integration Hub Architecture XML Acceleration Device Application Server and Database Query Database or JMS Queue JMS queue or HTTP Realised Architecture XML Accelerator checks and transforms the message. On the outbound channels the SSL acceleration is also provided. Inbound it performs a Endpont check. Trad. Application Server and Database Queries provide duplicate checking, dead letter and retry mechaisms. Oracle Database or JMS Queue provides Messages Persistence JMS queues provide Transport and Routing except for synchronous messaging where this is provided by HTTP.
Summary Problem One: Inflexible wrappers. (HL7v3 tries to force addressing into payload) New Wrappers may address much of this. Problem Two: How to do addressing More guidance Problem Three: Inflexible Interaction Id. (Versioning HL7v3 messages) New XML ITS may address this. Problem Four: Messages were perceived as unnecessarily complicated and verbose New XML ITS Problem Five: Typically slow processing of XML messages (Not specifically an HL7v3 problem). Messaging / SOA focussed architecture