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

Everest 1.2 Update – Progress – New Features

  • Upload
    donnan

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

PowerPoint Presentation

Everest 1.2Update Progress New FeaturesJustin FyfeDuane BenderJanuary 2013 WGMAgendaOverviewNewsNew Features.NET VersionSilverlight and Windows Phone 7/8 VersionJava VersionRoadmap

A (brief) HistoryEverest:Started in 2008An HL7v3 toolkit for writing Windows applicationsCode generated from MIF filesTraditionally, focused on Microsoft .NET platformTight integration with WCFIntegrates with Visual StudioOpen Source (Apache 2)News : Everest BookComplete Development guideCovers 1.0eBook and HardcoverFree for contributors

News : Public SVNEverest and jEverest have publicly accessible SVN repositoriesReadonly anonymous accessPatches can be submitted by anyone to [email protected] contributors can be given commit access.NET EditionNew FeaturesBetter integration with WCFBetter support for accessing SOAP headers from messagesreceiveResult.ResponseHeaders = new System.ServiceModel.Channels.MessageHeaders(receiveResult.Headers.MessageVersion);receiveResult.ResponseHeaders.Add(MessageHeader.CreateHeader("myHeader", "urn:my-ns:com", "Value"));Better Integration with WCFCreation of a custom binding provider for existing WCF servicesEverestSerializerFormat 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);

}Other FeaturesDetailed validation errors/warnings for data typesOver 60 defects were correctedEnhanced documentation on data types classesFormatter performance enhancementsEverest Compact VersionNew FeaturesCompact Edition?Optimized for low resource execution environmentsPhones (Windows Phone 7/8)Windows RT Devices (ARM based Windows 8)Silverlight (Browser based execution)HL7v3 from your mobile

Supported FeaturesFull data types support (including behaviors)Serialization support forXML ITS1 and Data Types R1 (R2 on roadmap)Tested with NE2008, NE2010, and CA standardsConnectivityWCF (SOAP 1.1/1.2) over http/httpsLimitationsReflection formatter onlyCan use a pre-generation tool to make this faster

Why?Mobile apps can benefit from integration using HL7v3FHIR is not yet readyHL7v3 registries/repositories have lots of information that can be leveraged on mobilePIX/PDQ HL7v3 can be useful in mobile appsEspecially when integrating with XDS on mobile platformsHL7v3 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 Ill show you projectXML/v3 is CPU intensive

XML/v3 Wastes Bandwidth

Java versionNew FeaturesThe Java VersionFinally, after 3 yearsSeparate code base from .NET versionLeverages Java patternsCode generated from MIF from GPMRTested with NE2008, NE2010, CATechnical challenges with Java Lack of reified genericsNo closures / lambda expressions

Adaptations from .NETJavaINT 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)));.NETfor (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);Constructing an Instance// Quickly create an instanceMCCI_IN000002CA instance = new MCCI_IN000002CA(new II(UUID.randomUUID()),TS.now(),ResponseMode.Immediate,MCCI_IN000002CA.defaultInteractionId(),MCCI_IN000002CA.defaultProfileId(),ProcessingID.Production,AcknowledgementCondition.Never);// Formattry(XmlIts1Formatter fmtr = new XmlIts1Formatter()){// Add a helper formatter for R1fmtr.getGraphAides().add(new DatatypeFormatter());ByteArrayOutputStream outStream = new ByteArrayOutputStream();IFormatterGraphResult graphResult = fmtr.graph(outStream, instance);// Output validation errorsfor(IResultDetail detail : graphResult.getDetails())System.out.printf("%s : %s", detail.getType(), detail.getMessage());}catch(Exception e){e.printStackTrace();}Sending/Receiving v3Everest integrates with Spring one of two ways:Using SpringClientConnector Similar to the WcfClientConnector in .NETUsing EverestMarshaller / EverestUnmarshaller in AppContext xml configurationFeature ComparisonJava.NETCompactData TypesStructure + BehaviorsBehaviors + StructureBehaviors + StructureSerializationDT R1XXXDT R2XXML ITS1ReflectionReflection + CodeDom + Pre-GeneratedReflection + Pre-GeneratedConnectivitySOAPSpringWCFWCFFilesXMQX - Not fully portedVersion 1.2 Todo ListUnit Testing (Jan Feb 2013)Currently one student in charge of porting unit tests (help is appreciated)Spring ConnectorCurrently needs testing and additional development work.Documentation & Clean-up

RoadmapIf interest continues development will continue on Everest1.4 (Q1 2014)Data Types R2 for Java and Compact versionCDA/XDS Connectors (experimentation required)MEX support (for WCF services) and WSDL import functionality (map XMLSerializer to Everest classes)JSON FormatterAndroid version of jEverestMore Infohttp://everest.marc-hi.caSVN:https://fisheye.marc-hi.ca/svn/Everesthttps://fisheye.marc-hi.ca/svn/jEverestUN: Guest