Presentation is loading. Please wait.

Presentation is loading. Please wait.

ART-DÉCOR Templates in Everest Project “Sherpas” Justin Fyfe – Mohawk College of Applied Arts and Technology May 2014 WGM.

Similar presentations


Presentation on theme: "ART-DÉCOR Templates in Everest Project “Sherpas” Justin Fyfe – Mohawk College of Applied Arts and Technology May 2014 WGM."— Presentation transcript:

1 ART-DÉCOR Templates in Everest Project “Sherpas” Justin Fyfe – Mohawk College of Applied Arts and Technology May 2014 WGM

2 Everest – A Brief Generic framework for generating HL7v3 (and CDA) instances Features Overview: –.NET and Java implementation Compact (Windows Phone) edition available –Formatting R1 and R2 data-types representation XML ITS 1.0 –Transport SOAP (via WCF/Spring) File System Pub/sub MSMQ Started in 2008 as a generic solution –Over 9,000 downloads currently on Tech Exchange –In use in many implementation (primarily C#)

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

4 CDA In Everest Optimizer GPMR C# Java.DLL.JAR POCD_MT000040UV.MIF

5 Using the Generated RMIM Classes ClinicalDocument document = new ClinicalDocument(); document.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1")); document.Code = new CE ("34133-9", "2.16.840.1.113883.6.1") { DisplayName = "Summarization of episode note" }; document.Component = new Component2(); document.Component.SetBodyChoice(new StructuredBody()); // Vital Signs section Section vitalSigns = new Section(); vitalSigns.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1.16")); vitalSigns.Code = new CE ("8716-3", "2.16.840.1.113883.6.1"); vitalSigns.Title = "Vital Signs"; vitalSigns.Text = " Todo "; vitalSigns.Text.Representation = EncapsulatedDataRepresentation.XML; document.Component.GetBodyChoiceIfStructuredBody().Component.Add( new Component3(ActRelationshipHasComponent.HasComponent, true) { Section = vitalSigns } ); // Comment entry Entry commentEntry = new Entry(x_ActRelationshipEntry.HasComponent, false); Act commentAct = new Act(x_ActClassDocumentEntryAct.Act, x_DocumentActMood.Eventoccurrence); commentAct.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1.40")); commentAct.Code = new CD ("48767-8", "2.16.840.1.113883.6.1") { DisplayName = "Annotation comment" }; commentAct.Text = "This is a test"; commentEntry.ClinicalStatement = commentAct; vitalSigns.Entry.Add(commentEntry);

6 Rendered in XML Vital Signs Todo This is a test

7 Common Roadblocks Developers on the forums and via e-mail asked common questions: –How do I … ? Quite a bit of questions about how to represent a particular CDA template using Everest –I have a jurisdiction that does X differently than the standard, how do I represent this? Lots of common questions were asked about how to represent jurisdictional constraints in Everest Some common themes –Jurisdiction has a “custom” schema for their extended attributes –Jurisdiction has a “custom” series of elements represented in a word document –Jurisdiction had computable representations and Java renderings but no C# equivalent Everest had some way to address this: –Writing extended classes which implemented the templates/custom bits –Writing scaffolding code –We wanted a more automated way to do this.

8 Sherpas The name: –Everest was named after tallest mountain in the world HL7v3 was considered by many to be equally difficult to implement –This toolkit would help developers climb that mountain … = Sherpas What is it? –A template processor that binds CDA templates to Everest RMIM classes –A series of helper classes that handle formatting/validation (as extensions to Everest)

9 Sherpas Generation Optimizer GPMR C#.DLL POCD_MT000040UV.MIF <temp <cla </cla <temp <cla </cla Y-DECOR.XML SherpaTC.DLL

10 Vanilla Everest ClinicalDocument document = new ClinicalDocument(); document.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1")); document.Code = new CE ("34133-9", "2.16.840.1.113883.6.1") { DisplayName = "Summarization of episode note" }; document.Component = new Component2(); document.Component.SetBodyChoice(new StructuredBody()); // Vital Signs section Section vitalSigns = new Section(); vitalSigns.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1.16")); vitalSigns.Code = new CE ("8716-3", "2.16.840.1.113883.6.1"); vitalSigns.Title = "Vital Signs"; vitalSigns.Text = " Todo "; vitalSigns.Text.Representation = EncapsulatedDataRepresentation.XML; document.Component.GetBodyChoiceIfStructuredBody().Component.Add( new Component3(ActRelationshipHasComponent.HasComponent, true) { Section = vitalSigns } ); // Comment entry Entry commentEntry = new Entry(x_ActRelationshipEntry.HasComponent, false); Act commentAct = new Act(x_ActClassDocumentEntryAct.Act, x_DocumentActMood.Eventoccurrence); commentAct.TemplateId = LIST.CreateList(new II("2.16.840.1.113883.10.20.1.40")); commentAct.Code = new CD ("48767-8", "2.16.840.1.113883.6.1") { DisplayName = "Annotation comment" }; commentAct.Text = "This is a test"; commentEntry.ClinicalStatement = commentAct; vitalSigns.Entry.Add(commentEntry);

11 Using Sherpas (live demo?) CCDClinicalDocument document = new CCDClinicalDocument(); document.Component = new CCDClinicalDocument_Component(); document.Component.BodyChoice = new CCDClinicalDocument_Component_BodyChoice(); // Vital Signs VitalSignsSection vitalSigns = new VitalSignsSection( classCode: ActClassDocumentSection.DOCSECT, moodCode: ActMoodEventOccurrence.Eventoccurrence, title: "Vital Signs", text: " Todo ", entry: null ); vitalSigns.Text.Representation = EncapsulatedDataRepresentation.XML; document.Component.BodyChoice.AddVitalSignsSectionComponent( new VitalSignsSectionComponent(false, vitalSigns) ); // Comment entry Comment commentAct = new Comment(false); commentAct.Text = "This is a test"; vitalSigns.AddCommentEntry15(new CommentEntry15(x_ActRelationshipEntry.HasComponent, true, commentAct));

12 Rendered in XML Vital Signs Todo This is a test

13 Sherpas Features Helper MethodsConstraint ValidationDocumentation Helper Methods Allow developers to see what choices of sections/entries/statements can be used in a particular context Helper Methods Allow developers to see what choices of sections/entries/statements can be used in a particular context Constraint Validation Gives developers an opportunity to provide *basic* validation of their models in memory while developing, or parsing. Constraint Validation Gives developers an opportunity to provide *basic* validation of their models in memory while developing, or parsing.

14 Current Status Very early stages of development –Started work after Jan WGM Sherpas is able to process: –Simple DÉCOR format files such as CCD or CCDA –Graph (Model => XML) DÉCOR template RMIM structures –Parse (XML => Model) DÉCOR RMIM structures based on “templateId” Todo: –More testing, esp. on parsing –Complex template operations (splicing, combining, resolving based on xpath, etc.) –Complex template constraints (expressed as XPath) –Huge demand to generate “templates from XSD” –Some demand to generate Sherpas templates from MDHT definitions

15 Questions?


Download ppt "ART-DÉCOR Templates in Everest Project “Sherpas” Justin Fyfe – Mohawk College of Applied Arts and Technology May 2014 WGM."

Similar presentations


Ads by Google