SlideShare a Scribd company logo
Indivo iOS
framework
Goals


• Drop-in to existing Cocoa projects
• Provide a low entry barrier into PHR
• Make Indivo a viable choice for App developers
  who want to move their users’ data into the cloud
The framework


• Handles authentication (OAuth)
• Provides Indivo objects (automatic XML handling)
• Knows where an object comes from (REST paths)
• Provides messaging functionality
Handling OAuth


• Class INServerCall to encapsulate requests
• Uses MPOAuth, an OSS OAuth framework for
  iOS, transparently
‣ OAuth is handled for you
From Schema to Cocoa

• The developer should not have to deal with XML
  serialization/deserialization
‣ Provide classes for all Indivo document types
• We have to write Objective-C classes for all types
‣ A generator creates Cocoa classes from Indivo’s
  XSD and SDMJ schemas
Self-aware objects


• Document objects know their record
• Records know their server
• Framework knows the server actions
‣ REST methods can be inferred for all tasks
iOS framework
 Abstract logic into Cocoa objects


           selectRecord:

Server                      Record

         addDocumentOfClass:
         fetchReportsOfClass:


                                       push:

                                Docs   replace:
                                       archive:
                                       ...
App Flow
                             Setup


    server = [IndivoServer serverWithDelegate:self];




#define kIndivoFrameworkServerURL      @“http://10.17.20.127:8000”
#define kIndivoFrameworkUIServerURL    @“http://10.17.20.127:8001”

#define kIndivoFrameworkAppId          @“medsample@apps.indivo.org”
#define kIndivoFrameworkConsumerKey    @“nkd8cg02mgo34sntkao9”
#define kIndivoFrameworkConsumerSecret @“1acgk9804wkmraoceu02”
App Flow
                          Logging in


[server selectRecord:^{    }];




server.activeRecord
App Flow
              Adding a medication

Medication *med = [record addDocument:Medication];

med.drugName = [INCodedValue new];

med.drugName.title = @“Tylenol”;

med.drugName.system ...




                 [med push:^{   }];
App Flow
                Sending a message


[med.activeRecord sendMessage:@“New medication added”
                     withBody:@“See medlist app”

                       ofType:INMessageTypePlaintext
                     severity:INMessageSeverityMedium
                  attachments:nil
                     callback:^{ }];
Integrating Indivo Into
     Existing Apps
Growth Charts App
Growth Charts App
                         Data Models

CHPatientSource   selectPatient:^{ }



      CHPatient   ageAtDate:
                  measurementSetsContainingDataTypes:




                  CHMeasurementSet date
                          CHMeasurement value
                          CHMeasurement value
                          CHMeasurement value
Growth Charts App
                     Local Data Source




• Override selectPatient:
 • Instantiate   a CHPatient
 • Read   CSV data as measurement sets
Growth Charts App
                     Indivo Data Source

• Call Indivo’s selectRecord: method
• Within the callback block:
 • Fetch   patient demographics
 • Create   CHPatient with record demographics
 • Fetch   patient’s vitals
 • Convert    Indivo vitals into measurement sets
Growth Charts App
              Indivo-Enabled (read-only)


• 2 lines + app setup file to setup Indivo server
  instance
• 9 lines to convert IndivoRecord to CHPatient
• 21 lines to convert Indivo vitals into
  CHMeasurementSet
Documentation

• Take a look at README.md
• Checkout the sample medication app
• Technical documentation available online:
  http://docs.indivohealth.org/projects/indivo-x-ios-
                 framework/en/latest/
Playing with Medications
Version 2.0 α


  Available with the other Indivo sources from:
  https://github.com/chb/IndivoFramework-ios
Checkout branch dev_two (tag hackathon_2012)

More Related Content

ODP
Creating REST Webservice With NetBeans
PPTX
ASP.NET Lecture 4
PPTX
Cejv659 week09 glassfish-s14
DOCX
E script-Examples
PDF
PredictionIO - Scalable Machine Learning Architecture
PDF
PredictionIO - Building Applications That Predict User Behavior Through Big D...
PDF
Pathway to Cloud-Native .NET
PPTX
Sharepoint Saturday India Online best practice for developing share point sol...
Creating REST Webservice With NetBeans
ASP.NET Lecture 4
Cejv659 week09 glassfish-s14
E script-Examples
PredictionIO - Scalable Machine Learning Architecture
PredictionIO - Building Applications That Predict User Behavior Through Big D...
Pathway to Cloud-Native .NET
Sharepoint Saturday India Online best practice for developing share point sol...

What's hot (17)

