Upload
ewout-kramer
View
2.211
Download
2
Tags:
Embed Size (px)
DESCRIPTION
FHIR tutorial for develpers - morning program
Citation preview
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
HL7 FHIR Training course
Ewout Kramer
March 2014
Updated for
FHIR DSTU!
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Afternoon program
Support for Implementing FHIR Bundles, Documents and Messages Exercise #3 Search and Using the C#/Java API’s Exercise #4 Profiles and Conformance The HL7 family & FHIR
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
DEVELOPER RESOURCESGet started with FHIR quickly
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Browsing the site
REST API Data Types XML & JSON Codes / Terminologies Resource List Stack Overflow Public Test servers
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
The FHIR distribution
Under Implementation-Support-Downloads: The XSD schema’s / schematrons The Java / C# / Delphi zips (model, serializers,
parsers, etc, both code & binary) All xml + json examples Full spec for offline reading (always have your
FHIR with you)
Note! .NET implementation has moved to GitHub, distribution by NuGet (.NET) and Maven (Java)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Publication process
.INI
Publication tool(org.hl7.fhir.tools.jar)
Java, C#,Delphi
eCoreDefinitions.xml
Website
ValidationSchema’s
Examples
DictXml Resource profiles
ResourceUML
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Generator writers!
There’s a file called eCoreDefinitions.xml that the C# generator runs of. It has all details from the definitions
There are Profiles for each resource, basically describing the “unconstrained” resources
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
SEARCH FUNCTIONALITY
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Getting “all” patients
http://server.org/fhir/Patient
Always returns a paged feed
Use _count to indicate number of results per page
Special case of the “real” search operation:
http://server.org/fhir/Patient/_search?name=evehttp://server.org/fhir/Patient?name=eve
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Search (patient)
Each resource has a set of “standard” search operations, so not every element can be searched!:
Our last search used this one
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Combining parameters
Specifying multiple parameters finds resources matching all params “AND”
Parameters may list multiple values “OR” http://server.org/fhir
/Patient/_search? birthdate=1972-11-30 &language=NL,FR
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Search (patient)
Each search parameter has a ‘type’
ParameterType
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Ok I get it…or not?
http://server.org/fhir/Patient/ 406 hitshttp://server.org/fhir/Patient?gender=M 234 hitshttp://server.org/fhir/Patient?gender=F 167 hits
Total: 234 + 167 = 401
http://server.org/fhir/Patient/ 406 hitshttp://server.org/fhir/Patient?gender=M 234 hitshttp://server.org/fhir/Patient?gender=F 167 hitshttp://server.org/fhir/Patient?gender:missing=true 5 hits
Total: 234 + 167 + 5 = 406
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Chained searches
Patient has a search for “name”. Observation has a search for “subject” (the
id of the Patient, Group or Device) How do I find Observations for a patient,
searching using his name?
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
2 queries in 1
You (as a client) don’t need to do separate operations, just one:
http://server.com/fhir/Observation/_search?subject.name=jim
But note: this still only works on the predefined search parameters. You cannot just use any property of the resource.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
More optimalizations
Say we do: http://fhir.com/fhir/Observation?date=2014-01-20 We get back: a Bundle with 0..* “Observations”
Now, usually, wouldn’t we want the Patient information too? => Need to do “N” queries for the Observation’s “subject”
Quicker:?_include=Observation.subject
Returns both Observations + Patients
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
BUNDLESHow FHIR uses Atom to communicate sets of resources
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Communicating lists
We need to communicate lists of Resources Search result History Documents or messages Multiple-resource inserts (“batches”)
So, we need an industry-standard to represent lists, and a place to put our metadata
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Bundle
Resource
Narrative
Elements
ExtensionsExtensions
Resource
Metadata
Bundle
Metadata
Resource
Resource
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Bundles
Atom RFC 4287 + Tombstones RFC 6721
Poll-based protocol for keeping up-to-date with newsfeeds (RSS and Atom)
You can “subscribe” to a FHIR feed and get updates
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
New reports in the mail
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
An example Bundle
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Patient
MRN 22234“Ewout Kramer”30-11-1972Amsterdam
Resource metadata
Metadata
Resource Identityhttp://fhir.hl7.org/Patient/23E455A3B
Last updated2013-12-23T23:33:01+01:00
http://hl7.org/fhir/tag/profilehttp://hl7.org/fhir/Profile/us-core
http://hl7.org/fhir/taghttp://example.org/fhir/Status#Test
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Resource Entry
Resource id
Last modified
Resource content
Human-readable form,just like Resource.text
Tags
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Atom in JSON
There’s not yet a way to render Atom in JSON, though there are initiatives, all ugly.
So, we had to (sorry) roll our own…. …very straightforward, single-purpose Atom JSON solution (Note: MIME type is still application/json!)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Json Atom - Example
{
"title": "Search result",
"updated": "2012-09-20T12:04:45Z",
"id": "urn:uuid:50ea3e5e-b6a7-4f55-956c-caef491bbc08",
"link": [ { "rel": "self", "href": "http://server.org/fhir/Patient?format=json" } ],
"entry": [
{ "title": "Resource of type Patient, with id = 1 and version = 1",
"link": [ { "rel": "self", "href": "http://server.org/fhir/Patient/1/_history/1" } ],
"id": "http://server.org/fhir/Patient/1",
"updated": "2012-05-29T23:45:32Z",
"published": "2012-09-20T12:04:47Z",
"author": [ { "name": "Grahame Grieve / HL7 publishing committee" } ],
"content":
{ "Patient": { } }
}
]
}
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
BEYOND RESTHow FHIR supports documents and messages
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
What’s a document?
Persistence: continues to exist in an unaltered state Stewardship: maintained by a person or organization
entrusted with its care. Potential for authentication: an assemblage of
information that is intended to be legally authenticated. Wholeness. Authentication of a clinical document applies
to the whole and does not apply to portions of the document without the full context of the document.
Human readability. A clinical document is human readable.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
The Document resource
A single Resource, very often a List
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Documents – are bundles
Observation Resource
Composition Resource
SectionSection
Device Resource
Patient Resource
Prescription Resource
<feed> <entry> <Composition /> </entry> <entry> <Observation /> </entry> <entry> <Device /> </entry> <entry> <Prescription /> </entry> <entry> <Patient /> </entry></feed>
AttesterMetadata
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Tag as “Document”
This Bundle is a
Document
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Communicating documents
You can “drop” your document on http://server.org/fhir/Mailbox
No storage or disassembly is implied, your just posting a document in its entirety.
Servers can implement any specific functionality as required between trading partners when receiving such a document.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Communicating documents
You can store your document using http://server.org/fhir/Document
Storage, NO disassembly is implied, document (and signature) stays intact
Search is supported (you search on it’s Message header – Composition)
NEW!
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
MessageHeader Resource
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Messages – are bundles
Observation Resource
Message Resourcesource destination
Device Resource
Patient Resource
<feed> <entry> <MessageHeader /> </entry> <entry> <Observation /> </entry> <entry> <Patient /> </entry> <entry> <Device /> </entry></feed>
event
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Tag as “Message”
This Bundle is a
Message
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Sending messages
Again, REST not necessary, but… There is an explicit REST endpoint:
http://server.org/fhir/Mailbox No storage implied. Might be a router,
converted to v2, etc. etc. The server can process them based on the
event code and return the response as another message (again a bundle).
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Exercise #3
Composing a Document
(45 minutes)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
HL7.FHIR SUPPORT APIUsing the C# Reference Implementation
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Reference implementations
- Contents- Model – classes generated from the spec- Parsers – Parsers generated from the spec- Serializers – Serializers generated from the spec- FhirClient- Validation (currently Java only)
- Java – Everything on the downloads page- .NET – NuGet “FHIR”, or GitHub “fhir-net-api”
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
A FHIR Resource in C#
public partial class Observation : Resource{ // Codes that provide reliability information about an observation public enum ObservationReliability {Ok, Ongoing, …} // Codes identifying interpretations of observations public enum ObservationInterpretation {N, A, L, H } public CodeableConcept Name { get; set; } public List<ObservationReferenceRangeComponent> ReferenceRange { get; set;}
public Code<Observation.ObservationReliability> Reliability { get; set; }
public ResourceReference Performer { get; set; }}
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
51
Object Model[FhirResource("DiagnosticReport")]public partial class DiagnosticReport : Resource{ public Code<ObservationStatus> Status {…} public Instant Issued {…} public ResourceReference Subject {…} public ResourceReference Performer {…} public Identifier ReportId {… } public List<DiagnosticReportRequestDetailComponent>
RequestDetail { …}
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Primitives are not really primitive…
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Parsing/Serializing using C#
// Create a file-based reader for XmlXmlReader xr = XmlReader.Create(
new StreamReader(@"publish\observation-example.xml"));
// Parse the Observation from the streamvar obs = (Observation)FhirParser.ParseResource(xr);
// Modify some fields of the observationobs.Status = Observation.ObservationStatus.Amended;obs.Value = new Quantity() { Value = 40, Units = "g" };
// Serialize the in-memory observation to Jsonvar jsonText = FhirSerializer.SerializeResourceToJson(obs);
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Parsing/Serializing using Java
XmlParser xml = new XmlParser();
Observation obs = (Observation)xml.parse(new FileInputStream(“observation.xml"));
obs.setStatusSimple(ObservationStatus.amended);
Quantity newValue = new Quantity();newValue.setValueSimple(new BigDecimal(40)); newValue.setUnitsSimple("g");obs.setValue( newValue );
ByteArrayOutputStream bos = new ByteArrayOutputStream();JsonComposer comp = new JsonComposer();comp.compose(bos, obs, true);String json = bos.toString("UTF8");
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Bundles
For both Java and C#, reference has custom-built Atom parser
For .NET, you could use the framework’s SyndicationFeed A bit more low-level No support for deleted-entries (even parse
problems) Incompatible with WinRT (Win8 mobile apps)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Bundles in C#
Abstraction on top of Atom parser Bundle = feed, BundleEntry = entry.
Bundle result = new Bundle() { Title = "Demo bundle" };
result.Entries.Add(new ResourceEntry<Patient>() { LastUpdated=DateTimeOffset.Now, Content = new Patient() });result.Entries.Add(new DeletedEntry() { Id = new Uri("http://..."), When = DateTime.Now });
var bundleXml = FhirSerializer.SerializeBundleToXml(result);
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Bundles in Java
AtomFeed feed = new AtomFeed();feed.setTitle("Demo bundle");
AtomEntry pat = new AtomEntry();pat.setUpdated(Calendar.getInstance());pat.setResource(new Patient());feed.getEntryList().add(pat);
AtomEntry del = new AtomEntry();del.setUpdated(Calendar.getInstance());del.setDeleted(true); del.setId("http://nu.nl/fhir");feed.getEntryList().add(del);
ByteArrayOutputStream bos = new ByteArrayOutputStream();AtomComposer comp = new AtomComposer();comp.compose(bos, feed, true);String xml = bos.toString("UTF8");
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Using FHIR Client in C#
var client = new FhirClient( new
Uri("http://fhir.com/svc/fhir"));
var patEntry = client.Read<Patient>("1");var pat = patEntry.Resource;var restId = patEntry.Id;var tags = patEntry.Tags; pat.Name.Add(HumanName.ForFamily("Kramer")
.WithGiven("Ewout"));
client.Update<Patient>(patEntry);
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Using FHIR Client in Java
FHIRClient client = new FHIRSimpleClient();client.initialize("http://spark.furore.com/fhir");
AtomEntry<Patient> pe = client.read(Patient.class, "1");Patient p = pe.getResource();
HumanName hn = new HumanName();hn.getFamily().add(Factory.newString_("Kramer"));hn.getGiven().add(Factory.newString_("Ewout"));p.getName().add(hn);
client.update(Patient.class, p, "1");
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Exercise #4
Using the FHIR C# and Java API’s
(60 minutes)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
PROFILES, VALIDATION AND CONFORMANCE
Introducing
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
The need for Profiles
Many different contexts in healthcare, but a single set of Resources
Need to be able to describe restrictions based on use and context
Allow for these usage statements to: Authored in a structured manner Published in a repository Used as the basis for validation, code, report and UI
generation.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Profiling a resource
Demand that the identifier uses your national patient identifier
Limit names to just 1 (instead of 0..*)
Limit maritalStatus to another set of codes that extends the one from HL7 international
Add an extension to support “RaceCode”
Note: hardly any mandatory elements in the core spec!
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Structured & published
A Profile is just a “normal” Resource Any FHIR server could serve Profiles (just
like Patients, Observations, etc…) So, any FHIR server is a profile repository!
A resource is simply referred to by its URI: e.g. http://hl7.org/fhir/Profile/iso-21090
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Using profiles
When communicating a resource, you can indicate the profiles it conforms to.
A server might explicitly state it only accepts resources conforming to a certain profile (and verify!)
You can ask a FHIR server to validate a resource against a given profile
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Tagging a Resource
Patient
MRN 22234“Ewout Kramer”30-11-1972Amsterdam
http://hl7.org/fhir/tag/securityhttp://hl7.org/fhir/v3/ActCode#TABOO
http://hl7.org/fhir/taghttp://example.org/fhir/Status#Test
http://hl7.org/fhir/tag/profilehttp://hl7.org/fhir/Profile/us-core “a claim that the Resource
conforms to the profile identified in the term”
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Who publishes?
http://www.hl7.org/fhir/Profile/iso-21090
http://www.hl7.nl/fhir/Profile/patient-nl
http://www.health4all.org/fhir/Profile/
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
What’s in a profile?
Metadata
IdentifierName, VersionPublisherDescription, CodeStatusDate (of publication)
Resource and Datatype Constraints
Extension
Conformance
Resource (via Tag)
ValueSetValueSet
Extension in Resource
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Scale / design
Make a profile with just extensions Make a profile with just 1 resource +
extensions on that resource Make a profile with all (say national)
resources + extensions.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Profile metadata
Identifier: Universally unique identifier, assigned by author value=“urn:hl7.org:extensions:iso-21090“ or “2.16.840.1.113883.10.20.2.1”
Version: Version of the profile, manually maintained by author. Suggested format: a timestamp (e.g. 2013-01-01T12:34:45)
Name: Free natural text name (e.g. “ISO 21090 Data Type Extensions”) Publisher: organization or individual responsible for publishing. Should be
populated (e.g. “FHIR Project Team“) Telecom: one or more contact points of the publisher (telephone, email,
website etc) Description: longer description of the contents of the profile Code: one or more coded descriptions to help with finding the profile Status (fixed choice of draft, active, retired) + experimental Y/N Requirements: scope & usage (the “need” or “why” of the profile) Date (of publication), e.g. “2013-07-07"
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
(Distributed) validation
App’s server
Store &Validate
Country validation server
Validate
Profile X
Profile Y
Profile YValidate
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Validation
When receiving an XML resource 1. Validate using schema 2. Run schematrons
When receiving JSON 1. Parse the JSON 2. Serialize to XML 3. Validate using schema 4. Run schematrons
There’s a validation pack for Java
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Operation Outcome
When something goes wrong….return the OperationOutcome Resource!
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Conformance
There’s a resource for documenting conformance to FHIR
Can be used for: Stating how a specific system instance behaves Defining how a software system is capable of behaving
(including configuration options) Identifying a desired set of behavior (e.g. RFP)
To declare themselves “FHIR Conformant”, a system must publish a Conformance instance
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
ConformanceResource
• Which wire formats supported?• Which resources?• What documents, messages does
the server accept, what does the content look like?
• Which protocols? http? Mllp? ftp?• Which operations (read, create,
update, search)• Which FHIR version?• What search operations?• Is this a test server?• Who can I contact?• What’s the name of the software?
http://www.hl7.org/implement/standards/fhir/conformance.html
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
How to get conformance
Conformance is again, just a Resource Any FHIR server will publish his own
conformance at a special endpoint A FHIR server may store and publish any
number of additional Conformance resources, so you can refer to them
Able to validate by automated testing
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
HL7 FAMILY AND FHIR
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
V2 and FHIR
Similarities
Built around re-usable “chunks” of data
Strong forward/backward compatibility rules
Extensibility mechanism
FHIR Differences
Each chunk (resource) is independently addressable
More than messages Human readable required Extensions don’t collide,
are discoverable Modern tools/skills Instances easy to read Lighter spec
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Migration – v2
Already have an integration engine that supports translation between v2 and FHIR
Resources map to segments reasonably well As always, the challenge with v2 mapping is
the variability of v2 interfaces “Common” mappings can be created, but they
won’t be one size fits all
HL7 v2
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
…and v2 mappings
Every Resource has v2 mappings specified, e.g.:http://www.hl7.org/fhir/patient-mappings.html#http://hl7.org/v2
Patient identifier PID-3 name PID-5, PID-9 telecom PID-13, PID-14, PID-40 gender PID-8 birthDate PID-7 deceased[x] PID-30 address PID-11 maritalStatus PID-16
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
V3 and FHIR
Similarities
Based on RIM, vocab & ISO Data types foundations
Support XML syntax
FHIR Differences
Simpler models & syntax (reference model hidden)
Friendly names Extensibility with
discovery Easy inter-version wire
compatibility Messages, documents,
etc. use same syntax JSON syntax too
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
CDA and FHIR
Similarities
Support profiling for specific use-cases
Human readability is minimum for interoperability
APIs, validation tooling, profile tooling
(See v3 similarities on prior slide)
FHIR Differences
Can use out of the box – no templates required
Not restricted to just documents
Implementer tooling generated with spec
(See v3 differences on prior slide)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Migration – CDA
Made more complex by human-readable nature Need to ensure text <-> entry linkages are
retained Will best be handled on a template by
template basis Likely start with important ones like C-CDA
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
For v3 CDA…
Documents MAY be communicated using REST: And stored as a single “blob” – the whole
document And disassembled into the contained resources But ftp, MLLP, e-mail, SOAP is all fine
There is a project underway mapping Green CDA to FHIR
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
…and v3 mappings
Every Resource has v3 mappings specified, e.g.:http://www.hl7.org/fhir/patient-mappings.html#http://hl7.org/v3
Patient Patient identifier ./id name ./name telecom ./telecom gender ./administrativeGender birthDate ./birthTime deceased[x] ./deceasedInd address ./addr maritalStatus ./maritalStatus multipleBirth[x] .multipleBirthInd
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
FHIR and Services
Similarities
Encourage context neutral, re-usable structures with defined behavior
RESTful interface is a simple SOA interface
FHIR differences
Consistent data structures across services
Ease of transport across paradigms message <-> service <-> document <-> REST
Standard framework for defining/discovering services
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Market Sharev2
• De facto standard for in-institution communication
• Standard in many countries for cross-institution communication
CD
A
• High market penetration, particularly of CCD and CCDA variants due to meaningful use
• Significant on-going growth
v3
• Mandated use in a few jurisdictions
• Little uptake outside of those mandates
FH
IR• None
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Maturityv2
• In use for over 25 years• Broadly supported by industry
tools• Now on • Familiarity with both
capabilities and limitations (and work-arounds)
CD
A
• In use for over 12 years• Implemented in a variety of
settings all around the world
v3
• In development for over 13 years
• Some specifications have had multiple releases
• Limited uptake
FH
IR• First thought of less than 2
years ago• Just passed DSTU ballot• Won’t be a normative spec for
several more years, minimum
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
So why use anything else?
FHIR is brand new No market share Only recently passed DSTU ballot Little track record
Business case No-one dumps existing working systems just
because something new is “better” Large projects committed to one standard won’t
change direction quickly (or even at all)
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Simple message
Yes, FHIR has the potential to supplant HL7 v3, CDA and even v2
However It’s not going to do so any time soon
No one's going to throw away their investment in older standards to use FHIR until
1. The specification has a good track record
2. It’s clear the new thing provides significant benefits HL7 will support existing product lines so
long as the market needs them
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
(XDS) references
Document Reference Resources are used in document indexing systems, and are used to refer to:• CDA documents in FHIR systems• FHIR documents stored elsewhere (i.e. registry/repository following the
XDS model)• PDF documents, and even digital records of faxes where sufficient
information is available• Other kinds of documents, such as records of prescriptions.
A document reference resource is used to describe a document that is made available to a healthcare system.
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
IHE MHD
“This winter (…) the Volume 2 part of Mobile Health Documents (MHD) will be replaced with the appropriate content describing a profile of DocumentReference to meet the needs of MHD and the family of Document Sharing in XDS, XDR, and XCA.”
John Moehrke, august 16, 2013
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
93
Balloting plans
First Draft Standard for Trial Use ballot (DSTU) complete Recently HL7 decided FHIR is now published as a DSTU Will provide a semi-stable platform for implementers while still
allowing non-backward-compatible change for Normative version if implementation experience dictates
Additional DSTU versions roughly annually to make fixes, introduce new resources
Normative is around 3 years out We want *lots* of implementation experience before committing to
backward compatibility
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
Next Steps for you
Read the spec: http://hl7.org/fhir Try implementing it Come to a (European?) Connectathon!
[email protected] #FHIR Implementor’s Skype Channel FHIR Developer Days (November 24 – 26), Amsterdam StackOverflow: hl7 fhir tag
© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.
The End – The big brake!
Questions?