smart architecture and application development overview

26
SMART Architecture and Application Development Overview Nikolai Schwertner [email protected] Lead Software Developer, SMART ( http:// smartplatforms.org )

Upload: childrens-hospital-informatics-program

Post on 26-Jun-2015

842 views

Category:

Technology


1 download

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

Page 1: SMART Architecture and Application Development Overview

SMARTArchitecture and Application Development Overview

Nikolai [email protected] Software Developer, SMART (http://smartplatforms.org)

Page 2: SMART Architecture and Application Development Overview

Vocabulary

Apps

Containers

API

Page 3: SMART Architecture and Application Development Overview

Vocabulary

Containers

Apps

API

Page 4: SMART Architecture and Application Development Overview

Vocabulary

Containers

Apps

API

Page 5: SMART Architecture and Application Development Overview

An app runs against one container (at a time)

A container connects to multiple data sources

Apps and containers

Page 6: SMART Architecture and Application Development Overview

SMART components

Page 7: SMART Architecture and Application Development Overview

SMART components

Page 8: SMART Architecture and Application Development Overview

SMART components

Page 9: SMART Architecture and Application Development Overview

SMART components

Page 10: SMART Architecture and Application Development Overview

Web standards!

Apps can run on separate servers,different implementation stacks

Inspired by Web APIsFacebook, OpenSocial, Google

Page 11: SMART Architecture and Application Development Overview

UI Standards-based integration, flexibility

Authentication In-browser, server-to-server

Data Context, Medical Record Elements

Apps need (at least!)

Page 12: SMART Architecture and Application Development Overview

Container UI

Page 13: SMART Architecture and Application Development Overview

Container UI

Page 14: SMART Architecture and Application Development Overview

Container UI

Page 15: SMART Architecture and Application Development Overview

Container UI

Page 16: SMART Architecture and Application Development Overview

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

Page 17: SMART Architecture and Application Development Overview

Contextual data (patient, physician) low-hanging fruit

Medical data (blood pressure, cholesterol)

existing standards? pragmatic approaches?

Apps need data!

Page 18: SMART Architecture and Application Development Overview

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

Page 19: SMART Architecture and Application Development Overview

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>

Page 20: SMART Architecture and Application Development Overview

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

Page 21: SMART Architecture and Application Development Overview

Data principles

Consistent coding systems

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

Containers may need to translate from other terminologies, with provenance

Page 22: SMART Architecture and Application Development Overview

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>

Page 23: SMART Architecture and Application Development Overview

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

Page 24: SMART Architecture and Application Development Overview

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

Page 25: SMART Architecture and Application Development Overview

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)

Page 26: SMART Architecture and Application Development Overview

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