beginners .net api (mirjam)

28
© 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 API for .Net programmers Introduction Mirjam Baltus FHIR Developer Days November 16, 2016

Upload: devdays

Post on 14-Apr-2017

204 views

Category:

Healthcare


6 download

TRANSCRIPT

Page 1: Beginners .net api (mirjam)

© 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 APIfor .Net programmers

Introduction Mirjam Baltus

FHIR Developer DaysNovember 16, 2016

Page 2: Beginners .net api (mirjam)

© 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 am I? Name: Mirjam Baltus Company: Furore, Amsterdam Background:

Furore FHIR team IT trainer & Support

Contact: [email protected]

Page 3: Beginners .net api (mirjam)

© 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 APIUsing the Reference Implementation

Page 4: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

First step Adding the Hl7.Fhir package to your solution

NuGet Package manager, Hl7.Fhir.DSTU2 package

Page 5: Beginners .net api (mirjam)

© 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.DSTU2 Core contents

Model – classes generated from the spec REST functionality – FhirClient Parsers and Serializers

Source on GitHub: http://github.com/ewoutkramer/fhir-net-api

Page 6: Beginners .net api (mirjam)

© 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 MODELusing Hl7.Fhir.Model;

6

Page 7: Beginners .net api (mirjam)

© 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

Page 8: Beginners .net api (mirjam)

© 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 : Hl7.Fhir.Model.DomainResource

/// <summary> /// Codes providing the status of an observation. /// (url: http://hl7.org/fhir/ValueSet/observation-status) /// </summary> public enum ObservationStatus {Registered, Preliminary, Final, …}

Page 9: Beginners .net api (mirjam)

© 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 CodeableConcept Code { get; set; }

public List<Identifier> Identifier{ get; set; }

Page 10: Beginners .net api (mirjam)

© 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 Element Value { get; set;}

Page 11: Beginners .net api (mirjam)

© 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 ReferenceRangeComponent : BackboneElement { … }

Page 12: Beginners .net api (mirjam)

© 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 arenot really primitive…

Page 13: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

REST INTERACTIONSusing Hl7.Fhir.Rest;

13

Page 14: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

See Publicly Available FHIR Servers for available test servers

Using the FHIR Client

var client = new FhirClient("http://acme.org/fhir");

// client optionsclient.PreferredFormat = ResourceFormat.Xml;client.ReturnFullResource = true;

Page 15: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Adding headers to requestclient.OnBeforeRequest +=

(object sender, BeforeRequestEventArgs e) =>{ e.RawRequest.Headers.Add("some_key", "some_value");};

client.OnAfterResponse += (object sender, AfterResponseEventArgs e) =>

{ ... };

Page 16: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

C(RUD)var obs = new Observation();obs.Status = Observation.ObservationStatus.Preliminary;obs.Code = new CodeableConcept("http://example.org",

"my-example-code");

var result = client.Create<Observation>(obs);

// note that error handling should be added to catch exceptions

Page 17: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

(C)RUDvar pat = client.Read<Patient>("Patient/1");

pat.Name.Add(HumanName.ForFamily("Kramer").WithGiven("Ewout"));

client.Update<Patient>(pat);

client.Delete(pat);client.Delete("Patient/12345");

Page 18: Beginners .net api (mirjam)

© 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.Rest.ResourceIdentity

Resource Identity

pat.ResourceIdentity().HasBaseUripat.ResourceIdentity().HasVersion

pat.ResourceIdentity().BaseUripat.ResourceIdentity().ResourceType

var id = new ResourceIdentity("Patient/3").WithBase("http://example.org/fhir");

ResourceIdentity.Build(UrnType.OID, "1.2.3.4.5.6");

Page 19: Beginners .net api (mirjam)

© 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 AND BUNDLES

19

Page 20: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Making queriesvar q = new SearchParams()

.Where("name=Ewout")

.Include("Patient:organization")

.LimitTo(10).SummaryOnly()

.OrderBy("birthdate",

Hl7.Fhir.Rest.SortOrder.Descending);

q.Add("gender", "male");

Bundle result = client.Search<Patient>(q);

Page 21: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Paging through Bundlewhile (result != null){ foreach (var e in result.Entry) { Patient p = (Patient)e.Resource; // do something with the resource } result = client.Continue(result, PageDirection.Next);}

Page 22: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Transaction buildervar b = new TransactionBuilder("http://example.org/fhir") .Create(pat) .ResourceHistory("Patient","7") .Delete("Patient","8") .Read("Patient","9")

.Search(q, "Patient") .ToBundle();

var t_result = client.Transaction(b);

Page 23: Beginners .net api (mirjam)

© 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/SERIALIZINGusing Hl7.Fhir.Serialization;

23

Page 24: Beginners .net api (mirjam)

© 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// Create a file-based reader for JSONJsonTextReader reader =

new JsonTextReader(new StreamReader(@"input.json"));

var parser = new FhirJsonParser();var new_obs = parser.Parse<Observation>(reader);

// Serialize an in-memory observation to a JSON stringvar jsonText = FhirSerializer.SerializeResourceToJson(new_obs);

Page 25: Beginners .net api (mirjam)

© 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 NEXT?

Page 26: Beginners .net api (mirjam)

© 2012 HL7 ® International. Licensed under Creative Commons. HL7 & Health Level Seven are registered trademarks of Health Level Seven International. Reg. U.S. TM Office.

Support Google group: groups.google.com/forum/#!

forum/fhir-dotnet Support questions:[email protected] GitHub for issues:

github.com/ewoutkramer/fhir-net-api/

Page 27: Beginners .net api (mirjam)

© 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 Try the Beginners Track during the hands-on session See https://github.com/furore-fhir/fhirstarters for the track

exercises and some .Net examples For questions during the track, consult

me or use https://chat.fhir.org/

Go to the FHIR for Advanced .NET developers session

Page 28: Beginners .net api (mirjam)

© 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 – Questions?