smart architecture and application development overview

Post on 26-Jun-2015

842 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

An overview of the http://www.SMARTplatforms.org project, including architecture and app development. Presented at the 2012 Indivo X Users' Conference.By Nikolai Schwertner, Lead Software Developer, SMART platforms

TRANSCRIPT

SMARTArchitecture and Application Development Overview

Nikolai Schwertnernikolai.schwertner@childrens.harvard.eduLead Software Developer, SMART (http://smartplatforms.org)

Vocabulary

Apps

Containers

API

Vocabulary

Containers

Apps

API

Vocabulary

Containers

Apps

API

An app runs against one container (at a time)

A container connects to multiple data sources

Apps and containers

SMART components

SMART components

SMART components

SMART components

Web standards!

Apps can run on separate servers,different implementation stacks

Inspired by Web APIsFacebook, OpenSocial, Google

UI Standards-based integration, flexibility

Authentication In-browser, server-to-server

Data Context, Medical Record Elements

Apps need (at least!)

Container UI

Container UI

Container UI

Container UI

Health IT systems have different authentication mechanisms!

How to keep apps agnostic?

Each container implements a consistentmechanism for delegating access: OAuth.

The app only needs to speak OAuth.

AuthenticationAuthentication

Contextual data (patient, physician) low-hanging fruit

Medical data (blood pressure, cholesterol)

existing standards? pragmatic approaches?

Apps need data!

SMART data

80/20 approach concentrate on common outpatient data

Payloads specified down to coding systems e.g. SNOMED for problems (we’re opinionated!)

Extensible representations in RDF iterative design, building models over time

Data elements

Sample SMART Problem (RDF)

<sp:Problem> <sp:problemName> <sp:CodedValue> <sp:code rdf:resource="http://www.ihtsdo.org/snomed-ct/concepts/161891005"/> <dcterms:title>Backache (finding)</dcterms:title> </sp:CodedValue> </sp:problemName> <sp:onset>2007-06-12</sp:onset> <sp:resolution>2007-08-01</sp:resolution> </sp:Problem>

Data principles

REST Paradigm:Each patient, data element has a URI

John Smith: http://smart-emr.hospital.org/records/123

John Smith’s atorvastatin: http://smart-emr.hospital.org/records/123/medications/456

URIs can map to underlying EMR IDs

Data principles

Consistent coding systems

Medications: RxNorm (SCD, SBD, Packs)Problems: SNOMED CTLabs: LOINC

Containers may need to translate from other terminologies, with provenance

Data principles

Consistent coding systemsExample of a translated LOINC code

Medications: RxNorm (SCD, SBD)Problems: SNOMED CTLabs: LOINC

Containers may need to translate from other terminologies, with provenance

<sp:labName> <sp:CodedValue> <sp:code rdf:resource="http://loinc.org/codes/2951-2"/> <dcterms:title>Serum sodium</dcterms:title> <sp:codeProvenance> <sp:CodeProvenance> <sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" /> <dcterms:title>Random blood sodium level</dcterms:title> <sp:translationFidelity rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" /> </sp:CodeProvenance> </sp:codeProvenance> </sp:CodedValue> </sp:labName>

Data principles

Consistent coding systemsExample of a translated LOINC code

Medications: RxNorm (SCD, SBD)Problems: SNOMED CTLabs: LOINC

Containers may need to translate from other terminologies, with provenance

<sp:labName> <sp:CodedValue> <sp:code rdf:resource="http://loinc.org/codes/2951-2"/> <dcterms:title>Serum sodium</dcterms:title> <sp:codeProvenance> <sp:CodeProvenance> <sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" /> <dcterms:title>Random blood sodium level</dcterms:title> <sp:translationFidelity rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" /> </sp:CodeProvenance> </sp:codeProvenance> </sp:CodedValue> </sp:labName>

source

Data principles

Consistent coding systemsExample of a translated LOINC code

Medications: RxNorm (SCD, SBD)Problems: SNOMED CTLabs: LOINC

Containers may need to translate from other terminologies, with provenance

<sp:labName> <sp:CodedValue> <sp:code rdf:resource="http://loinc.org/codes/2951-2"/> <dcterms:title>Serum sodium</dcterms:title> <sp:codeProvenance> <sp:CodeProvenance> <sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" /> <dcterms:title>Random blood sodium level</dcterms:title> <sp:translationFidelity rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" /> </sp:CodeProvenance> </sp:codeProvenance> </sp:CodedValue> </sp:labName>

source

SMART translation

Data challenges

Different coding systems e.g. for medications, NDC RxNorm e.g. for problems, ICD9 SNOMED CT (?)

Different models e.g. is a problem event-at-a-time, or duration?

No models – can’t expose data you don’t have. (but some may be worth storing, e.g., fulfillments)

Architecture Summary

SMART Containers supply Apps with UI integration Authenticated API Access Data

Containers shoulder significant responsibility!

Data models are critical to enable app developers Keeping developer experience in mind Data need to be predictable, (relatively) simple

top related