1. Intelligent Health Lab
Indivo X:
Progress and Updates
Daniel Haas
Harvard Medical School
Children’s Hospital Informatics Program
18 June, 2012
2. Intelligent Health Lab
Project Updates
• v2.0 Release!
http://github.com/chb/indivo_[ui_]server
• Public Sandbox:
http://sandbox.indivohealth.org
With sample data
Don’t put real data in there!
• Hackathon Tomorrow!
Bring your laptops
Bring your ideas, and tell us now (@indivohealth)
3. Intelligent Health Lab
Development Updates
• Pluggable Data models (and schemas and
transforms)
• Data model validation
• Sample Data (and demo mode)
• New app loading mechanism (using SMART
manifests)
• New Python Client (with documentation)
• More support for JSON/RDF
• New authentication modes for apps
• SMART integration
6. Intelligent Health Lab
Pluggable Validation
• Still accepting data as XML
• Still validating with XSDs
• …But now they are drag-and-drop!
• Tutorials tomorrow at the hackathon
8. Intelligent Health Lab
Pluggable Transforms
• Goal of a Transform: get from an XML document
to an Indivo Fact
• Formats: XSLT or Python code
• …And now they are drag-and-drop!
• Tutorials tomorrow at the hackathon
10. Intelligent Health Lab
Pluggable Data Models
• SDML: a simple descriptive language for data-
models.
• Define your data models: SDML or Django
• …And add them (you guessed it: drag-and-drop!)
• Tutorials tomorrow at the hackathon
12. Intelligent Health Lab
Pluggable Retrieval
• Automatic reporting call which retrieves your data as SDML: no
work required.
• Python plug-ins:
Custom serialization (what does your model look like in JSON? XML?)
Custom reports (want an API call to return multiple data models at
once?)
• Drag-and-drop serializers (not custom reports, sorry)
• Tutorials tomorrow at the hackathon
13. Intelligent Health Lab
Pluggable Document Processing:
Summary
• With zero python code, you can:
Add a new recognized schema to Indivo
Map that schema to current data models, or
Add your own new data model
Make API calls to add and retrieve data
corresponding to your new types.
14. Intelligent Health Lab
Sample Data
• It’s hard to write an app against nothing!
• We’ve added two mechanisms for loading
sample data into records:
Demo Mode
Fixed sample accounts
15. Intelligent Health Lab
Sample Data: Format
• “Sample data” is a directory of data profiles.
• A “data profile” is a directory of documents
containing data (for one patient).
• A “data profile” should have a
Demographics.xml file.
• A “patient” is identified by the name of the
directory
• And that’s it!
16. Intelligent Health Lab
Demo Mode
• When you create a new account, it is auto-
populated with a configurable set of records
containing sample data
DEMO_MODE =True
DEMO_PROFILES = {
‘John Doe’: ‘patient_239852’,
‘Jane Doe’: ‘patient_665677’,
‘Timmy Doe’: ‘patient_736230’,
}
17. Intelligent Health Lab
Fixed Sample Accounts
• When resetting Indivo, you can configure accounts to be auto-created with
specific sets of records and data
<account email='test@test.org'>
<full_name>Test User</full_name>
<username>test</username>
<password>test</password>
<records>
<record label='Test Testerson' data_profile='patient_967332'/>
<record label='Mary Testerson' data_profile='patient_897185'/>
<record label='Fred Testerson' data_profile='patient_880378'/>
</records>
</account>
18. Intelligent Health Lab
Updating and Adding Registered Apps
• Previously: had to reset the whole Indivo
database
• Now: drag-and-drop into the filesystem
• We think this is nicer.
19. Intelligent Health Lab
Registering an App: Manifest
• SMART manifest: simple JSON describing an
app.
• Extra Indivo options (has_ui, oauth_callback)
also supported.
22. Intelligent Health Lab
Pulling it all together
• Write (or update) a manifest file
• Write (or update) a credentials file
• Drop the new files into a directory for your
app, and place it under
indivo_server/registered_apps/user/
• Run one command:
$ python manage.pysync_apps
• And you’re done!
Describe the pipeline: * Documents enter, Serialized objects exit: but you can still grab the original document. * goal: be able to add to every step of the pipeline without having to write python code.
SDM: JSON or XML –based, low-level (String, Number, Date) and high-level (Coded-Value, ValueAndUnit, Address) data-types