/everest

The Everest Framework is designed to ease the creation, formatting, and transmission of HL7v3 and CDA structures with remote systems.

Primary LanguageC#Apache License 2.0Apache-2.0

Everest

In short, the Everest Framework is designed to ease the creation, formatting, and transmission of HL7v3 structures with remote systems. 

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
  • R02.04.01
  • R02.04.02
  • R02.04.03


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.
Architecture

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.

framework diagram

Continuous Integration Status:

You can view the CI build results of Everest here: http://ci-services.fyfesoftware.ca:8081/job/Everest%20Community%20Build/