AWS Community Day CPH - Three problems of Terraform
Google Health Architecture & API
1. Chief
MedicalS Officer
O p e n o u r c e
G o o g l e H e a l t h P r o j e c t
Nov 11, 2009
Google Technology User Group (GTUG)
Googleplex 43, Mountain View, CA USA
2. Overview
O u r S t o r y : G TA P, G T U G ,
a n d “ G e e W i z ”
G o o g l e H e a l t h a n d P H R
A r c h i t e c t u r e
B u i l d i n g a G o o g l e
H e a l t h A p p l i c a t i o n
J u s t E n o u g h G o o g l e
H e a l t h A P I
B o l d P r e d i c t i o n s f o r t h e
F u t u r e
Chief Medical Officer
3. GTAP
Google Technology
Apprentice Program
Mentor
Student
Student
Mentor
Student
Student
Student
Chief Medical Officer
4. Mentors
Program Mentors
Tom Wilson / Bess Ho
e-Patient Mentor
Jen McCabe
Contributing Developers
Chip Vanek
Laura Klemme
Ray Valdes
Chief Medical Officer
5. Students
Design
Michael Klemme
Priya Chawathe
Priyanka Naik
Rylan Valdes
Programming
Jason Boyle
Chief Medical Officer
8. Brainstorming Ideas
Inspired by Star Trek’s Vision of Future!
“Bridge To Sick Bay! The family PHR needs to
be more like Star Trek. Make it so.”
The CCR data format is based on clinical
ontology.
CCR is XML, can be transformed into a more
family-friendly format.
10. The Summer Project
Build a better PHR.
Create a framework for experimenting with
new PHR UIs.
Test different transforms of health data to
create new UI scenarios.
Combine multiple individual health profiles into
a single family health profile.
Chief Medical Officer
11. Application Framework
Google Health
ATOM Feed
GData
API
XML
XQuery/
XSLT
JSON
JavaScript (JQuery)
Web Mobile
Titanium Framework
HTML / CSS / JS
iPhone Android
Chief Medical Officer SDK 3.0 SDK 1.5
12. Experiments
Google Health Google Health
Raw Data Raw Data
ATOM Feed ATOM Feed
Python XSLT
Extracted Data Extracted Data
XML XML
Python Python
Rearranged Data Rearranged Data
XML JSON
JavaScript JavaScript (JQuery)
Display Data Display Data
HTML HTML
CMO CMO
Chief Medical Officer
13. Next
Google Health
Raw Data
ATOM Feed
Java
Extracted Data
API Extracted Data
XML XML
Google
XSLT Collections
Display Data Rearranged Data
HTML XML Fragments
CMO XPath
Display Data
Flex
CMO
Chief Medical Officer
14. UI Experiment: Mobile
Beta
SDK Framework
Ideal for Beginner
Developers
iPhone Android
Chief Medical Officer
15. UI Experiment: Mobile
HTML / CSS / JavaScript
SDK Framework
iPhone SDK 3.0 Android SDK 1.5
Objective-C / Cocoa Touch Java
Native
Mobile App
Chief Medical Officer
19. Google Health
Data Model
CCR Record GData Feed
Patient Atom Elements
Medications Procedure
Immunizations CCR Fragment
Allergy
Conditions
CCR Fragment
Diagnosis
Immunization
Procedures
CCR Fragment
Chief Medical Officer
20. A View of Your
Health Record
today
time
ALLERGY
CONDITION
IMMUNIZATION
PROCEDURE
MEDICATION
LABTEST
category
21. A View of Your
Health Record
today
time
ALLERGY
CONDITION
IMMUNIZATION
PROCEDURE
MEDICATION
LABTEST
category
22. A View of Your
Health Record
today
time
ALLERGY
CONDITION
IMMUNIZATION
PROCEDURE
MEDICATION
LABTEST
category
23. A View of Your
Health Record
today
time
ALLERGY
CONDITION
IMMUNIZATION
PROCEDURE
MEDICATION
LABTEST
category
24. Health Data
Retrieval
XML
URL/medication URL/immunization URL/condition
Google Health APIs
HTTP/REST
Google Health
Data Store
Chief Medical Officer
25. Profile View
https://www.google.com/health
Using your Google Account
Collect Store Manage Share
Add / Delete Default Add / Delete
Profile Profile Profile
+ Conditions + Procedures
+ Medications + Tests
+ Allergies + Immunizations
Chief Medical Officer
26. GData
API Model
Google Health APIs
Atom Publishing Protocol
Simple Format Simple Protocol
Atom Syndication Format HTTP
Google Extensions
Data Model
Query
Concurrency
Authentication
Chief Medical Officer
27. GData Layers Never Delete!
AuthSub/OAuth/ClientLogin
Security / Token Management
GET PUT UPDATE DELETE
Embedded
CCR Entires
Raw Data
ATOM Feed
REST Interface
Google Health API
Google Health
Chief Medical Officer Data Store
28. PHR Platform
Architecture
UI & UXP Specifications
Web Mobile
HTML / CSS / JavaScript iPhone / Android
Architecture & Platform
XSLT
Google Health API
Google App Engine
Authentication
Chief Medical Officer
29. XSLT
Transformation
Google Health CMO
CCRg
XSLT/XPath Medications
Extract data by criteria Immunizations
Conditions
Diagnosis
Procedures
Organized
Formatted
Fragmented
Chief Medical Officer
30. Security
PHI v. non-PHI - know what this is!
Leave PHI issues to Google (as much as
possible).
The PHR application is a secure data conduit
from one authorized party to another.
You are NOT authorized, and neither is the
QA department.
31. The Sandbox
Public Private
Production Developer’s Sandbox
https://www.google.com/health https://www.google.com/h9
Digitally signed secure=0 tokens or client login
https://www.google.com/health https://www.google.com/h9
Register domain with Google & http://localhost is already registered
Google Health. Upload X.509 certificate on h9
to sign requests
https://www.google.com/health/feeds/ https://www.google.com/h9/feeds/
Chief Medical Officer
32. Register Domain
Google Health API
Public
Terms and Conditions
Production
https://www.google.com/health
Must read agree to API
Register domain name with Google
Terms of Service
Register domains & sub domains with
Google Health separately
Create a self-signing X.509 public
certificate via Manage Domains Tool
Create different digital signatures for
AuthSub request & OAuth request
Chief Medical Officer
33. Certificate
Public
Production
https://www.google.com/health
Register domain name with Google
Register domains & sub domains with
Google Health separately
Create a self-signing X.509 public
certificate via Manage Domains Tool
Create different digital signatures for
AuthSub request & OAuth request
Chief Medical Officer
34. Keys
Public
Production
https://www.google.com/health OpenSSL utility
Java’s keytool utility
Register domain name with Google
Register domains & sub domains with
Google Health separately
Create a self-signing X.509 public
certificate via Manage Domains Tool private key public key
Create different digital signatures for
AuthSub request & OAuth request
Chief Medical Officer
35. Signature
Public
Production
https://www.google.com/health
Create a self-signing X.509 public
certificate via Manage Domains Tool
private key public key
public certificate
1024-bit RSA key
signature encoded in an X.509 certificate
in PEM format
Chief Medical Officer
37. OAuth
OAuthGetRequestToken Public
Production
OAuthAuthorizeToken
OAuth requests signature
OAuthGetAccessToken
Chief Medical Officer
38. Signature Method
Public
Production
https://www.google.com/health
Migrating from AuthSub to OAuth
No need to re-register with Google
Specify the signature method
AuthSub OAuth
Secure Tokens = Access Tokens
Chief Medical Officer
39. Building Google
Health Applications
1 Create security framework
2 Create test account on h9
3 Populate h9 account with initial test data
Chief Medical Officer
40. Building Google
Health Applications
4 Use gdata API to read your h9 CCR record
Parse, format, and display data
5 from CCR
6 Build a new CCR fragment
Write back to Google Health by sending
7 new CCR fragment to REST API
Chief Medical Officer
41. Code Example
Retrieve and rearrange Google Health Data.
Combine multiple individual profiles into a
family profile, and display by category.
42. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
43. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
44. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
45. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
46. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
47. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
48. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
49. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
50. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
51. Data Transform
Google Health CMO
Mom Allergies
Allergies Mom
Medications Dad
Immunizations Kid
Dad Medications
Allergies Mom
Medications Dad
Immunizations Kid
Kid Immunizations
Allergies Mom
Medications Dad
Immunizations Kid
Chief Medical Officer
52. Data Flow
Google Health
ATOM Feed
JAVA API
XML
CCR DATA STRUCTURES
XSLT XPATH
Display Document Display Elements
Chief Medical Officer
53. Data Structures: Maps
Profile Dictionary
Key Profile Name
Map
URL
REST ID GData
Value
Query
Profile Data
Key Profile Name
GData
Map
Feed XSLT
CCRg Display
Value
Chief Medical Officer
54. Using Multimaps
(Google Collections Library)
Display
CCR
Key Category
Profile Name
Map Key
Mother
Value
MultiMap
Family
Value CCR Father Health
Profile
Child
Chief Medical Officer
56. Google Health
Wish List
Create Profile API - for a “build my family
profile” UI
XQuery API - finer grained queries for
specific clinical data
Chief Medical Officer
58. Bold Predictions
(which should surprise no one)
Chief Medical Officer
59. Bold Predictions
(which should surprise no one)
A typical family will have at least one member
who acts as a“chief medical officer,”
managing the family’s health records.
Chief Medical Officer
60. Bold Predictions
(which should surprise no one)
A typical family will have at least one member
who acts as a“chief medical officer,”
managing the family’s health records.
Managing the family’s medical records will
be as easy as managing the family’s finances.
Chief Medical Officer
61. Bold Predictions
(which should surprise no one)
A typical family will have at least one member
who acts as a“chief medical officer,”
managing the family’s health records.
Managing the family’s medical records will
be as easy as managing the family’s finances.
Children born in hospitals with EMR systems today will
have lifetime PHRs as adults.
Chief Medical Officer
62. References
Google Health API:
http://code.google.com/apis/health/
http://groups.google.com/group/googlehealthdevelopers
CCR:
http://ccrstandard.com
http://code.google.com/apis/health/ccrg_reference.html
http://sourceforge.net/projects/ccr-resources/
Chief Medical Officer
63. References
CMO Project:
http://code.google.com/p/chiefmedicalofficer/
GAE:
https://chiefmedicalofficer.appspot.com
Chief Medical Officer
64. Thank You.
Any Questions?
Chief Medical Officer