Developing a FHIR Server Using C# and MongoDb, Xml and Json Ewout Kramer, Furore ([email protected])

April 5, 2018 | Author: Anonymous | Category: Documents
Report this link


Description

Slide 1Developing a FHIR Server Using C# and MongoDb, Xml and Json Ewout Kramer, Furore ([email protected]) Slide 2Architectural context CDR FHIR REST Comm. Service Comm. Service v3 v2 PHR FHIR VNA FHIR ETL HIS LIMS PACS FHIR Msg Comm. Service Comm. Service DB Slide 3Solution scenarios Storage Processing FHIR Resource FHIR REST JSON/XML POCO/POJO DBMS ORM FHIR Parser JSON/XML POCO/POJO NoSql (Xml/Json) FHIR Parser JSON/XML NoSql (Json/Xml) FHIR Validator JSON/XML XML NoSql (Json) FHIR Validator Slide 4Json and Xml Roundtrip? One Two One Not so { B: { @a : c }, C: [ One, Two ], D : One, div : { #text : Not, b : so } Slide 5FHIR Xml and JSon guidelines MR urn:hl7-org:sid/v2-0203 oid:1.2.36.146.595.217.0.1 12345 Acme Healthcare 2001-05-06 generated "Person" : { "identifiers" : [ { "identifier" : { "type" : { "code" : "MR", "system" : "urn:hl7-org:sid/v2-0203 } } } ], "text" : { "status" : "generated", "xhtml" : " Name Peter James Chalmers " } Slide 6Two ways of storing in MongoDb var database = server.GetDatabase("test"); var collection = database.GetCollection ("entities"); var entity = new Entity { Name = "Tom" }; collection.Insert(entity); var id = entity.Id; BsonDocument nested = new BsonDocument { { "name", "John Doe" }, { "address", new BsonDocument { { "street", "123 Main St." }, { "city", "Centerville" }, { "zip", 12345 } } }; collection.Insert(nested); Slide 7What a detour…. Json -> XML -> Json -> Bson Slide 8Slide 9ResourceRecord -RecordId, Version -State -CreationDate, Author ResourceRecord -RecordId, Version -State -CreationDate, Author ResourceRecord -RecordId, Version -State -CreationDate, Author Storing a resource as a record ResourceInstance -AsJson(), ToJson(), … -GetElement(), ReplaceElement() -ResourceId, Location, Type FHIR Resource Data (XML) Slide 10Slide 11How do I do transactions/locking? MongoDB does not use traditional locking or complex transactions with rollback, as it is designed to be lightweight and fast and predictable in its performance. It can be thought of as analogous to the MySQL MyISAM autocommit model. By keeping transaction support extremely simple, performance is enhanced, especially in a system that may run across many servers. Slide 12Brewers CAP theorem Consistency, Availability and Partition tolerance Pick any two… C AP Slide 13Slide 14Slide 15Slide 16http://fhir.apphb.com/fhir/help Slide 1726 th Annual Plenary & Working Group Meeting Sep 9, 2012 to Sep 14, 2012 - Baltimore, MD (Dutchies take note: September 12 th general elections!) SATURDAY SEPTEMBER 8 th FIRST FHIR CONNECTATHON Slide 18db.things.find( { x : 3, y : "foo" } ); db.foo.find( { $and: [ { a: { $lt: 10 } }, { a: { $gt: 5 } } ] } )


Comments

Copyright © 2025 UPDOCS Inc.