+ All Categories
Transcript
Page 1: MARC-HI Everest Framework

MARC-HI Everest Framework

Enabling RMIM Based ApplicationsJustin Fyfe (Mohawk College)

Page 2: MARC-HI Everest Framework

Agenda

• Overview• Architecture• Using Everest• Universal Messaging• Data types Enhancements• Roadmap

Page 3: MARC-HI Everest Framework

Overview

• HL7v3 Messaging API– Object representation of structures within MIFs– Improved v3 Experience• Extensive documentation in developer’s IDE• Value sets represented as business names• Parameterized constructors, operators and helper

functions

– Flexible ITS and Transport Channel architecture

Page 4: MARC-HI Everest Framework

Guiding Principles

Quality

Performance

Intuitiveness / Documentation

Flexibility

Standards Compliance

Page 5: MARC-HI Everest Framework

Documentation

Page 6: MARC-HI Everest Framework

ARCHITECTURE

Page 7: MARC-HI Everest Framework

10,000 m View

Development

MARC-HI Everest

Canonical Data

RIM Graph

ITS Graph

Transport

Canonical Data

RIM Graph

ITS Graph

Transport

Page 8: MARC-HI Everest Framework

5,000 m - Everest .NET

.NET Framework

GPMREverest Core Library

Connectors Formatters

WCF MSMQ

XML ITS 1.0 DT R1 DT R2

RMIM Structures

CDA UVNE2008CodeDom

Page 9: MARC-HI Everest Framework

5,000 m - Overview jEverest

J2SE/J2EE 1.6

Everest Core Library

Connectors Formatters

Metro / Axis JMS

XML ITS 1.0 DT R1

CA 2.04.02

UVNE2008

Page 10: MARC-HI Everest Framework

Optimizer

From MIF to Code

MIF 2.1.x

GPMR

C#

Java

HTML

XSL/XSD

CORRepo.

.DLL

.HTM

.JAR

.XSL / .XSD

REST/JSON .js

Page 11: MARC-HI Everest Framework

Graph to RMIMs

RMIM Graph Code(Written by Developer)

Generated DLL

Core Library

RMIM Objects

Data

Canonical Data

RIM Graph

Page 12: MARC-HI Everest Framework

Formatting Objects

Canonical Data

RIM Graph

ITS GraphRMIM

Objects XML ITS 1.0 Formatter

Datatypes R1 Graph Aide

<PRPA_IN201305UV02 …<id root=“1.2.3.456<creationTime va…

Page 13: MARC-HI Everest Framework

Transporting Objects

Canonical Data

RIM Graph

ITS Graph

Transport

RMIM Objects WCF Client Connector

XML ITS 1.0 FormatterDatatypes R1 Graph Aide

1

Web Service

Page 14: MARC-HI Everest Framework

UNIVERSAL MESSAGING & CDA

Page 15: MARC-HI Everest Framework

UV Support

• NE2008 (since GPMR 0.9.x)– *_HD*.*mif files should be removed

• NE2009 / NE2010– HTML renderer works on Patched MIF files in quirks

mode– Missing Several CMET definitions in DEFN IFC file– Templating issue with several Interactions

• CDAr2 (NE2010) (since GPMR 1.1.x)

Page 16: MARC-HI Everest Framework

Patching NE2009/2010

• Some MIFs duplicate the “true” option– <mif:class name="GuarantorChoice"

isAbstract="true true">– Search / replace “true true” with “true”

• PORP_MT0500032UV04 has invalid Type option– <mif:type name=")"/>– Replace name=“)” with name=“CS”

Page 17: MARC-HI Everest Framework

CDA IN EVEREST

Page 18: MARC-HI Everest Framework

CDA Support in Everest

• GPMR 1.1 supports processing of POCD_MTxxxxxx MIFs

• Everest 1.0 Supports rendering of the ClinicalDocument RMIM structure

Page 19: MARC-HI Everest Framework

DT ENHANCEMENTS

Page 20: MARC-HI Everest Framework

Operators

• HL7v3 data types should behave like native primitives when not null-Flavored– INT should behave like int, long, uint– REAL should behave like float, double– BL should behave like bool

• Operator overloading allows us to achieve this:– Casting to/from native types– Adding nullFlavors– Providing native operations (+, -, /, *, %, <=, >=, etc..)

Page 21: MARC-HI Everest Framework

Behaving Like Native Types

for (int i = 0; i < 10; i++) if ((i % 2).Equals(1)) Console.WriteLine("{0} odd", i);

for (INT i = 0; i < 10; i++) if ((i % 2).Equals(1)) Console.WriteLine("{0} odd", i);

Page 22: MARC-HI Everest Framework

Set Utilities

• IntervalIVL<PQ> ageRange = new IVL<PQ>(

new PQ(1, “a”),new PQ(3, “a”)

);ageRange.Contains(new PQ(24, ”mo”));

Page 23: MARC-HI Everest Framework

Set Utilities

• Periodic Interval:IVL<TS> nineToFive = new IVL<TS>( DateTime.Parse("2011-09-02 09:00 AM"),

DateTime.Parse("2011-09-02 05:00 PM") ); PIVL<TS> repeated = new PIVL<TS>(

nineToFive, new PQ(1, "wk")

); TS y2kLunch = DateTime.Parse("2000-01-01 11:30 AM"); bool isIncluded = repeated.Contains(y2kLunch ); // Returns false

Page 24: MARC-HI Everest Framework

Three levels of Equality

• Reference Equals (default == operation)– Do the two objects represent the same reference in

memory

• Value Equality (via .Equals())– Do all of the properties in A have the same content as all

the properties in B?

• Semantically Equal (via .SemanticEquals())– Are the two objects equal according to data types guide?

Page 25: MARC-HI Everest Framework

ROADMAP

Page 26: MARC-HI Everest Framework

Milestones• Q4 2011 – jEverest CTP (Community Tech. Preview)

– Formatters– RMIM Structures – GPMR Patches

• Q1 2012 – Release Candidate 3– Everest .NET:

• CDA Support• Datatypes R2 Support

– jEverest :• Connectors

• Q2 2012 – Release of Everest 1.0– jEverest + Everest + GPMR Bundles– Documentation for jEverest

Page 27: MARC-HI Everest Framework

Questions

• http://everest.marc-hi.ca


Top Related