The implementation process is based on a model-driven approach. (A diagram of the process can be seen below.) The FHIM model is the basis for generating:
- Ballot documentation
- Software libraries for creating/parsing/validating constraints
- Reference implementations
- Implementation guides (IG) based on interoperability use cases
- One implementation use case can be used to create multiple platform-specific implementations, such as HL7 FHIR, CDA and NIEM
The implementation process consists of two major packages - the use case for interoperability and a use case specific UML profile model. The detailed steps are:
1. Use Case Package
- Define the interoperability use case descriptions including pre- and post-conditions for information exchanges.
- The use case may identify specific types of business objects that are involved in the exchange (e.g. Patient, Encounter, Sample, Order, and Observation Result).
- Identify human and system actors involved in the information exchange. The system actors may represent specific types of systems. An EHR system may play one or more roles in an interoperability use case.
2. UML Profile Model Package
- Composition of FHIM classes includes:
- Focal class defining the main point of interest or the subject of the interoperability use case (e.g. Patient, Encounter, Sample, Order, Observation Result).
- Additional classes that define ancillary interoperability requirements to the focal objects (e.g. target records, author, custodian, ordering provider, etc.)
- Annotations for artifact generation such as CDA Template IDs. This tooling guidance is added to the original FHIM classes for consistency of artifact generation.
- Define additional constraints to the classes, associations and attributes in the model including:
- Semantic clarifications
- Cardinality constraints for associations and attributes
- Usage/mandatory constraints for associations and attributes
- Terminology and fixed value constraints (these constraints apply to attributes only)
The end result of the implementation process is an implementation guide and corresponding software for use by implementers to execute and test their information exchange implementations.