transcript
- Slide 1
- Everest 1.2 Update Progress New Features Justin Fyfe Duane
Bender January 2013 WGM
- Slide 2
- Agenda Overview News New Features .NET Version Silverlight and
Windows Phone 7/8 Version Java Version Roadmap
- Slide 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)
- Slide 4
- News : Everest Book Complete Development guide Covers 1.0 eBook
and Hardcover Free for contributors
- Slide 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
- Slide 6
- .NET EDITION New Features
- Slide 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"));
- Slide 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); }
- Slide 9
- Other Features Detailed validation errors/warnings for data
types Over 60 defects were corrected Enhanced documentation on data
types classes Formatter performance enhancements
- Slide 10
- EVEREST COMPACT VERSION New Features
- Slide 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)
- Slide 12
- HL7v3 from your mobile
- Slide 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
- Slide 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 Ill
show you project
- Slide 15
- XML/v3 is CPU intensive
- Slide 16
- XML/v3 Wastes Bandwidth
- Slide 17
- JAVA VERSION New Features
- Slide 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
- Slide 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);
- Slide 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(); }
- Slide 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
- Slide 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
- Slide 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
- Slide 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
- Slide 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