Presentation is loading. Please wait.

Presentation is loading. Please wait.

MARC-HI Everest Framework Enabling RMIM Based Applications Justin Fyfe (Mohawk College)

Similar presentations


Presentation on theme: "MARC-HI Everest Framework Enabling RMIM Based Applications Justin Fyfe (Mohawk College)"— Presentation transcript:

1 MARC-HI Everest Framework Enabling RMIM Based Applications Justin Fyfe (Mohawk College)

2 Agenda Overview Architecture Using Everest Universal Messaging Data types Enhancements Roadmap

3 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

4 History

5 Guiding Principles Quality Performance Intuitiveness / Documentation Flexibility Standards Compliance

6 Documentation

7 ARCHITECTURE

8 10,000 m View Development MARC-HI Everest Canonical Data RIM Graph ITS Graph Transport Canonical Data RIM Graph ITS Graph Transport

9 5,000 m - Everest.NET.NET Framework GPMR Everest Core Library Connectors Formatters WCF MSMQ XML ITS 1.0 DT R1 DT R2 RMIM Structures CDA UV NE2008 UV NE2008 CodeDom

10 5,000 m - Overview jEverest J2SE/J2EE 1.6 Everest Core Library Connectors Formatters Metro / Axis JMS XML ITS 1.0 DT R1 CA UV NE2008 UV NE2008

11 USING EVEREST

12 Optimizer From MIF to Code MIF 2.1.x GPMR C# Java HTML XSL/ XSD COR Repo. COR Repo..DLL.HTM.JAR.XSL /.XSD REST /JSO N.js

13 Graph to RMIMs RMIM Graph Code (Written by Developer) RMIM Graph Code (Written by Developer) Generated DLL Core Library RMIM Objects Data Canonical Data RIM Graph

14 Formatting Objects Canonical Data RIM Graph ITS Graph RMIM Objects XML ITS 1.0 Formatter Datatypes R1 Graph Aide

15 Transporting Objects Canonical Data RIM Graph ITS Graph Transport RMIM Objects WCF Client Connector XML ITS 1.0 Formatter Datatypes R1 Graph Aide 1 1 Web Service

16 One-Way Connectors Sending Connector One Way Transport (ex: Queue / File System) One Way Transport (ex: Queue / File System) Listening Connector Application Code

17 Two-Way Connectors Send / Receive Connector Application Code Send / Receive Connector Application Code

18 UNIVERSAL MESSAGING & CDA

19 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)

20 Patching NE2009/2010 Some MIFs duplicate the “true” option – – Search / replace “true true” with “true” PORP_MT UV04 has invalid Type option – – Replace name=“)” with name=“CS”

21 Interactions in Everest PRPA_IN201305UV02 T: ControlActProcess Message Subject : Subject ControlAct Bind RegistrationEvent BindBind BindBind

22 NE2010 Interaction Issue POIZ_IN070020UV01 T : ControlActProcess Message Bind ImmunizationProfile Bind Subject : Subject ControlAct ParameterList Bind System.Object

23 NE2010 Interaction Issue POIZ_IN070020UV01 T : ControlActProcess Message Bind System.Object When instance of ParameterList When instance of ImmunizationProfile Subject : Subject ControlAct ParameterList : CreateParameterList() SpecialAuthorizationRequest : CreateSpecialAuthorizationRequest() ParameterList : CreateParameterList() SpecialAuthorizationRequest : CreateSpecialAuthorizationRequest() POIZ_IN070020UV01

24 CDA IN EVEREST

25 CDA Support in Everest GPMR 1.1 supports processing of POCD_MTxxxxxx MIFs Everest 1.0 Supports rendering of the ClinicalDocument RMIM structure

26 How we did it NE2010 POCD_RM VSD POCD_RM XML V3 Generator POCD_MT MIFPOCD_MT000040UV.MIF

27 Optimizer How we did it (cont’d) GPMR C# Java.DLL.JAR POCD_MT000040UV.MIFDEFN=IFC … coremifDEFN=RIM … coremifDEFN=VO … coremif

28 DT ENHANCEMENTS

29 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..)

30 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);

31 Operator Example INT zero = 0; REAL pi = Math.PI; TS now = DateTime.Now; PQ day = new PQ(1, “d”); INT integerDiv = 3 / 2; REAL floatDiv = 3 / (REAL)2; TS yesterday = now – day; PQ negation = -day; REAL nullFlavored = pi / zero; NullFlavor nf = (pi / zero).NullFlavor; TS throwsAnException = now – new PQ(3, “ft”); Cast to/from native datatypes Natural operations on datatypes Null flavor rules still apply (nullFlavor = NI) Unit checking is performed

32 Implemented Operators Comparison (, =) – Any PDV where T is IComparable Basic Arithmetic (+, -) – TS, PQ, MO, INT, REAL Arithmetic (*, /) & Unary (-) – PQ, MO, REAL, INT Integer Arithmetic (%, /) & Unary (--, ++) – INT Logic (^, &, |, !) – BL Casting (Implicit / Explicit) – Many of the datatypes support this, many times when ToX or FromX is listed in the Data Types implementation guide.

33 Utility Functions To / from Interval: REAL pi = Math.PI; pi.Precision = 2; IVL piRange = pi.ToIVL(); TS ts2008 = new TS() { Value = “2008” }; IVL range2008 = ts2008.ToIVL(); Low = High = Low = High =

34 Set Utilities Interval IVL ageRange = new IVL ( new PQ(1, “a”), new PQ(3, “a”) ); ageRange.Contains(new PQ(24, ”mo”));

35 Set Utilities Periodic Interval: IVL nineToFive = new IVL ( DateTime.Parse(" :00 AM"), DateTime.Parse(" :00 PM") ); PIVL repeated = new PIVL ( nineToFive, new PQ(1, "wk") ); TS y2kLunch = DateTime.Parse(" :30 AM"); bool isIncluded = repeated.Contains(y2kLunch ); // Returns false

36 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?

37 Example II a = new II(“ ”, “123”) { Use = InstanceIdentifierUse.Business }, b = new II(“ ”, “123”) { Use = InstanceIdentifierUse.Version } bool reference = a == b; bool value = a.Equals(b); bool semantics = a.SemanticEquals(b); False – A is not B False – Use is not equal True – A is equal to B according to Data Type rules.

38 ROADMAP

39 Milestones Q – jEverest CTP (Community Tech. Preview) – Formatters – RMIM Structures – GPMR Patches Q – Release Candidate 3 – Everest.NET: CDA Support Datatypes R2 Support – jEverest : Connectors Q – Release of Everest 1.0 – jEverest + Everest + GPMR Bundles – Documentation for jEverest

40 Everest 1.0 Goals jEverest – Java Version of Everest – XML ITS 1.0 and Datatypes R1 – File and SOAP Connectors (Metro / Axis undecided yet) Support for NE2010 CDA Support for Everest DataTypes R2 Support for.NET version

41 Development Roadmap

42 Questions


Download ppt "MARC-HI Everest Framework Enabling RMIM Based Applications Justin Fyfe (Mohawk College)"

Similar presentations


Ads by Google