smart architecture and application development overview
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 platformsTRANSCRIPT
![Page 1: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/1.jpg)
SMARTArchitecture and Application Development Overview
Nikolai [email protected] Software Developer, SMART (http://smartplatforms.org)
![Page 2: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/2.jpg)
Vocabulary
Apps
Containers
API
![Page 3: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/3.jpg)
Vocabulary
Containers
Apps
API
![Page 4: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/4.jpg)
Vocabulary
Containers
Apps
API
![Page 5: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/6.jpg)
SMART components
![Page 7: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/7.jpg)
SMART components
![Page 8: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/8.jpg)
SMART components
![Page 9: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/9.jpg)
SMART components
![Page 10: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/12.jpg)
Container UI
![Page 13: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/13.jpg)
Container UI
![Page 14: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/14.jpg)
Container UI
![Page 15: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/15.jpg)
Container UI
![Page 16: SMART Architecture and Application Development Overview](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062514/558d1c32d8b42a93258b4664/html5/thumbnails/26.jpg)
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