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

Beginners .net api (mirjam)

  • Upload
    devdays

  • View
    210

  • Download
    6

Embed Size (px)

Citation preview

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?