Transcript PPT1
SMArt Architecture
Ben Adida
Josh Mandel
26 August 2010
SMArt Developers’ Meeting
Goal-Driven
Architecture
• we want end-user apps
to be installable and substitutable on
i2b2, CareWeb, Indivo (+ commercial vendors)
• Why?
An ecosystem that fosters innovation.
• so, the best approach
is to derive requirements from
the POV of SMArt app developers.
• + requirements of usability of integration.
Let’s go Deeper
We need more details
(software components are not legos)
inspiration
- (void)viewDidLoad {
[super viewDidLoad];
EKEventStore *eventStore = [[EKEventStore alloc] init];
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title
= @"EVENT TITLE";
event.startDate = [[NSDate alloc] init];
event.endDate
= [[NSDate alloc] initWithTimeInterval:600
sinceDate:event.startDate];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent
error:&err];
}
An app connects
to one app container
A container connects to
multiple data sources
different containers
fulfill the contract
in different ways.
The app does not contact
data sources directly.
That’s the container’s
job.
App
Container
Data
Source
Substitutability
works both ways
The App gets...
• one API, data from many sources
add a source, no change to app.
• unambiguous patient record
app never performs fuzzy matching,
data de-duplication, etc.
Web APIs
• inspired by successful APIs:
Facebook, OpenSocial, ...
• REST
• Apps can be run on separate servers
using different implementation stacks
• UX Integration via IFRAME
Authentication?
• i2b2, Indivo, CareWeb, don’t have
the same authentication mechanism!
• How can the same app possibly work
against all of these?
• Each container implements a consistent
mechanism for delegating access:
oAuth.
• The app only needs to speak oAuth.
User delegates
access
to SMArt app
UI Integration
• Augmenting i2b2, Indivo, CareWeb
natively is ideal: existing authentication
reused, just add oAuth delegation.
• IFRAME wrapped by
container-specific context.
Faster: SMArt
Connect
Faster: SMArt
Connect
Faster: SMArt
Connect
Data Representation
• single data representation across
platforms
(make it easy for the app)
• accommodate varying detail granularity
• rely on existing technology for
transforming existing data to this rep
• RDF & SPARQL
In Summary
• make life easier for the app,
reduce likelihood of errors in the app,
do the hard stuff in the container
• datasource != container
these legos are not all the same
• ideal SMArt container does
oAuth and SMArt Connect natively
so as to leverage existing (i2b2/Indivo)...
features.
• RDF universal representation + toolset