What is the MARC-HI Everest Framework?
In short, the Everest Framework is designed to ease the creation, formatting, and transmission of HL7v3 structures with remote systems.
Java Edition News
The Java edition of Everest is now available at Everest Framework Java Edition page.
The Java edition is currently in an experimental state, and further testing is being performed on it to ensure quality.
The "framework" provides a series of consistent, well documented components that, when used together, provide a flexible mechanism for supporting HL7v3 standards within application. Through a combination of automatically generated code and carefully constructed handwritten modules, Everest has the ability to
serialize, validate, and transmit structures. Everest comes bundled with basic serialization capabilities for:
- HL7 Clinical Document Architecture r2
- HL7v3 Messaging
- Normative Edition 2008
- Normative Edition 2010
- pan-Canadian Messaging Specifications
The serialization assemblies bundled with Everest represent the structures contained within the MIF files bundled with documentation (where license permits), functionality (validation, casting, etc.) and structure meta-data. Additional standards or documentation for the bundled DLLs can be generated by processing Model Interchange Format (MIF) files (version 2.1.2, 2.1.3, 2.1.4, 2.1.5 and 2.1.6) using either the GPMR or GPMR Wizard tools bundled with the framework. The following (additional) standards are known to work with Everest but are not included:
- pan-Canadian CeRX 4.3 messaging
- Universal Normative Edition 2009
Everest currently supports serializing structures to/from the following formats:
- XML ITS 1.0
- HL7v3 XML Data Types R1 (UV and CA extensions)
- HL7v3 XML Data Types R2
- Binary format
Everest currently supports transporting structures to/from other systems using the following connectors:
- Windows Communication Foundation (Server/Client mode) (basicHttpBinding, wsHttpBinding, ws2007HttpBinding, netTcpBinding)
- File Systems (Server/Client)
- Msmq (Publish only)
The pillars of Everest are:
- Intuitiveness: All components within Everest are designed to be intuitive to developers. Great care has been taken to reduce the complexity of the Framework and allow developers to focus on HL7v3 messaging
- Standards Compliance: Being a standards-based framework, one of the foundational pieces is standards compliance. The Everest framework is more than just a serialization engine; it will generate messages, transport them, and validate instances in a standards-compliant manner.
- Quality: Everest code is held to the highest standard of quality in terms of regression testing and documentation. All changes made to the framework are reviewed for their quality and are subject to over 8,000 tests.
- Performance: Everest has been designed with long-term performance in mind. Many of the methods within Everest (especially formatting) have the ability to "learn" and become faster the more they are used.
- Flexibility: Everest has been designed to be flexible in the manner that allows it to support new HL7v3 standards.
The MARC-HI Everest Framework is modeled using a very loosely coupled architecture. This design allows application developers to program against one set of HL7v3 models, and serialize/de-serialize to many different Implementable Technology Specification (ITS) formats. The MARC-HI Everest Framework also allows applications to consume or produce these models using a wide array of transport mechanisms.
This flexible architecture ensures that the internal canonical data of your application is safely insulated from changes in the HL7v3 ITS, or transport specifications.
Everest 1.0 is the current stable version of Everest, below is our roadmap for Everest 1.5, slated for release mid 2013:
- JSON Formatters
- REST Based Connector
- Improved IListenWait and IListenWaitRespond connector experience via "service contract" pattern (closer to Wcf pattern)
Everest source code is now available via SVN. Everest source code can be retrieved using the following commands:
The trunk of the Everest project. Will always contain a prestine copy of the latest Everest source code (including new features) that are guaranteed to pass full regression and build tests.
svn co https://fisheye.marc-hi.ca/svn/Everest/trunk --username=guest
Everest 1.2 (Final) Branch
Contains the most recent copy of the 1.2 version of Everest.
svn co https://fisheye.marc-hi.ca/svn/Everest/branches/1.2 --username=guest
Everest 1.0 Stable
Contains the most recent copy of the Everest 1.0 source code
svn co https://fisheye.marc-hi.ca/svn/Everest/branches/1.0 --username=guest