Presentation is loading. Please wait.

Presentation is loading. Please wait.

Everest 1.2 Update – Progress – New Features Justin Fyfe Duane Bender January 2013 WGM.

Similar presentations


Presentation on theme: "Everest 1.2 Update – Progress – New Features Justin Fyfe Duane Bender January 2013 WGM."— Presentation transcript:

1 Everest 1.2 Update – Progress – New Features Justin Fyfe Duane Bender January 2013 WGM

2 Agenda Overview News New Features –.NET Version –Silverlight and Windows Phone 7/8 Version –Java Version Roadmap

3 A (brief) History Everest: –Started in 2008 –An HL7v3 toolkit for writing Windows applications –Code generated from MIF files –Traditionally, focused on Microsoft.NET platform Tight integration with WCF Integrates with Visual Studio –Open Source (Apache 2)

4 News : Everest Book Complete Development guide Covers 1.0 eBook and Hardcover Free for contributors

5 News : Public SVN Everest and jEverest have publicly accessible SVN repositories –Readonly anonymous access –Patches can be submitted by anyone to justin.fyfe1@mohawkcollege.ca –Serious contributors can be given commit access

6 .NET EDITION New Features

7 Better integration with WCF Better support for accessing SOAP headers from messages receiveResult.ResponseHeaders = new System.ServiceModel.Channels.MessageHeaders (receiveResult.Headers.MessageVersion); receiveResult.ResponseHeaders.Add(MessageHeader.CreateHeader("myHeader", "urn:my-ns:com", "Value"));

8 Better Integration with WCF Creation of a custom binding provider for existing WCF services –EverestSerializerFormat attribute replaces standard XmlSerializerFormat attribute on service contract [EverestSerializerFormat(Formatter = typeof(XmlIts1Formatter), GraphAide = typeof(DatatypeFormatter), ValidateConformance = false)] [ServiceContract(Namespace="urn:hl7-org:v3")] public interface IServiceContract { /// /// Do something /// [OperationContract(Action="*")] IGraphableAnything(IGraphable request); }

9 Other Features Detailed validation errors/warnings for data types Over 60 defects were corrected Enhanced documentation on data types classes Formatter performance enhancements

10 EVEREST COMPACT VERSION New Features

11 Compact Edition? Optimized for low resource execution environments –Phones (Windows Phone 7/8) –Windows RT Devices (ARM based Windows 8) –Silverlight (Browser based execution)

12 HL7v3 from your mobile

13 Supported Features Full data types support (including behaviors) Serialization support for –XML ITS1 and Data Types R1 (R2 on roadmap) –Tested with NE2008, NE2010, and CA standards Connectivity –WCF (SOAP 1.1/1.2) over http/https Limitations –Reflection formatter only Can use a pre-generation tool to make this faster

14 Why? Mobile apps can benefit from integration using HL7v3 –FHIR is not yet ready –HL7v3 registries/repositories have lots of information that can be leveraged on mobile –PIX/PDQ HL7v3 can be useful in mobile apps Especially when integrating with XDS on mobile platforms –HL7v3 is preferable over HL7v2.x on mobile platforms as WS-* can easily be implemented on mobile platforms using WCF. A debate between myself and a coworker in our lab … an “I’ll show you” project

15 XML/v3 is CPU intensive

16 XML/v3 Wastes Bandwidth

17 JAVA VERSION New Features

18 The Java Version Finally, after 3 years Separate code base from.NET version –Leverages Java patterns –Code generated from MIF from GPMR –Tested with NE2008, NE2010, CA Technical challenges with Java –Lack of reified generics –No closures / lambda expressions

19 Adaptations from.NET Java INT ten = new INT(10); for(INT i = new INT(0); i.compareTo(ten) < 0; i = i.increment()) System.out.println(i.toString()); TS now = TS.now(); System.out.println(now.getValue()); PQ day = new PQ(BigDecimal.ONE, "d"); TS yesterday = now.subtract(day); System.out.println(yesterday.getValue()); ST str = new ST("Justin"); TS today = TS.now(); PQ day = new PQ(BigDecimal.ONE, "d"), hours = new PQ(BigDecimal.valueOf(3), "h"); PQ dayLessHours = day.subtract(hours); INT rad = new INT(3); REAL pi = new REAL(Math.PI); REAL area = pi.multiply(new REAL(Math.pow(rad.toDouble(), 2)));.NET for (INT i = 0; i < 10; i++) Console.WriteLine(i); TS now = DateTime.Now; Console.WriteLine(now.Value); TS yesterday = now - "1 d"; Console.WriteLine(yesterday.Value); ST str = "Justin"; TS today = DateTime.Today; PQ day = "1 d", hours = “3 h"; PQ dayLessHours = day - hours; INT rad = 3; REAL pi = Math.PI; REAL area = pi * Math.Pow((double)rad, 2);

20 Constructing an Instance // Quickly create an instance MCCI_IN000002CA instance = new MCCI_IN000002CA( new II(UUID.randomUUID()), TS.now(), ResponseMode.Immediate, MCCI_IN000002CA.defaultInteractionId(), MCCI_IN000002CA.defaultProfileId(), ProcessingID.Production, AcknowledgementCondition.Never ); // Format try(XmlIts1Formatter fmtr = new XmlIts1Formatter()) { // Add a helper formatter for R1 fmtr.getGraphAides().add(new DatatypeFormatter()); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); IFormatterGraphResult graphResult = fmtr.graph(outStream, instance); // Output validation errors for(IResultDetail detail : graphResult.getDetails()) System.out.printf("%s : %s", detail.getType(), detail.getMessage()); } catch(Exception e) { e.printStackTrace(); }

21 Sending/Receiving v3 Everest integrates with Spring one of two ways: –Using SpringClientConnector Similar to the WcfClientConnector in.NET –Using EverestMarshaller / EverestUnmarshaller in AppContext xml configuration

22 Feature Comparison Java.NETCompact Data TypesStructure + Behaviors ǂ Behaviors + Structure Serialization DT R1XXX DT R2X XML ITS1ReflectionReflection + CodeDom + Pre-Generated Reflection + Pre- Generated Connectivity SOAPSpringWCF FilesX MQX ǂ - Not fully ported

23 Version 1.2 “Todo” List Unit Testing (Jan – Feb 2013) –Currently one student in charge of porting unit tests (help is appreciated) Spring Connector –Currently needs testing and additional development work. Documentation & Clean-up

24 Roadmap If interest continues development will continue on Everest –1.4 (Q1 2014) Data Types R2 for Java and Compact version CDA/XDS Connectors (experimentation required) MEX support (for WCF services) and WSDL import functionality (map XMLSerializer to Everest classes) JSON Formatter Android version of jEverest

25 More Info http://everest.marc-hi.ca SVN: –https://fisheye.marc-hi.ca/svn/Everesthttps://fisheye.marc-hi.ca/svn/Everest –https://fisheye.marc-hi.ca/svn/jEveresthttps://fisheye.marc-hi.ca/svn/jEverest –UN: Guest


Download ppt "Everest 1.2 Update – Progress – New Features Justin Fyfe Duane Bender January 2013 WGM."

Similar presentations


Ads by Google