FACTORIES Orchestration Legal & Organizational Specifications Semantic Technical Testing Operations Implement planned components Plan developments under Project specific branches Stork 2.0 Trillium Bridge … e.SENS Make branches re-converge after validation, integration, testing, into formal main releases Relation with EC DG-CONNECT, DG-SANCO (DG-HELTH), DG-DIGIT
OpenNCP 18-09-2018 OpenNCP
open : engaging : evolving : credible 18-09-2018 OpenNCP Community open : engaging : evolving : credible
OpenNCP Community 18-09-2018 implementation story OpenNCP
18-09-2018 ENABLE Healthcare cross border services
epSOS - Cross Border Health Services OpenNCP Community 18-09-2018 epSOS - Cross Border Health Services Patient Summary (PS) ePrescription / eDispensation (eP/eD) Patient Access (PAC) Health Care Encounter Report (HCER) Medication Related Overview (MRO)
epSOS project Original Idea Recognized outcome Actions taken OpenNCP Community 18-09-2018 epSOS project Original Idea Limit project results to specifications Leave implementation to PNs Recognized outcome Feasibility of achieving interoperability between PNs was very low PNs commitment with specs was low Actions taken In 2010, it was decided to engage a consortium to develop a reference implementation
Reference Implementations OpenNCP Community 18-09-2018 Reference Implementations 1st implementation - epSOS induced Based on Proprietary software (Fraunhofer, Elga and Tiani) 2nd implementation – country independent initiative epSOS open common components (SRDC, from Turkey) 3rd implementation (OpenNCP) - epSOS induced Full set of open source components ready to reuse As a bundle or as components With a supporting open community FET was an epSOS induced development for epSOS, while the SRDC development is an independent commercial development primarily for one country, while the OpenNCP is an epSOS induced development for epSOS and beyond. Yes, they can all be considered reference implementation, but there is more to it.
OSS Reference Implementation OpenNCP Community 18-09-2018 OSS Reference Implementation Open Source Software (OSS) source code made available, providing the rights: to use to study to change to distribute very often developed in a public, collaborative manner
OpenNCP Community 18-09-2018 community OpenNCP
OpenNCP Community 18-09-2018 OpenNCP
OpenNCP Community 18-09-2018 OpenNCP Vision ...design and develop a set of Open Source Components (OpenNCP) that can be adopted by Participating Nation, to build their local implementation of the epSOS NCP.
OpenNCP Community 18-09-2018 NCP Common Component Architecture
Motivation and Culture OpenNCP Community 18-09-2018 Motivation and Culture Skills and Expertise Willing People Common needs Community
OpenNCP Community 18-09-2018 OpenNCP Community Open group of people orchestrated by an agile software development methodology conducting effort on designing, coding, testing and delivering OpenNCP technology
Adopted by 14 of epSOS Countries OpenNCP Community 18-09-2018 Since 2012 ~ meetings (tconf or f2f) 200 Software Components 21 Validated by IHE: 3 PAT & 4 PPTs 7 epSOS I & II services available epSOS I/II Adopted by 14 of epSOS Countries
Usage and Contribution OpenNCP Community 18-09-2018 Usage and Contribution USAGE 14 MS CONTRIB. 3 MS Malta AT, CH, PT, EE, FI, GR, HU, IT, SP, SE, SI, LU, HR, MT GE, DK, TR 17 – Contributing Countries // 14 USING contries 27 - Contributors (developers, consultants, adopters) 3 - Spanned timezones 24- Source repositories
Contributions Nature Quality Assurance: CI Actors and Relations OpenNCP Community 18-09-2018 Contributions Nature DEVELOPERS CODE CONTINUOUS INTEGRATION LOCAL DEPLOY / DEVELOP. Quality Assurance: CI Actors and Relations ARTIFACTS ADOPTERS
OpenNCP Community Collaborative Design Technology Engineering 18-09-2018 OpenNCP Community Collaborative Design Technology Engineering Support & Maintenance Knowledge Sharing open : engaging : evolving : credible
OpenNCP Community 18-09-2018 architecture OpenNCP
Part 1: Technical architecture 18-09-2018 Part 1: Technical architecture
What services are supported? epSOS 1 Patient Summary (PS) – fetch a summary of person’s vaccinations, allergies, adverse reactions, immunizations, past illnesses, medical devices, medication summary, etc. etc. Electronic Prescription (eP) – fetch electronic prescriptions, dispense them, send dispensation information back to patient’s home country epSOS 2 Healthcare Encounter Report (HCER) – after a healthcare encounter, submit new information to patient’s home country Medication Related Overview (MRO) – fetch history of medication use (subset of a patient summary) Patient Access (PAC) – show Patient Summary data to the patient in a chosen language Something new Trillium Bridge: Support of some use cases, demoed here in Athens. Export translated patient summary from the PAC view. Load a document into the portal and translate it into a chosen language. 18-09-2018
What IHE profiles are supported? 18-09-2018 Communication between NCPs: XCPD Cross-Community Patient Discovery Patient identification XCA Cross-Community Access Fetch a list of available documents Retrieve a certain document XDR Cross-enterprise Document Reliable Interchange Submit a document to the patient’s home country Security and logging: ATNA Audit Trail and Node Authentication Write audit logs about every transaction. A web interface for access to logs is included XUA++ Cross-Enterprise User Assertion, with extensions Send healthcare professional authentication information and treatment relationship confirmation to patient’s home country, along with requests for data Two different assertions, something not commonly supported In documents and server infrastructure other profiles may be also supported (e.g. BPPC, CT). However, for OpenNCP they are “transparent”.
OpenNCP: overall architecture 18-09-2018 NCP Country B role NCP Country A role XCPD client XCPD server epSOS server APIs Patient search National interfaces or APIs National patient ID infrastructure epSOS client connector Portal B or another client XCA client XCA server PS, eP search National PS infrastructure eD, Consent, HCER submit XDR client XDR server National eP/eD infrastructure National HCP ID infrastructure Patient authentication infastructure (for PAC service) Security manager Security manager Consent manager Audit record repository National consent infrastructure Audit manager Audit manager Audit record repository eADC eADC Transformation modules Transformation modules TM TSAM LTR TM TSAM LTR Configuration and maintenance Configuration and maintenance Terminology sync mgr Config mgr Config mgr Terminology sync mgr epSOS central services Core component Config server TM = transformation manager TSAM = Transformation Service Access Manager LTR = Local Terminology Repository eADC = epSOS Automatic Data Collector Terminology server National component
Example: Request a document and send it from A to B Country B Country A TRC-STS Assertion validator HCP data, patient ID TRC assertion OK or error description Assertion XCA Retrieve request with HCP ID and TRC assertions fetchDoc() fetchDoc() Portal B epSOS XCA protocol terminator (client) epSOS XCA protocol terminator (server) National Connector HCP authenticator Friendly Friendly Pivot Audit log Audit log Pivot Friendly Friendly Pivot Audit log Audit log writer Audit log writer Transformation manager Transformation manager * Some components missing from the figure: eADC, consent manager, config manager Friendly Document in language A or B HCP = Healthcare professional TRC = Treatment Relationship Confirmation STS = Secure Token Service Pivot Document in English
OpenNCP: a library or an out-of-the-box product? Both Offers a ready-to-deploy NCP solution, with clear installation instructions Offers a set of components which can be used separately A blueprint for the use of certain external OSS components
Support of IHE profiles Implementation of IHE profiles is complete for the epSOS use cases For other use cases certain modifications or additions may be required. Clear trade-off: Jack of all trades vs. Master of own profession. OpenNCP is more for the latter. National connectors may affect compatibility, and they often do Attributes in metadata originating from the National Infrastructures are not always IHE-compatible. Responsibility is with epSOS PNs. OpenNCP is quick and adaptive Compatibility is a moving target. Requirements keep changing, and profiles/bindings do change with them. Minor changes may be crucial. IHE validators keep getting updated, and generally do a very good job. Countries which used OpenNCP could easily modify the implementation themselves, and received constant support from the OpenNCP community.
What a PN must do, except installing OpenNCP Develop a national connector (examples supplied) Communication with the national infrastructure Generation of epSOS friendly documents, processing incoming documents Develop a consent management service and a policy manager Implement a consent and policy manager, to replace the default (supplied) one Develop a service for citizens, to give/revoke consents Extend the portal (epsos-web or OpenNCP portal) Develop an HCP authentication module, to replace the default one Patient authentication for the PAC service May involve communication with other national services (e.g. in Finland, the national pharmacy register and the national professional rights register) Setting OpenNCP is perhaps the easiest part An estimate for Finland: 25 % of epSOS work international, 75 % national, despite (or maybe due to) a well-established and stable national infrastructure Easy to do a demo or a small pilot, hard to make a solution to cover a full nation. The same 25/75 % rule is an optimistic guesstimate. All challenges/obstacles are known only after all of them have been cleared.
Part 2: Use of OpenNCP in a real pilot 18-09-2018 Part 2: Use of OpenNCP in a real pilot
Experiences from the use in a real pilot environment Stable “Shoot and forget” – months of uptime both in PPT and in production Survived changes in the NI without restarts. Survived changes in background database management systems without restarts. Somewhat fragmented SOA has had a clear impact on the architecture. Good for design and stability, but not always easy for setting up the infrastructure. Firewalls are abundant in National eHealth systems. “Have we opened all what is required, but not more?” Secure? OpenNCP itself (+epsos-web) has been security tested successfully National extensions can make a big difference Network infrastructure and maintenance processes can make a big difference Check your national logging requirements
What have you learned? OpenNCP is an IHE-compliant software pack Implements a number of IHE profiles + document transformations Implementations often epSOS-specific, but may be extended/modified (open source!) Can be used for communication between nations, but also for other needs OpenNCP is stable and quick to set up The core is rather compact and easy to study and understand All PNs that use OpenNCP could develop national connectors within reasonable time, with only little support from the OpenNCP community Has been running in production since summer 2013, and in pre-pilot testing since summer 2012 Users need more than only OpenNCP Many components have too much national flavor, out of the scope of OpenNCP Setting up software is straightforward, changing organizational processes, laws or people’s minds much more difficult P.S. With OpenNCP, we succeeded, hope this means something.
OpenNCP Community 18-09-2018 tooling OpenNCP
Team Organization INDUSTRY Others TEAM TCONFS 18-09-2018 Team Organization Others INDUSTRY TEAM TCONFS AWESOME TECHNICAL DEBATES Epic DEVELOPMENT ITERATIONS STRONG SENSE OF COOPERATION Ultra-fast SUPPORT This is how we able to work as Community! PN RESOURCES Others
Methodologies We are Agile! SCRUM BASED DEVELOPMENT KANBAN SUPPORT 18-09-2018 Methodologies We are Agile! DEVELOPMENT SCRUM BASED Development iterations organized in SPRINTS Required features represented in BACKLOG items WORK-ITEMS produced after each iteration TODO, IN PROGRESS, QUALITY CONTROL and DONE are the tasks / issue available statuses SUPPORT KANBAN BASED Representation of pending issues in a easy-to-check board perspective; Each issue has a card assigned; Each card navigates across multiple swimlanes, representing the current status; Each card also contain information about how long they are present in the board; Multiple levels of priority are available for each issue; Issue solving is not confined to sprint duration (vs SCRUM); Set in place since the very beginning of OpenNCP!
Development and Support Management Continuous Integration 18-09-2018 Used Tools Development and Support Management Knowledge Sharing Code Management Continuous Integration Atlassian supports actively OPEN-SOURCE initiatives by providing free-of-charge tools at on-demand platform; All the stored information is OPEN for everyone to access; We are now migrating code repositories from Google Code to Bitbucket; OpenNCP also uses Jenkins for Continuous Integration and delivery;
Development Management 18-09-2018 Development Management Landing Page Assigned issues Graphical statistics Updates stream JIRA customized landing page with useful information about projects and development progress; The OpenNCP contributor can easily check the assigned issues and the latest updates;
Labeling makes easy to understand 18-09-2018 Planning Development Development Board I Sprints planning Grouping by epics Labeling makes easy to understand This is how we plan the development work Product owners, scrum masters and developers plan the development sprints, including ahead ones; Grouping by epics makes it easier to focus on goals;
Resumed task information 18-09-2018 Tracking Development Development Board II Status swimlanes Quick filters Resumed task information ...and how we track the performed work Scrum board, where developers can check their assigned tasks; Configured Quick filters makes it easier to focus on targets; This board handles only one sprint at the time;
Indication about issue time 18-09-2018 Tracking Support Support Board Status swimlanes Indication about issue time Priority grouping JIRA Kanban view of support incidences; The developers and reporters are able to track the progress of the issues; The issues stay on the board until they are solved;
Knowledge Sharing Past events Quick access to relevant topics 18-09-2018 Knowledge Sharing Landing Page Past events Quick access to relevant topics Activity Stream Quick access to releases and component specifications Landing page of Knowledge Sharing platform; Tries to concentrate different kinds of pointers to information stored on sub-pages; Entry point for OpenNCP Documentation;
Knowledge Sharing Diagrams Code Snippets Usage information 18-09-2018 Knowledge Sharing Specification Page Diagrams Code Snippets Usage information Specification pages contain details about the implementation of the components; Provide information on how to integrate and use the components; Keep track of the component versions;
Knowledge Sharing Please jump in and explore it! Meeting Minutes 18-09-2018 Knowledge Sharing Meeting Minutes Installation Manuals Development Topics Event Pages Please jump in and explore it!
Code Management Git repositories Commit history 18-09-2018 Code Management Git repositories Commit history First selected code hosting solution was Google Code, as it was free and open; It fulfills all the requirements needed until this moment; Additional requirements in the present pushed the migration to a more capable platform;
Code Management Git repositories Commit history Code Reviewing 18-09-2018 Code Management Git repositories Commit history Code Reviewing The Bitbucket solution provides all the previous functionality; It also allows code reviewing mechanisms, with pull requests; All the JIRA and Confluence users are also integrated, and other information as well;
18-09-2018 Coding Culture GIT FLOW Model is used for branching, versioning and development management Semantic Versioning is used as version scheme We always try to document our work, by relating the tasks with the performed work. And that includes additional explanations, if necessary. Maven – main reasons: ease of code distribution, ease of inter-component version management and ease of build, test and release/publication processes. Git - facilitate the distributed and non-sequential nature of development, ensure that all contributions would have equal footing in the repository, the de-centralized and distributed version control system git Semantic Versioning has a well-defined set of rules describing which types of code changes warrants which types of version number changes. Cont. Int server furthermore ensure the publication of development snapshots, such that new developers are always able to work on the newest versions of the code.
Continuous Integration w/ execution information 18-09-2018 Quality Assurance Continuous Integration Continuous Delivery List of Jobs w/ execution information Code Quality Integration Testing Continuous Delivery
Collaborative platform created by the European Commission 18-09-2018 Tools Publishing Framework Collaborative platform created by the European Commission Support open source development work done by government agencies in Europe Tool JoinUp Location https://joinup.ec.europa.eu/software/ecc/home
Other Used Technologies Web-Service Framework 18-09-2018 Other Used Technologies Programming Language Web-Service Framework Build Framework Versioning Scheme Maven – main reasons: ease of code distribution, ease of inter-component version management and ease of build, test and release/publication processes. Git - facilitate the distributed and non-sequential nature of development, ensure that all contributions would have equal footing in the repository, the de-centralized and distributed version control system git Semantic Versioning has a well-defined set of rules describing which types of code changes warrants which types of version number changes. Cont. Int server furthermore ensure the publication of development snapshots, such that new developers are always able to work on the newest versions of the code. Licensing Scheme
Integration and Testing Arrangements 18-09-2018 epSOS Industry Team and OpenNCP Community Workshop Integration and Testing Arrangements
Quality Assurance: Unit Tests 18-09-2018 Integration and Testing Quality Assurance: Unit Tests Unit Testing is also used in several components in the OpenNCP (e.g. Audit Manager, Transformation Manager); The unit tests coverage is expected to increase, as new developments are performed and the usage of OpenNCP components is more widespread; Test Definitionat Knowledge Base
Integration and Testing Continuous Integration Actors and Relations 18-09-2018 Integration and Testing Code Repository Pull Source-code Pull/Push Source-code Contribution Local development Environment Continuous Integration Environment Integration Testing Environment Pull dependency binaries Pull dependency binaries Adoption Artifacts Repository Push dependency binaries Continuous Integration Actors and Relations
Integration Testing Scheme 18-09-2018 Integration and Testing Test Classes Artifact To Test Mocked Information NCP-A Test Client (Simulates NCP-B) NCP-A Mocked National Connector Clients simulate both Portal and NCP-A, with hard-coded messages, according to each test. Mocked information is used to perform the tests. NCP-B Test Client (Simulates Portal) NCP-B All this orchestration is made possible with: NCP-B Artifact is tested using the previously produced NCP-A Artifact. Integration Testing Scheme
Integration and Testing 18-09-2018 Integration and Testing OpenNCP Integration Testing Assertions HL7v3 IHE Remote Validation Services are used during integration testing, within Jenkins pipelines. Audit Messages Assertions Assertions XD* CDA PDF Remote Validation Service Invocation IHE Validation Services This is the output we see on our CI environment This features can also be used by PNs, on their national environments. Integration Testing: IHE Remote Validation Services
OpenNCP Community 18-09-2018 Lessons Learnt OpenNCP
Lessons Learnt The future of the OpenNCP OpenNCP Community 18-09-2018 Lessons Learnt The future of the OpenNCP depends on the community sustainability Testing, Validation and Adoption lead to technology maturity assurance PNs MUST acknowledge Willingness and Commitment to participate and autonomy to maintain local services We envision our work as FOUNDATIONAL and may empower future eHealth initiatives