Upload
others
View
17
Download
1
Embed Size (px)
Citation preview
Introduction to FHIR & SMART
AgendaDesigning with FHIR
SMART on FHIR
1
2
3 Demo
Hands-on Lab4
01Designing with FHIR
FHIR
● F – Fast (to design & to implement)
● H – Healthcare
● I – Interoperability
● R – Resources
http://hl7.org/fhir/
FHIR serves two technical roles in healthcare IT
FHIR as a data modelFHIR as an API specification
What does FHIR provide?
● Resources (building blocks)● Human readability● Extensions (part of the spec)● Methodology
○ Bundles, Profiles, Conformance
● Syntax (XML, JSON)● Support for multiple Paradigms
○ REST, Messaging, Documents
Resources
● Defined Structured Data○ The logical, common contents of the resource○ Mapped to formal definitions/RIM & other formats○ Syntax – XML, JSON and RDF (JSON-LD)
● Narrative○ Human readable
● Extensions○ Local requirements, but everyone can use○ Published and managed
FHIR Resources
● Administrative○ Patient, Practitioner, Organization,
Location, Coverage, Invoice● Clinical Concepts
○ Allergy, Condition, Family History, Care Plan
● Infrastructure○ Document, Message, Profile, Capability
● Gender○ Too small
● Electronic Health Record○ Too big
● Blood Pressure○ Too specific
● Intervention○ Too broad
Examples Non-examples
{
"resourceType": "Patient", "id": "example", "meta": { "versionId": "1", "lastUpdated": "2017-01-03T16:05:00.792Z" }, "text": { "status": "generated", "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>Henry Levin the 7th</p></div>" }, "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/us-core-birthsex", "valueCode": "M" } ], "identifier": [ { "use": "usual", "system": "urn:oid:1.2.36.146.595.217.0.1", "value": "12345" } ], "active": true, "name": [ { "use": "official", "family": "Levin", "given": [ "Henry“ ], "suffix": [ "the 7th“ ] } ], "gender": "male", "birthDate": "1974-12-25", "managingOrganization": { "reference": "Organization/example" }}
Human Readable Summary
Standard Data Content:∙ Patient Identity∙ Name∙ Gender∙ Date of Birth∙ Provider
Extension with reference to its definition
FHIR Id & Metadata
Patient in FHIR
{
"resourceType": "Procedure", "id": "example", "status": "completed", "code": { "coding": [ { "system": "http://snomed.info/sct", "code": "80146002", "display": "Appendectomy (Procedure)" } ], "text": "Appendectomy" }, "subject": {
"reference": "Patient/example_patient" }, "performedDateTime": "2013-04-05", "performer": [ { "actor": {
"reference": "Practitioner/example_practitioner", "display": "Dr Cecil Surgeon" } } ], "reasonCode": [ { "text": "Generalized abdominal pain 24 hours. Localized in RIF with rebound and guarding" } ], "followUp": [ { "text": "ROS 5 days - 2013-04-10" } ]}
Patient
Practitioner
subject
Procedure
performer
Reference
FHIR Version History since DSTU #1
Source: https://www.hl7.org/fhir/history.html
FHIR version DSTU2 STU3 R4
# of resources 93 117 145
AccountActivityDefinitionAllergyIntoleranceAdverseEventAppointmentAppointmentResponseAuditEventBasicBinaryBodySiteBundleCapabilityStatementCarePlanCareTeamChargeItemClaimClaimResponseClinicalImpressionCodeSystemCommunicationCommunicationRequestCompartmentDefinitionCompositionConceptMap
ConditionConsentContractCoverageDataElementDetectedIssueDeviceDeviceComponentDeviceMetricDeviceRequestDeviceUseStatementDiagnosticReportDocumentManifestDocumentReferenceEligibilityRequestEligibilityResponseEncounterEndpointEnrollmentRequestEnrollmentResponseEpisodeOfCareExpansionProfileExplanationOfBenefitFamilyMemberHistory
FlagGoalGraphDefinitionGroupGuidanceResponseHealthcareServiceImagingManifestImagingStudyImmunizationImmunizationRecommendImplementationGuideLibraryLinkageListLocationMeasureMeasureReportMediaMedicationMedicationAdministrationMedicationDispenseMedicationRequestMedicationStatementMessageDefinition
MessageHeaderNamingSystemNutritionOrderObservationOperationDefinitionOperationOutcomeOrganizationParametersPatientPaymentNoticePaymentReconciliationPersonPlanDefinitionPractitionerPractitionerRoleProcedureProcedureRequestProcessRequestProcessResponseProvenanceQuestionnaireQuestionnaireResponseReferralRequestRelatedPerson
RequestGroupResearchStudyResearchSubjectRiskAssessmentScheduleSearchParameterSequenceServiceDefinitionSlotSpecimenStructureDefinitionStructureMapSubscriptionSubstanceSupplyDeliverySupplyRequestTaskTestScriptTestReportValueSetVisionPrescription
FHIR Resources - STU3
http://hl7.org/fhir/STU3/resourcelist.html
Where can FHIR be used?
● Health Information Exchanges (HIE)● Interoperability within and across Healthcare
organizations● Electronic Health Record (EHR) Systems● Integrate with Payer systems● Web and Mobile Applications for Patients and Clinicians
ONC Standards
● Clinical Health Information
Interoperability Standards
○ API Resource Collection in Health (ARCH)
https://www.healthit.gov/isa/sites/isa/files/inline-files/ARCH%202019%20v1.pdf
○ U.S. Core Data for Interoperability (USCDI)
https://www.healthit.gov/isa/sites/isa/files/inline-files/USCDIv12019revised2.pdf
ONC: Office of National Coordinator for Health IT
Source: https://www.healthit.gov/isa/onc-standards
API Resource Collection in Health (ARCH)
ONC: Office of National Coordinator for Health IT
Source: https://www.healthit.gov/isa/onc-standards
● AllergyIntolerance● CarePlan● Condition● Device● DiagnosticReport● DocumentReference● Goal● Immunization
● Medication● MedicationOrder● MedicationStatement● Observation● Patient● Procedure● Provenance
New ONC Rule: The following FHIR resources must be supported.
● Set of health data classes and constituent data elements for nationwide, interoperable health information exchange
○ A USCDI “Data Class” is an aggregation of various Data Elements by a common theme or use case.
○ A USCDI “Data Element” is the most granular level at which a piece of data is represented in the USCDI for exchange.
U.S. Core Data for Interoperability (USCDI)
ONC: Office of National Coordinator for Health IT
Source: https://www.healthit.gov/isa/onc-standards
Interoperability Paradigms
● REST
● Documents
● Messages
REST
● Simple, out-of-the-box interoperability
● Leverage HTTP Methods: GET, POST, etc.
● Pre-defined operations:
○ Create, Read, Update, Delete
○ Also: History, Read Version, Search, Updates, Validate, Conformance & Transaction
Reference: http://hl7.org/fhir/http.html#capabilities
FHIR REST URLsURI Description Example Operations
[base] Server URL http://fhir.com GET, POST
[base]/metadata Server’s capabilities http://fhir.com/metadata GET
[base]/[resource] Colleciton Manager http://fhir.com/Patient GET, POST
[base]/[type]/[id] URL for a resource http://fhir.com/Patient/23 GET, PUT, DELETE, PATCH
[base]/[type]/[id]/_history/[vid] Past version http://fhir.com/Patient/23/_history/2 GET
[base]/([type]/([id])/$[op_name] Operation (server action)
http://fhir.com/Patient/23/$everything GET, POST
Reference: http://hl7.org/fhir/http.html#capabilities
Documents
● Similar to CDA®
● Collection of resources bound together
○ Root is a “Composition” resource
○ Just like CDA® header
● Sent as a Bundle (FHIR Resource) of type ‘document’
● Can be signed, authenticated, etc.
CDA®: Clinical Document Architecture
A coherent set of information that is a statement of healthcare information, including clinical observations & services.
Source: http://hl7.org/fhir/R4/documents.html
Documents
Reference: http://hl7.org/fhir/documents.html
Bundle (type: document)
entry
Composition
Practitioner Encounter
Observation
MedicationRequest
subject encounter
MedicationStatement
signature
id meta datetext status type
section
title
Patient
author
confidentiality
Messages
● Similar to v2 and v3 messaging● Also a collection of resources as a Bundle (FHIR
Resource)● Allows request/response behavior for both request and
response payloads● Event-driven
○ e.g. Send lab order, get back result
● Can be asynchronous
Source: https://www.hl7.org/fhir/messaging.html
Bundle (type: message)
entry
MessageHeader
Messages
reason
Practitioner Observation
Device
id text
eventCoding
source
dataenterer
destination
Organization
sender
Practitioner
author
response
Patient
Cloud Healthcare APICloud Healthcare API offers a robust, scalable infrastructure that integrates with various healthcare data sources using industry-standard protocols to bridge the gap to the Cloud. Currently, Cloud Healthcare API supports FHIR, HL7 v2 and DICOM.
Currently in Beta
Data interoperability, your way
Import Export
API
Bulk
Streaming
Bulk
Create Get List Delete Search
Interact
De Identify
HL7v2 Config*
FHIR Config
DICOM Config
TextConfig Pub/Sub
Notify
Subscribe
Currently in Beta
● Provide a FHIR (STU3) REST/gRPC API that supports the FHIR specification to a high level of conformance
● Persist FHIR resources in a managed store in the Cloud● Provide FHIR structural validation, referential integrity
and versioning● Batch Import/Export from Cloud Storage & BigQuery● De-identify FHIR resources● Provide publish/subscribe integration with applications,
including FHIR subscriptions● Implement a set of security roles and permissions to
control what can be done with the API● Works with Apigee
What a Cloud FHIR store does today
Google Cloud services meet fundamental security and privacy
protection requirements for protected health information.
https://cloud.google.com/security/compliance/hipaa
HIPAA-compliant as of June 2018: Gmail, Calendar, Drive (including Docs, Sheets, Slides, and Forms), Apps Script, Keep, Sites, Jamboard, Hangouts (chat messaging feature only), Hangouts Chat, Hangouts Meet, Google Cloud Search, Cloud Identity Management, Google Groups, Google Tasks and Vault (if applicable). App Engine, BigQuery, Bigtable, Data Loss Prevention API, Dataflow, Dataproc, Datastore, Datalab, Deployment Manager, Identity-Aware Proxy, IoT Core, Key Management Service, Load Balancing, Machine Learning Engine, Natural Language API, Pub/Sub, Resource Manager, Source Repositories, Spanner, Speech API, Stackdriver Debugger, Stackdriver Error Reporting, Stackdriver Logging, Stackdriver Trace, Storage, SQL for MySQL, SQL for PostgreSQL, Translation API, Video Intelligence API, Vision API, VPN, Compute Engine, Container Registry, Genomics, Kubernetes Engine, Transfer Appliance Service.
Supports healthcare compliance objectives
02SMART on FHIR
● Open standards to integrate third-party Apps and EHRs/Patient Portal○ OpenID Connect and OAuth2 based
● Reusable Apps○ Write once run with any EHRs!○ Run in different contexts (EHRs and Patient Portals)
● Secure and seamless access to EHR data in Apps
SMARTSubstitutable Medical Applications and Reusable Technologies
● Substitutable Medical Applications and Reusable Technologies
SMART standardizes healthcare applications
Healthcare Applications SMART Clinical
Systems
UX IntegrationSingle Sign OnAuthorization
Clinical Data and Context
EHRsPatient Portals
Data Warehouses
Standalone launch
App EHR1a. Data access requested (scopes)
2a. Authorization token for data access, user identity, context (current patient, encounter), UI related information
3a. FHIR API request with OAuth2 Access token
3b. FHIR resources
2. Authorize
Access
3. Display Data
1. Launch an App
EHR/Patient Portal launch
App EHR
1b. Data access requested (scopes)
2a. Authorization token for data access, user identity, context (current patient, encounter), UI related information
3a. FHIR API request with OAuth2 Access token
3b. FHIR resources
1. Launch an App from the
registered Apps
3. Display Data
1a. Launch information (server URL, token)
2. Authorize Access
SMART Authorization Scopes
● Scope conveys what access an app needs patient/Immunization.read
Access type FHIR Resource Permission
App needs read access to the Immunization information of a patient in the current context
Examples:
1. patient/Patient.read - App needs read access to the demographics of a patient in the context2. patient/*.read - App needs access to read all resources of the patient in current context3. user/Patient.write - App needs access to update Patient demographics of all the patients4. user/*.read - App needs access to read all resources of all the patients
SMART App Gallery
https://smarthealthit.org
https://apporchard.epic.com/Gallery
https://code.cerner.com/apps
SMART Sandbox and App Launcherhttp://launch.smarthealthit.org/
03Now, let’s see Google CHC APIs in action...
Cloud Healthcare Dataset and FHIR Store
GCP Project = smart-on- ir
Location = us-central1
Dataset = hc-ds Dataset
FHIR store = fs1
FHIR store
FHIR store
Patient
Encounter
Observation
Access CHC FHIR APIs directly - Query Patient
1. Get all Patients ----> GET /Patient
2. Search Patients ----> GET /Patient?given:contains=Marta&address-city=Wilmington
3. Get Patient demographics ----> GET /Patient/{id}
4. Get Patients’ Medical History ----> GET /Patient/{id}/$everything
CHC FHIR APIsPostman/cURL
App Developer
{
"resourceType": "Consent", "status": "draft",
"id": "bdcda431-be0b-4ca9-82d5-a262107ba463", "meta": { "lastUpdated": "2019-10-08T21:44:07.131057+00:00", "versionId": "MTU3MDU3MTA0NzEzMTA1NzAwMA" }, "text": { "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"> <p><b>Generated Narrative with Details</b></p>....</div>", "status": "generated" } "organization": [ { "reference":" Organization/b1ddf812-1fdd-3adf-b1d5-32cc8bd07ebb" } ], "patient": { "reference": "Patient/6285e6e0-74a5-423c-bb2e-627b9cd8f293" }, }
CRUD Consent
1. Get all Consents ----> GET /Consent
2. Create a Consent ----> POST /Consent
3. Update a Consent ----> PUT /Consent
4. Delete a Consent ----> DELETE /Consent/{id}
Consent Organization
Patient
organization
patient
04Hands-on Lab
How to access the lab?
● https://explore.qwiklabs.com/
● Create a New Account using your @stanford.edu email
● Login using your @stanford.edu email and password
● Select the Course: CS 342: Building for Digital Health (MED 253)
● Lab: Introduction to Healthcare FHIR APIs
NOTE: The lab will not be available after Tuesday, 19th November
Get started with GCP!
https://cloud.google.com/free/docs/gcp-free-tier
Thank you