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
Unleash Your Potential - Namagunga Girls Coding Club
SMART Architecture and Application Development Overview
1. SMART
Architecture and Application Development
Overview
Nikolai Schwertner
nikolai.schwertner@childrens.harvard.edu
Lead Software Developer, SMART (http://smartplatforms.org)
10. Inspired by Web APIs
Facebook, OpenSocial, Google
Web standards!
Apps can run on separate servers,
different implementation stacks
11. Apps need
(at least!)
UI
Standards-based integration, flexibility
Authentication
In-browser, server-to-server
Data
Context, Medical Record Elements
16. Authentication
Health IT systems have
different authentication mechanisms!
How to keep apps agnostic?
Each container implements a consistent
mechanism for delegating access: OAuth.
The app only needs to speak OAuth.
17. Apps need data!
Contextual data
(patient, physician) low-hanging fruit
Medical data
(blood pressure, cholesterol)
existing standards?
pragmatic approaches?
18. 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
19. 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>
20. 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
21. Data principles
Consistent coding systems
Medications: RxNorm (SCD, SBD, Packs)
Problems: SNOMED CT
Labs: LOINC
Containers may need to translate from other
terminologies, with provenance
22. Data principles
Consistent coding systems
Example of a translated LOINC code
<sp:labName>
Medications: RxNorm (SCD, SBD)
<sp:CodedValue>
Problems: SNOMED CT
<sp:code rdf:resource="http://loinc.org/codes/2951-2"/>
<dcterms:title>Serum sodium</dcterms:title>
Labs: LOINC
<sp:codeProvenance>
<sp:CodeProvenance>
<sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" />
<dcterms:title>Random blood sodium level</dcterms:title>
Containers may need to translate from other
<sp:translationFidelity
rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" />
terminologies, with provenance
</sp:CodeProvenance>
</sp:codeProvenance>
</sp:CodedValue>
</sp:labName>
23. Data principles
Consistent coding systems
Example of a translated LOINC code
<sp:labName>
Medications: RxNorm (SCD, SBD)
<sp:CodedValue>
Problems: SNOMED CT
<sp:code rdf:resource="http://loinc.org/codes/2951-2"/>
<dcterms:title>Serum sodium</dcterms:title>
Labs: LOINC
<sp:codeProvenance>
<sp:CodeProvenance> source
<sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" />
<dcterms:title>Random blood sodium level</dcterms:title>
Containers may need to translate from other
<sp:translationFidelity
rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" />
terminologies, with provenance
</sp:CodeProvenance>
</sp:codeProvenance>
</sp:CodedValue>
</sp:labName>
24. Data principles
Consistent coding systems
Example of a translated LOINC code
<sp:labName>
Medications: RxNorm (SCD, SBD)
<sp:CodedValue> SMART translation
Problems: SNOMED CT
<sp:code rdf:resource="http://loinc.org/codes/2951-2"/>
<dcterms:title>Serum sodium</dcterms:title>
Labs: LOINC
<sp:codeProvenance>
<sp:CodeProvenance> source
<sp:sourceCode rdf:resource="http://local-emr/labcodes/01234" />
<dcterms:title>Random blood sodium level</dcterms:title>
Containers may need to translate from other
<sp:translationFidelity
rdf:resource="http://smartplatforms.org/terms/code/fidelity#automated" />
terminologies, with provenance
</sp:CodeProvenance>
</sp:codeProvenance>
</sp:CodedValue>
</sp:labName>
25. 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)
26. 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