PPTX
Programming web application
PDF
Introduce to PredictionIO
PPT
Ipro Enterprise Log Utility
PDF
Redux data flow with angular
PPTX
Cloud native programming model comparison
DOCX
servlet programming
PDF
Getting your data in and out of elasticsearch: let me count the ways
DOCX
Creating EPiServer Usage Reports
PPTX
APIs, APIs Everywhere!
PPTX
SharePoint Conference 2018 - APIs, APIs everywhere!
PPT
Understanding AJAX
PPT
Msdn Workflow Services And Windows Server App Fabric
PPTX
Introducing asp.net core mvc web application
PDF
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
PPTX
Js il 2013 breeze.js
PPT
Ajax Introduction
PPT
Dev308
Programming web application
Introduce to PredictionIO
Ipro Enterprise Log Utility
Redux data flow with angular
Cloud native programming model comparison
servlet programming
Getting your data in and out of elasticsearch: let me count the ways
Creating EPiServer Usage Reports
APIs, APIs Everywhere!
SharePoint Conference 2018 - APIs, APIs everywhere!
Understanding AJAX
Msdn Workflow Services And Windows Server App Fabric
Introducing asp.net core mvc web application
Dicoding Developer Coaching #20: Android | Apa itu Content Provider?
Js il 2013 breeze.js
Ajax Introduction
Dev308
Ad

Viewers also liked (10)

PDF
1sbc100122c0202 ch04
PDF
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
PPT
ios basics
PDF
MVVM on iOS
PPSX
Multiplatform App Architecture
PPTX
iOS Architecture
PDF
MVVM & RxSwift
PDF
iOS App Architecture
PPTX
Layer architecture of ios (1)
PPT
iOS Platform & Architecture
1sbc100122c0202 ch04
"Architecting and testing large iOS apps: lessons from Facebook". Adam Ernst,...
ios basics
MVVM on iOS
Multiplatform App Architecture
iOS Architecture
MVVM & RxSwift
iOS App Architecture
Layer architecture of ios (1)
iOS Platform & Architecture
Ad

Similar to the Indivo X iOS Framework (20)

PPTX
Basics Of Introduction to ASP.NET Core.pptx
PPTX
8-9-10. ASP_updated8-9-10. ASP_updated8-9-10. ASP_updated
PPTX
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
PPTX
MongoDB.local Atlanta: Introduction to Serverless MongoDB
PDF
MongoDB.local Berlin: App development in a Serverless World
PPTX
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
PPT
Smart-Indivo App Challenge Webinar
PDF
Easy integration of Bluemix services with your applications
PDF
[WSO2Con Asia 2018] Patterns for Building Streaming Apps
PPTX
Back to [Jaspersoft] Basics: Rest API 101
PPTX
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
PPTX
Build12 factorappusingmp
PPT
2010 08-26-smart-architecture
PPTX
PowerApps, the Developer Story: Build an API to Integrate Corporate Data
PDF
Server Side Swift - AppBuilders 2017
PPTX
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
PPTX
Meteor Meet-up San Diego December 2014
PPTX
Community call: Develop multi tenant apps with the Microsoft identity platform
PPTX
Multi cloud appcustomscale-appgroups-slideshare
Basics Of Introduction to ASP.NET Core.pptx
8-9-10. ASP_updated8-9-10. ASP_updated8-9-10. ASP_updated
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Berlin: App development in a Serverless World
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
Smart-Indivo App Challenge Webinar
Easy integration of Bluemix services with your applications
[WSO2Con Asia 2018] Patterns for Building Streaming Apps
Back to [Jaspersoft] Basics: Rest API 101
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
Build12 factorappusingmp
2010 08-26-smart-architecture
PowerApps, the Developer Story: Build an API to Integrate Corporate Data
Server Side Swift - AppBuilders 2017
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
Meteor Meet-up San Diego December 2014
Community call: Develop multi tenant apps with the Microsoft identity platform
Multi cloud appcustomscale-appgroups-slideshare

More from Children's Hospital Informatics Program (6)

PDF
Secondary Use of Healthcare Data for Translational Research
PPT
Intro: Indivo X 2012 Users' Conference
PPTX
SMART Architecture and Application Development Overview
PPTX
Indivo as a Personally-Controlled Research Platform for Chronic Disease Regis...
PPTX
2012 User's Conference SMART-Indivo Integration
PPTX
2012 User's Conference Indivo Updates
Secondary Use of Healthcare Data for Translational Research
Intro: Indivo X 2012 Users' Conference
SMART Architecture and Application Development Overview
Indivo as a Personally-Controlled Research Platform for Chronic Disease Regis...
2012 User's Conference SMART-Indivo Integration
2012 User's Conference Indivo Updates

