1 / 25

Everest 1.2 Update – Progress – New Features

Everest 1.2 Update – Progress – New Features. Justin Fyfe Duane Bender January 2013 WGM. Agenda. Overview News New Features .NET Version Silverlight and Windows Phone 7/8 Version Java Version Roadmap. A (brief) History. Everest: Started in 2008

donnan
Download Presentation

Everest 1.2 Update – Progress – New Features

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Everest 1.2Update – 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. New Features .NET Edition

  7. Better integration with WCF • Better support for accessing SOAP headers from messages receiveResult.ResponseHeaders = newSystem.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")]publicinterfaceIServiceContract{ ///<summary> /// Do something ///</summary> [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. New Features Everest Compact Version

  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. New Features Java version

  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 .NET INT ten = new INT(10); for(INT i = new INT(0); i.compareTo(ten) < 0; i= i.increment()) System.out.println(i.toString()); for (INT i = 0; i < 10; i++) Console.WriteLine(i); 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))); STstr = "Justin"; TS today = DateTime.Today; PQ day = "1 d", hours = “3 h"; PQdayLessHours = day - hours; INTrad = 3; REAL pi = Math.PI; REAL area = pi * Math.Pow((double)rad, 2); 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()); TS now = DateTime.Now; Console.WriteLine(now.Value); TS yesterday = now - "1 d"; Console.WriteLine(yesterday.Value);

  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(newDatatypeFormatter()); ByteArrayOutputStreamoutStream = newByteArrayOutputStream(); IFormatterGraphResultgraphResult = 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 ǂ - 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/Everest • https://fisheye.marc-hi.ca/svn/jEverest • UN: Guest

More Related