Recently uploaded (20)

PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
August Patch Tuesday
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
1. Introduction to Computer Programming.pptx
PDF
Getting Started with Data Integration: FME Form 101
PDF
project resource management chapter-09.pdf
PPTX
Chapter 5: Probability Theory and Statistics
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Architecture types and enterprise applications.pdf
PDF
STKI Israel Market Study 2025 version august
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Web App vs Mobile App What Should You Build First.pdf
August Patch Tuesday
A contest of sentiment analysis: k-nearest neighbor versus neural network
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
cloud_computing_Infrastucture_as_cloud_p
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
1. Introduction to Computer Programming.pptx
Getting Started with Data Integration: FME Form 101
project resource management chapter-09.pdf
Chapter 5: Probability Theory and Statistics
Final SEM Unit 1 for mit wpu at pune .pptx
Architecture types and enterprise applications.pdf
STKI Israel Market Study 2025 version august
A comparative study of natural language inference in Swahili using monolingua...
Group 1 Presentation -Planning and Decision Making .pptx
Hybrid model detection and classification of lung cancer
WOOl fibre morphology and structure.pdf for textiles
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
observCloud-Native Containerability and monitoring.pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx

the Indivo X iOS Framework

  • 2. Goals • Drop-in to existing Cocoa projects • Provide a low entry barrier into PHR • Make Indivo a viable choice for App developers who want to move their users’ data into the cloud
  • 3. The framework • Handles authentication (OAuth) • Provides Indivo objects (automatic XML handling) • Knows where an object comes from (REST paths) • Provides messaging functionality
  • 4. Handling OAuth • Class INServerCall to encapsulate requests • Uses MPOAuth, an OSS OAuth framework for iOS, transparently ‣ OAuth is handled for you
  • 5. From Schema to Cocoa • The developer should not have to deal with XML serialization/deserialization ‣ Provide classes for all Indivo document types • We have to write Objective-C classes for all types ‣ A generator creates Cocoa classes from Indivo’s XSD and SDMJ schemas
  • 6. Self-aware objects • Document objects know their record • Records know their server • Framework knows the server actions ‣ REST methods can be inferred for all tasks
  • 7. iOS framework Abstract logic into Cocoa objects selectRecord: Server Record addDocumentOfClass: fetchReportsOfClass: push: Docs replace: archive: ...
  • 8. App Flow Setup server = [IndivoServer serverWithDelegate:self]; #define kIndivoFrameworkServerURL @“http://10.17.20.127:8000” #define kIndivoFrameworkUIServerURL @“http://10.17.20.127:8001” #define kIndivoFrameworkAppId @“medsample@apps.indivo.org” #define kIndivoFrameworkConsumerKey @“nkd8cg02mgo34sntkao9” #define kIndivoFrameworkConsumerSecret @“1acgk9804wkmraoceu02”
  • 9. App Flow Logging in [server selectRecord:^{ }]; server.activeRecord
  • 10. App Flow Adding a medication Medication *med = [record addDocument:Medication]; med.drugName = [INCodedValue new]; med.drugName.title = @“Tylenol”; med.drugName.system ... [med push:^{ }];
  • 11. App Flow Sending a message [med.activeRecord sendMessage:@“New medication added” withBody:@“See medlist app”
 ofType:INMessageTypePlaintext severity:INMessageSeverityMedium attachments:nil callback:^{ }];
  • 12. Integrating Indivo Into Existing Apps
  • 14. Growth Charts App Data Models CHPatientSource selectPatient:^{ } CHPatient ageAtDate: measurementSetsContainingDataTypes: CHMeasurementSet date CHMeasurement value CHMeasurement value CHMeasurement value
  • 15. Growth Charts App Local Data Source • Override selectPatient: • Instantiate a CHPatient • Read CSV data as measurement sets
  • 16. Growth Charts App Indivo Data Source • Call Indivo’s selectRecord: method • Within the callback block: • Fetch patient demographics • Create CHPatient with record demographics • Fetch patient’s vitals • Convert Indivo vitals into measurement sets
  • 17. Growth Charts App Indivo-Enabled (read-only) • 2 lines + app setup file to setup Indivo server instance • 9 lines to convert IndivoRecord to CHPatient • 21 lines to convert Indivo vitals into CHMeasurementSet
  • 18. Documentation • Take a look at README.md • Checkout the sample medication app • Technical documentation available online: http://docs.indivohealth.org/projects/indivo-x-ios- framework/en/latest/
  • 20. Version 2.0 α Available with the other Indivo sources from: https://github.com/chb/IndivoFramework-ios Checkout branch dev_two (tag hackathon_2012)