SlideShare a Scribd company logo
1 of 34
Download to read offline
A GraphQL approach to Healthcare Information
Exchange with HL7 FHIR
Suresh Kumar Mukhiya, Fazle Rabbi, Ka I Violet Pun,
Adrian Rutle, Yngve Lamo
� skmu@hvl.no
November 5, 2019
(HVL) Health Information Exchange November 5, 2019 1 / 34
Who are we?
Our aim is to improve public mental health with Adaptive
technologies (ICT) and psychological treatments.
Team of Domain experts, Software Engineers, ML engineers, HCI
engineers and Industry.
(HVL) Health Information Exchange November 5, 2019 2 / 34
Why is Health Information(HI) management so hard?
Health
Information Management
Complex health information
Life and death
Confidentiality
Diversity of information
Free Text
Medication handling
Questionnaire, Checklist etc
Images, Videos, Files etc
Diversity among healthcare professionals
Mobile population
Clinical diversity
Continually growing
(HVL) Health Information Exchange November 5, 2019 3 / 34
Why do we need to structure HI?
Avoid repetitive data entry
Retrieval and overview
Reuse of record info
For technical integration
For information exchange
Clinical decision support
Quality indicators
Management data
(HVL) Health Information Exchange November 5, 2019 4 / 34
How can we structure HI?
By using of consistent standards defining syntactic and semantic meaning
of information being exchanged.
(HVL) Health Information Exchange November 5, 2019 5 / 34
Health Information Interchange
REST
API
REpresentational State Transfer
CORBA
Common Object Re-
quest Broker Architecture
SOAP Simple Object Access Protocol
RPC Remote procedure call
(HVL) Health Information Exchange November 5, 2019 6 / 34
Issues with RESTful API
Query Complexity
Overfetching
Under-fetching and n+1 request problem
Modifiability
API versioning
(HVL) Health Information Exchange November 5, 2019 7 / 34
RESTFul approach - Patients
- Base URL: http://hapi.fhir.org/baseDstu3
GET /Patient All Patients
POST /Patient Create Patient
GET /Patient/649227 Single Patient
PUT /Patient/649227 Update Patient
DELETE /Patient/649227 Delete Patient
https://www.hl7.org/fhir/resourcelist.html lists 143 HL7 FHIR
resources.
Assuming Best Case, each resources needs 5 endpoints (CRUD)
resulting (143 x 5 = 715) endpoints.
Worst Case: Custom endpoints based on custom requirements. Eg.
all patients over 30 years, all patients only from Bergen etc.
(HVL) Health Information Exchange November 5, 2019 8 / 34
Self Assessment App
1. (name, description), 2. (name, description, title), 3. Question and options
(HVL) Health Information Exchange November 5, 2019 9 / 34
Response From REST - Overfetching
Getting more information than required - overfetching.
Getting less information than required - Underfetching
Need for addition HTTP request to get all the required resource - n+1
request problem
(HVL) Health Information Exchange November 5, 2019 10 / 34
Response From REST - Visualization
(HVL) Health Information Exchange November 5, 2019 11 / 34
API versioning
the requirements of clients are
often dynamic.
can modify the existing
endpoints or create endpoints
to only fetch required
resources. BUT requirements
changes quickly.
modification quickly becomes
inflexible as one need to think
about how to support existing
customers while providing new
functionality.
(HVL) Health Information Exchange November 5, 2019 12 / 34
Our solution
GraphQL
GraphQL developed by Facebook and has been embraced users including
Coursera, GitHub, Pinterest, Neo4J, PayPal and others.
Prototype
Web Client
Authorization
Server
Resource
Server
Mobile Client
(HVL) Health Information Exchange November 5, 2019 13 / 34
Architecture Centric Development (ACD)
(HVL) Health Information Exchange November 5, 2019 14 / 34
Mapping HL7 FHIR resources to GraphQL schema
Algorithm 1: Mapping HL7 FHIR resources to GraphQL schema
Input: HL7 Resource
Output: GraphQL Schema
1 function recursive_hl7fhir_graphql_mapper (Resource)
2 schema = {};
3 foreach field ∈ HL7 Resource.fields do
4 switch Resource.field do
5 case field.Type is ScalarTypeDefinition do
6 if field.cardinality is 0,1 then
7 add_to_schema(field, type)
8 end if
9 if field.cardinality is 0,* then
10 add_to_schema_as_list(field, type)
11 end if
12 end case
13 case field.Type is EnumTypeDefinition do
14 if EnumTypeDefinition already exists then
15 - reference to schema
16 else
17 - define_new_type_enum(**args)
18 - reference to schema
19 end if
20 end case
21 case field.Type is Custom OR field.Type is HL7 FHIR Resource do
22 if Custom OR Resource already exists then
23 - reference to schema
24 else
25 - define new type Resource
26 - reference to schema
27 - recursive_hl7fhir_graphql_mapper(Resource)
28 end if
29 end case (HVL) Health Information Exchange November 5, 2019 15 / 34
Mapping HL7 FHIR with GraphQL schema
Constraint Model
t ype Per son {
name: St r i ng
pi ct ur e( si ze: I nt ) : Ur l
}
Resource
Element
Definition
Data Types
Profile
Conformance
Statement
ValueSet
Code System
Information Model Terminology Model
GraphQL Schema
RootOperationTypeDefinition
Types
ObjectTypeDefinition
ScalarTypeDefinition
EnumerationTypeDefinition
Field
NameDataTypeArguments
<<mapsTo>>
<<mapsTo>>
<<mapsTo>>
schema {
quer y: MyQuer yRoot Type
}
t ype MyQuer yRoot Type {
someFi el d: St r i ng
}
Cardinality
ScalarType EnumType
(HVL) Health Information Exchange November 5, 2019 16 / 34
Case Study - Questionnaire
Questionnaire Item AnswerOption
Code
Response
questions answerOptions
responseItems
[0..*][1..*]
Score
[=] answer
[inj]
[1..*]
Class DataType
attribute
reference
hasCode
hasScore
Model, M1
Model, M0
Patient
questionnaire
[1..1]
[1..1]
[1..*]
ResponseItem
source
(HVL) Health Information Exchange November 5, 2019 17 / 34
Schema Definition
type Questionnaire {
resourceType: String
url: String
identifier: [Identifier]
version: String
name: String
title: String
status: statusEnumType
experimental: Boolean
publisher: String
description: String
item: [QuestionnaireItem]
}
type Identifier {
system: String
value: String
use: indentifierEnumType
}
type QuestionnaireItem {
linkId: String
prefix: String
text: String
type:
QuestionnaireItemTypeEnum
required: Boolean
answerValueSet: [ValueSet]
}
type ValueSet {
resourceType: String
url: String
identifier: [Identifier]
version: String
name: String
title: String
status: statusEnumType
experimental: Boolean
publisher: String
description: String
compose: Compose
}
type Compose {
inactive: Boolean
include: [ComposeInclude]
}
type ComposeInclude {
concept: [
ComposeIncludeConcept
]
}
type ComposeIncludeConcept {
code: coding
display: String
extension: [Extension]
}
type Extension {
uri: String
valueDecimal: Float
}
enum statusEnumType {
draft
active
retired
unknown
}
enum indentifierEnum {
usual
official
temp
secondary
old
}
enum TypeEnum {
group
display
boolean
decimal
integer
date
dateTime +
}
type Query {
(HVL) Health Information Exchange November 5, 2019 18 / 34
Evaluation of Response size and Time
4.07
2.26
2.0
4.0
6.0
8.0
NumberofKilobytes
3.33
1.59
7.42
4.34
4.22
2.5
6.94
3.56
PHQ-9
GAD7
ASRSV1
M
DI
ASRM
S
90.1
79.5
80.0
90.0
100.0
110.0
Timeinmilliseconds
88.1
80.7
109.3
91.9
106.9
85.4
94.5
85.8
PHQ-9
GAD7
ASRSV1
M
DI
ASRM
S
94.5
Kilobytes fetched (REST)
Kilobytes used (GraphQL)
Time to fetch all attributes (REST)
Time to fetch required attributes (GraphQL)
(HVL) Health Information Exchange November 5, 2019 19 / 34
Throughput and response time with RESTful approach
(HVL) Health Information Exchange November 5, 2019 20 / 34
Throughput and response time with GraphQL
(HVL) Health Information Exchange November 5, 2019 21 / 34
Performance Test statistics
Throughput :average number of HTTP/s requests per second
generated by the test
Response Time: average amount of time from first bit sent to the
network card to the last byte received by the client.
(HVL) Health Information Exchange November 5, 2019 22 / 34
Challenge: Circular relationship complexity
type ThreadDefinition {
title: String
text(first: Int, after: String): [
MessageDefinition]
}
type MessageDefinition {
text: String
thread: ThreadDefinition
}
type Query {
thread(id: ID!): ThreadDefinition
}
query complicatedQuery {
thread(id: "ID") {
text(first: 100000) {
thread {
text(first: 100000) {
thread {
# ...repeat 100000 (n) times
...
}
}
}
}
}
}
}
(HVL) Health Information Exchange November 5, 2019 23 / 34
Challenge: Schema Duplication
schema definition based on the choice of the database being used
(this project uses mongoDB, so schema are based on mongoose 1);
schema definition for a GraphQL endpoint.
Good thing is community is already aware of both issues. And there
are solutions being worked out currently.
1
https://mongoosejs.com/
(HVL) Health Information Exchange November 5, 2019 24 / 34
Future Directions
Schema Stitching or Schema federation to promote interoperability
between current health systems and legacy systems.
Creation of adaptive Internet-Delivered Psychological Interventions
(IDPT) using GraphQL based HIE.
Create a comprehensible dashboard for better visualization for
therapists.
Further research in both development of Adaptive system and clinical
trials are required.
(HVL) Health Information Exchange November 5, 2019 25 / 34
Conclusion: ISO/IEC 25000.ISO/IEC 25000:2005
Interoperability HL7 FHIR
Security SMART on FHIR
Modifiability SOA-Oriented architecture, GraphQL
Scalability SOA-Oriented architecture
Testability TDD Approach
(HVL) Health Information Exchange November 5, 2019 26 / 34
Thank You
skmu@hvl.no
(HVL) Health Information Exchange November 5, 2019 27 / 34
HL7 FHIR ER Diagram
Or gani zat i on
i dent i f i er
par t Of
Pat i ent
i dent i f i er
managi ngOr gani zat i on
gener al Pr act i t i oner
Quest i onnai r e
i dent i f i er
answer Val ueSet
Pr act i t i oner
i dent i f i er
Car ePl an
i dent i f i er
subj ect
0. . . *
0. . . 1
1. . . 1
Val ueSet
i dent i f i er
0. . . 1
Quest i onnai r eResponse
basedOn
par t Of
quest i onnai r e
Obser vat i on
i dent i f i er
basedOn
subj ect
0. . . 1
0. . . *
0. . . *
0. . . * 0. . . 1
(HVL) Health Information Exchange November 5, 2019 28 / 34
How does GraphQL work?FrontendClient
GraphQLquery
Executiontree
HTTP Request
Query
Mutation
Subscription
BackendOperations
Resolver
Resolver
Resolver
Resolver
Database
DataStore
DBModels
DBConnectors
(HVL) Health Information Exchange November 5, 2019 29 / 34
Resolvers
What is a resolver?
A resolver is a function that resolves a value for a type or field in a
schema. If an Object is returned, execution continues to the next child
field. If a scalar is returned (typically at a leaf node), execution completes.
If null is returned, execution halts and does not continue.
Executing queries
Parse: A query is parsed into an abstract syntax tree (or AST).
Validate: The AST is validated against the schema. Checks for
correct query syntax and if the fields exist.
Execute: The runtime walks through the AST, starting from the root
of the tree, invokes resolvers, collects up results, and emits JSON.
(HVL) Health Information Exchange November 5, 2019 30 / 34
References I
Duane Bender and Kamran Sartipi.
HL7 FHIR: An agile and RESTful approach to healthcare information exchange.
In Proceedings of CBMS 2013 - 26th IEEE International Symposium on Computer-Based Medical Systems, 2013.
M. Bryant.
Graphql for archival metadata: An overview of the ehri graphql api.
In 2017 IEEE International Conference on Big Data (Big Data), pages 2225–2230, Dec 2017.
ISO/IEC 25000.
ISO/IEC 25000:2005 Software Engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Guide
to SQuaRE, 2005.
R. Srinivasan.
RPC: Remote Procedure Call Protocol Specification Version 2.
RFC 1831, DDN Network Information Center, 1995.
Roy Fielding.
Architectural Styles and the Design of Network-based Software Architectures.
PhD thesis, 2000.
Hl7 FHIR SMART app launch, Retrieved December 28.
Roberto Rodriguez-Echeverria, Javier Luis Cánovas Izquierdo, and Jordi Cabot.
Towards a UML and IFML Mapping to GraphQL.
In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in
Bioinformatics), 2018.
Facebook.
Graphql: A query language for apis, Retrieved April 11, 2019.
(HVL) Health Information Exchange November 5, 2019 31 / 34
References II
Ka I Pun Yngve Lamo Suresh Kumar Mukhiya, Fazle Rabbi.
An architectural design forself-reporting e-health systems.
In ICSE 2019 Proceedings in the IEEE Digital Library, 2018.
Hevner, March, Park, and Ram.
Design Science in Information Systems Research.
MIS Quarterly,, 2004.
H. Ulrich, J. Kern, D. Tas, A. K. Kock-Schoppenhauer, F. Ückert, J. Ingenerf, and M. Lablans.
QL 4 MDR: A GraphQL query language for ISO 11179-based metadata repositories.
BMC Medical Informatics and Decision Making, 2019.
Jun Li, Yingfei Xiong, Xuanzhe Liu, and Lu Zhang.
How does web service API evolution affect clients?
In Proceedings - IEEE 20th International Conference on Web Services, ICWS 2013, 2013.
Khalil Khoumbati and Marinos Themistocleous.
Integrating the IT Infrastructures in Healthcare Organisations : a Proposition of Influential Factors.
Electronic Journal of e-Government, 2006.
Yigang Xu, Dominique Sauquet, Eric Zapletal, David Lemaitre, and Patrice Degoulet.
Integration of medical applications: The ’mediator service’ of the SynEx platform.
International Journal of Medical Informatics, 2000.
Olaf Hartig and Jorge Pérez.
Semantics and Complexity of GraphQL .
2018.
(HVL) Health Information Exchange November 5, 2019 32 / 34
References III
Nat Sakimura, John Bradley, Michael B. Jones, Breno Medeiros, and Chuck Mortimore.
Final: OpenID Connect Core 1.0 incorporating, 2014.
P. Ferguson and D. Senie.
Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing.
Technical report, 2000.
Cross-origin Resource Sharing.
Cross-Origin Resource Sharing.
Options, 2011.
Suresh Kumar Mukhiya and Khac Hoang Hung.
An Architectural Style for Single Page Scalable Modern Web Application.
5(4):6–13, 2018.
ISO/IEC 25000.
ISO/IEC 25000:2005 Software Engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Guide
to SQuaRE, 2005.
Scott Ambler.
Process Patterns Building Large-Scale Systems Using Object Technology.
1998.
(HVL) Health Information Exchange November 5, 2019 33 / 34
A GraphQL approach to Healthcare Information
Exchange with HL7 FHIR
Suresh Kumar Mukhiya, Fazle Rabbi, Ka I Violet Pun,
Adrian Rutle, Yngve Lamo
� skmu@hvl.no
November 5, 2019
(HVL) Health Information Exchange November 5, 2019 34 / 34

More Related Content

What's hot

Scalable Filesystem Metadata Services with RocksDB
Scalable Filesystem Metadata Services with RocksDBScalable Filesystem Metadata Services with RocksDB
Scalable Filesystem Metadata Services with RocksDBAlluxio, Inc.
 
What is in a Lucene index?
What is in a Lucene index?What is in a Lucene index?
What is in a Lucene index?lucenerevolution
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentationjexp
 
Empower Splunk and other SIEMs with the Databricks Lakehouse for Cybersecurity
Empower Splunk and other SIEMs with the Databricks Lakehouse for CybersecurityEmpower Splunk and other SIEMs with the Databricks Lakehouse for Cybersecurity
Empower Splunk and other SIEMs with the Databricks Lakehouse for CybersecurityDatabricks
 
Best Practices for Building Your Data Lake on AWS
Best Practices for Building Your Data Lake on AWSBest Practices for Building Your Data Lake on AWS
Best Practices for Building Your Data Lake on AWSAmazon Web Services
 
Apache Flink and what it is used for
Apache Flink and what it is used forApache Flink and what it is used for
Apache Flink and what it is used forAljoscha Krettek
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4Timothy Spann
 
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)Chris Bolman
 
Apache Hadoop Security - Ranger
Apache Hadoop Security - RangerApache Hadoop Security - Ranger
Apache Hadoop Security - RangerIsheeta Sanghi
 
How Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayHow Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayDataWorks Summit
 
Apache Kafka in the Healthcare Industry
Apache Kafka in the Healthcare IndustryApache Kafka in the Healthcare Industry
Apache Kafka in the Healthcare IndustryKai Wähner
 
Building Serverless ETL Pipelines with AWS Glue
Building Serverless ETL Pipelines with AWS GlueBuilding Serverless ETL Pipelines with AWS Glue
Building Serverless ETL Pipelines with AWS GlueAmazon Web Services
 
Securing Hadoop with Apache Ranger
Securing Hadoop with Apache RangerSecuring Hadoop with Apache Ranger
Securing Hadoop with Apache RangerDataWorks Summit
 
Kafka replication apachecon_2013
Kafka replication apachecon_2013Kafka replication apachecon_2013
Kafka replication apachecon_2013Jun Rao
 
Building a Modern Data Warehouse - Deep Dive on Amazon Redshift
Building a Modern Data Warehouse - Deep Dive on Amazon RedshiftBuilding a Modern Data Warehouse - Deep Dive on Amazon Redshift
Building a Modern Data Warehouse - Deep Dive on Amazon RedshiftAmazon Web Services
 

What's hot (20)

Dataflow with Apache NiFi
Dataflow with Apache NiFiDataflow with Apache NiFi
Dataflow with Apache NiFi
 
Scalable Filesystem Metadata Services with RocksDB
Scalable Filesystem Metadata Services with RocksDBScalable Filesystem Metadata Services with RocksDB
Scalable Filesystem Metadata Services with RocksDB
 
What is in a Lucene index?
What is in a Lucene index?What is in a Lucene index?
What is in a Lucene index?
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
 
Empower Splunk and other SIEMs with the Databricks Lakehouse for Cybersecurity
Empower Splunk and other SIEMs with the Databricks Lakehouse for CybersecurityEmpower Splunk and other SIEMs with the Databricks Lakehouse for Cybersecurity
Empower Splunk and other SIEMs with the Databricks Lakehouse for Cybersecurity
 
Best Practices for Building Your Data Lake on AWS
Best Practices for Building Your Data Lake on AWSBest Practices for Building Your Data Lake on AWS
Best Practices for Building Your Data Lake on AWS
 
Apache Flink and what it is used for
Apache Flink and what it is used forApache Flink and what it is used for
Apache Flink and what it is used for
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4
 
Apache Ranger
Apache RangerApache Ranger
Apache Ranger
 
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
 
Splunk
SplunkSplunk
Splunk
 
Apache Hadoop Security - Ranger
Apache Hadoop Security - RangerApache Hadoop Security - Ranger
Apache Hadoop Security - Ranger
 
How Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per dayHow Uber scaled its Real Time Infrastructure to Trillion events per day
How Uber scaled its Real Time Infrastructure to Trillion events per day
 
Apache Kafka in the Healthcare Industry
Apache Kafka in the Healthcare IndustryApache Kafka in the Healthcare Industry
Apache Kafka in the Healthcare Industry
 
Building Serverless ETL Pipelines with AWS Glue
Building Serverless ETL Pipelines with AWS GlueBuilding Serverless ETL Pipelines with AWS Glue
Building Serverless ETL Pipelines with AWS Glue
 
Securing Hadoop with Apache Ranger
Securing Hadoop with Apache RangerSecuring Hadoop with Apache Ranger
Securing Hadoop with Apache Ranger
 
Intro to HBase
Intro to HBaseIntro to HBase
Intro to HBase
 
Kafka replication apachecon_2013
Kafka replication apachecon_2013Kafka replication apachecon_2013
Kafka replication apachecon_2013
 
Building a Modern Data Warehouse - Deep Dive on Amazon Redshift
Building a Modern Data Warehouse - Deep Dive on Amazon RedshiftBuilding a Modern Data Warehouse - Deep Dive on Amazon Redshift
Building a Modern Data Warehouse - Deep Dive on Amazon Redshift
 

Similar to A GraphQL approach to Healthcare Information Exchange with HL7 FHIR

Anish Arora - Playing With FHIR - A Practical Approach
Anish Arora - Playing With FHIR - A Practical ApproachAnish Arora - Playing With FHIR - A Practical Approach
Anish Arora - Playing With FHIR - A Practical ApproachHealthDev
 
Hl7 v2 messaging conformance jan 2011
Hl7 v2 messaging conformance jan 2011Hl7 v2 messaging conformance jan 2011
Hl7 v2 messaging conformance jan 2011Abdul-Malik Shakir
 
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...Caristix
 
Edifecs- warming up to fhir
Edifecs- warming up to fhirEdifecs- warming up to fhir
Edifecs- warming up to fhirEdifecs Inc
 
Interfaces Demo Eclipsys Baroda India Part One
Interfaces Demo  Eclipsys Baroda India Part OneInterfaces Demo  Eclipsys Baroda India Part One
Interfaces Demo Eclipsys Baroda India Part OneMonisha Ghuman
 
Standards Driven Healthcare Information Integration Infrastructure
Standards Driven Healthcare Information Integration InfrastructureStandards Driven Healthcare Information Integration Infrastructure
Standards Driven Healthcare Information Integration InfrastructureAbdul-Malik Shakir
 
Ontologising the Health Level Seven (HL7) Standard
Ontologising the Health Level Seven (HL7) StandardOntologising the Health Level Seven (HL7) Standard
Ontologising the Health Level Seven (HL7) StandardRatnesh Sahay
 
Hl7 reference information model
Hl7 reference information modelHl7 reference information model
Hl7 reference information modelAbdul-Malik Shakir
 
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdf
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdfWhat are 3 of the main functions of the HL7 StandardDiscuss the i.pdf
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdfrbjain2007
 
Nursing Practice Literature Evaluation Table Article Paper.pdf
Nursing Practice Literature Evaluation Table Article Paper.pdfNursing Practice Literature Evaluation Table Article Paper.pdf
Nursing Practice Literature Evaluation Table Article Paper.pdfbkbk37
 
Population Stratification Made Easy, Quick, and Transparent for Anyone
Population Stratification Made Easy, Quick, and Transparent for AnyonePopulation Stratification Made Easy, Quick, and Transparent for Anyone
Population Stratification Made Easy, Quick, and Transparent for AnyoneHealth Catalyst
 

Similar to A GraphQL approach to Healthcare Information Exchange with HL7 FHIR (20)

Anish Arora - Playing With FHIR - A Practical Approach
Anish Arora - Playing With FHIR - A Practical ApproachAnish Arora - Playing With FHIR - A Practical Approach
Anish Arora - Playing With FHIR - A Practical Approach
 
Innovation pre-empts Standardization – The FHIR Experience
Innovation pre-empts Standardization – The FHIR ExperienceInnovation pre-empts Standardization – The FHIR Experience
Innovation pre-empts Standardization – The FHIR Experience
 
Hl7 v2 messaging conformance jan 2011
Hl7 v2 messaging conformance jan 2011Hl7 v2 messaging conformance jan 2011
Hl7 v2 messaging conformance jan 2011
 
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...
HL7 Survival Guide - Chapter 3 - The Heart of the Matter: Data Formats, Workf...
 
Hl7 & FHIR
Hl7 & FHIRHl7 & FHIR
Hl7 & FHIR
 
Exploring HL7 CDA & Its Structures
Exploring HL7 CDA & Its StructuresExploring HL7 CDA & Its Structures
Exploring HL7 CDA & Its Structures
 
Edifecs- warming up to fhir
Edifecs- warming up to fhirEdifecs- warming up to fhir
Edifecs- warming up to fhir
 
Interfaces Demo Eclipsys Baroda India Part One
Interfaces Demo  Eclipsys Baroda India Part OneInterfaces Demo  Eclipsys Baroda India Part One
Interfaces Demo Eclipsys Baroda India Part One
 
Hl7 overview
Hl7 overviewHl7 overview
Hl7 overview
 
Standards Driven Healthcare Information Integration Infrastructure
Standards Driven Healthcare Information Integration InfrastructureStandards Driven Healthcare Information Integration Infrastructure
Standards Driven Healthcare Information Integration Infrastructure
 
Amia now! session two
Amia now! session twoAmia now! session two
Amia now! session two
 
Ontologising the Health Level Seven (HL7) Standard
Ontologising the Health Level Seven (HL7) StandardOntologising the Health Level Seven (HL7) Standard
Ontologising the Health Level Seven (HL7) Standard
 
HL7 - Whats Hot and Whats Not
HL7 - Whats Hot and Whats NotHL7 - Whats Hot and Whats Not
HL7 - Whats Hot and Whats Not
 
Interoperability, the rise of HL7 and FHIR
Interoperability, the rise of HL7 and FHIRInteroperability, the rise of HL7 and FHIR
Interoperability, the rise of HL7 and FHIR
 
Hl7 reference information model
Hl7 reference information modelHl7 reference information model
Hl7 reference information model
 
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdf
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdfWhat are 3 of the main functions of the HL7 StandardDiscuss the i.pdf
What are 3 of the main functions of the HL7 StandardDiscuss the i.pdf
 
Hl7 Standards
Hl7 StandardsHl7 Standards
Hl7 Standards
 
Hl7 Standards
Hl7 StandardsHl7 Standards
Hl7 Standards
 
Nursing Practice Literature Evaluation Table Article Paper.pdf
Nursing Practice Literature Evaluation Table Article Paper.pdfNursing Practice Literature Evaluation Table Article Paper.pdf
Nursing Practice Literature Evaluation Table Article Paper.pdf
 
Population Stratification Made Easy, Quick, and Transparent for Anyone
Population Stratification Made Easy, Quick, and Transparent for AnyonePopulation Stratification Made Easy, Quick, and Transparent for Anyone
Population Stratification Made Easy, Quick, and Transparent for Anyone
 

Recently uploaded

College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...
College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...
College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...delhimodelshub1
 
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...delhimodelshub1
 
Call Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any TimeCall Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any Timedelhimodelshub1
 
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsiindian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana TulsiHigh Profile Call Girls Chandigarh Aarushi
 
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy Girls
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy GirlsRussian Call Girls in Raipur 9873940964 Book Hot And Sexy Girls
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy Girlsddev2574
 
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabad
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service HyderabadCall Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabad
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabaddelhimodelshub1
 
Basics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxBasics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxAyush Gupta
 
Call Girls Secunderabad 7001305949 all area service COD available Any Time
Call Girls Secunderabad 7001305949 all area service COD available Any TimeCall Girls Secunderabad 7001305949 all area service COD available Any Time
Call Girls Secunderabad 7001305949 all area service COD available Any Timedelhimodelshub1
 
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service HyderabadVIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabaddelhimodelshub1
 
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591adityaroy0215
 
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabad
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service HyderabadCall Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabad
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabaddelhimodelshub1
 
Hot Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In Ludhiana
Hot  Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In LudhianaHot  Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In Ludhiana
Hot Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In LudhianaRussian Call Girls in Ludhiana
 
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girls Service Gurgaon
 
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171Call Girls Service Gurgaon
 
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591adityaroy0215
 

Recently uploaded (20)

College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...
College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...
College Call Girls Hyderabad Sakshi 9907093804 Independent Escort Service Hyd...
 
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...
Russian Call Girls in Hyderabad Ishita 9907093804 Independent Escort Service ...
 
Call Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any TimeCall Girls LB Nagar 7001305949 all area service COD available Any Time
Call Girls LB Nagar 7001305949 all area service COD available Any Time
 
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsiindian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
indian Call Girl Panchkula ❤️🍑 9907093804 Low Rate Call Girls Ludhiana Tulsi
 
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy Girls
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy GirlsRussian Call Girls in Raipur 9873940964 Book Hot And Sexy Girls
Russian Call Girls in Raipur 9873940964 Book Hot And Sexy Girls
 
Call Girl Lucknow Gauri 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
Call Girl Lucknow Gauri 🔝 8923113531  🔝 🎶 Independent Escort Service LucknowCall Girl Lucknow Gauri 🔝 8923113531  🔝 🎶 Independent Escort Service Lucknow
Call Girl Lucknow Gauri 🔝 8923113531 🔝 🎶 Independent Escort Service Lucknow
 
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabad
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service HyderabadCall Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabad
Call Girl Hyderabad Madhuri 9907093804 Independent Escort Service Hyderabad
 
Basics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptxBasics of Anatomy- Language of Anatomy.pptx
Basics of Anatomy- Language of Anatomy.pptx
 
Call Girls Secunderabad 7001305949 all area service COD available Any Time
Call Girls Secunderabad 7001305949 all area service COD available Any TimeCall Girls Secunderabad 7001305949 all area service COD available Any Time
Call Girls Secunderabad 7001305949 all area service COD available Any Time
 
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service HyderabadVIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
VIP Call Girls Hyderabad Megha 9907093804 Independent Escort Service Hyderabad
 
Call Girl Dehradun Aashi 🔝 7001305949 🔝 💃 Independent Escort Service Dehradun
Call Girl Dehradun Aashi 🔝 7001305949 🔝 💃 Independent Escort Service DehradunCall Girl Dehradun Aashi 🔝 7001305949 🔝 💃 Independent Escort Service Dehradun
Call Girl Dehradun Aashi 🔝 7001305949 🔝 💃 Independent Escort Service Dehradun
 
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
VIP Call Girl Sector 88 Gurgaon Delhi Just Call Me 9899900591
 
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabad
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service HyderabadCall Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabad
Call Girls in Hyderabad Lavanya 9907093804 Independent Escort Service Hyderabad
 
Hot Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In Ludhiana
Hot  Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In LudhianaHot  Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In Ludhiana
Hot Call Girl In Ludhiana 👅🥵 9053'900678 Call Girls Service In Ludhiana
 
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service GurgaonCall Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
Call Girl Gurgaon Saloni 9711199012 Independent Escort Service Gurgaon
 
College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
College Call Girls Dehradun Kavya 🔝 7001305949 🔝 📍 Independent Escort Service...
 
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
#9711199012# African Student Escorts in Delhi 😘 Call Girls Delhi
 
VIP Call Girls Lucknow Isha 🔝 9719455033 🔝 🎶 Independent Escort Service Lucknow
VIP Call Girls Lucknow Isha 🔝 9719455033 🔝 🎶 Independent Escort Service LucknowVIP Call Girls Lucknow Isha 🔝 9719455033 🔝 🎶 Independent Escort Service Lucknow
VIP Call Girls Lucknow Isha 🔝 9719455033 🔝 🎶 Independent Escort Service Lucknow
 
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171VIP Call Girl Sector 32 Noida Just Book Me 9711199171
VIP Call Girl Sector 32 Noida Just Book Me 9711199171
 
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591
VIP Call Girl Sector 25 Gurgaon Just Call Me 9899900591
 

A GraphQL approach to Healthcare Information Exchange with HL7 FHIR

  • 1. A GraphQL approach to Healthcare Information Exchange with HL7 FHIR Suresh Kumar Mukhiya, Fazle Rabbi, Ka I Violet Pun, Adrian Rutle, Yngve Lamo � skmu@hvl.no November 5, 2019 (HVL) Health Information Exchange November 5, 2019 1 / 34
  • 2. Who are we? Our aim is to improve public mental health with Adaptive technologies (ICT) and psychological treatments. Team of Domain experts, Software Engineers, ML engineers, HCI engineers and Industry. (HVL) Health Information Exchange November 5, 2019 2 / 34
  • 3. Why is Health Information(HI) management so hard? Health Information Management Complex health information Life and death Confidentiality Diversity of information Free Text Medication handling Questionnaire, Checklist etc Images, Videos, Files etc Diversity among healthcare professionals Mobile population Clinical diversity Continually growing (HVL) Health Information Exchange November 5, 2019 3 / 34
  • 4. Why do we need to structure HI? Avoid repetitive data entry Retrieval and overview Reuse of record info For technical integration For information exchange Clinical decision support Quality indicators Management data (HVL) Health Information Exchange November 5, 2019 4 / 34
  • 5. How can we structure HI? By using of consistent standards defining syntactic and semantic meaning of information being exchanged. (HVL) Health Information Exchange November 5, 2019 5 / 34
  • 6. Health Information Interchange REST API REpresentational State Transfer CORBA Common Object Re- quest Broker Architecture SOAP Simple Object Access Protocol RPC Remote procedure call (HVL) Health Information Exchange November 5, 2019 6 / 34
  • 7. Issues with RESTful API Query Complexity Overfetching Under-fetching and n+1 request problem Modifiability API versioning (HVL) Health Information Exchange November 5, 2019 7 / 34
  • 8. RESTFul approach - Patients - Base URL: http://hapi.fhir.org/baseDstu3 GET /Patient All Patients POST /Patient Create Patient GET /Patient/649227 Single Patient PUT /Patient/649227 Update Patient DELETE /Patient/649227 Delete Patient https://www.hl7.org/fhir/resourcelist.html lists 143 HL7 FHIR resources. Assuming Best Case, each resources needs 5 endpoints (CRUD) resulting (143 x 5 = 715) endpoints. Worst Case: Custom endpoints based on custom requirements. Eg. all patients over 30 years, all patients only from Bergen etc. (HVL) Health Information Exchange November 5, 2019 8 / 34
  • 9. Self Assessment App 1. (name, description), 2. (name, description, title), 3. Question and options (HVL) Health Information Exchange November 5, 2019 9 / 34
  • 10. Response From REST - Overfetching Getting more information than required - overfetching. Getting less information than required - Underfetching Need for addition HTTP request to get all the required resource - n+1 request problem (HVL) Health Information Exchange November 5, 2019 10 / 34
  • 11. Response From REST - Visualization (HVL) Health Information Exchange November 5, 2019 11 / 34
  • 12. API versioning the requirements of clients are often dynamic. can modify the existing endpoints or create endpoints to only fetch required resources. BUT requirements changes quickly. modification quickly becomes inflexible as one need to think about how to support existing customers while providing new functionality. (HVL) Health Information Exchange November 5, 2019 12 / 34
  • 13. Our solution GraphQL GraphQL developed by Facebook and has been embraced users including Coursera, GitHub, Pinterest, Neo4J, PayPal and others. Prototype Web Client Authorization Server Resource Server Mobile Client (HVL) Health Information Exchange November 5, 2019 13 / 34
  • 14. Architecture Centric Development (ACD) (HVL) Health Information Exchange November 5, 2019 14 / 34
  • 15. Mapping HL7 FHIR resources to GraphQL schema Algorithm 1: Mapping HL7 FHIR resources to GraphQL schema Input: HL7 Resource Output: GraphQL Schema 1 function recursive_hl7fhir_graphql_mapper (Resource) 2 schema = {}; 3 foreach field ∈ HL7 Resource.fields do 4 switch Resource.field do 5 case field.Type is ScalarTypeDefinition do 6 if field.cardinality is 0,1 then 7 add_to_schema(field, type) 8 end if 9 if field.cardinality is 0,* then 10 add_to_schema_as_list(field, type) 11 end if 12 end case 13 case field.Type is EnumTypeDefinition do 14 if EnumTypeDefinition already exists then 15 - reference to schema 16 else 17 - define_new_type_enum(**args) 18 - reference to schema 19 end if 20 end case 21 case field.Type is Custom OR field.Type is HL7 FHIR Resource do 22 if Custom OR Resource already exists then 23 - reference to schema 24 else 25 - define new type Resource 26 - reference to schema 27 - recursive_hl7fhir_graphql_mapper(Resource) 28 end if 29 end case (HVL) Health Information Exchange November 5, 2019 15 / 34
  • 16. Mapping HL7 FHIR with GraphQL schema Constraint Model t ype Per son { name: St r i ng pi ct ur e( si ze: I nt ) : Ur l } Resource Element Definition Data Types Profile Conformance Statement ValueSet Code System Information Model Terminology Model GraphQL Schema RootOperationTypeDefinition Types ObjectTypeDefinition ScalarTypeDefinition EnumerationTypeDefinition Field NameDataTypeArguments <<mapsTo>> <<mapsTo>> <<mapsTo>> schema { quer y: MyQuer yRoot Type } t ype MyQuer yRoot Type { someFi el d: St r i ng } Cardinality ScalarType EnumType (HVL) Health Information Exchange November 5, 2019 16 / 34
  • 17. Case Study - Questionnaire Questionnaire Item AnswerOption Code Response questions answerOptions responseItems [0..*][1..*] Score [=] answer [inj] [1..*] Class DataType attribute reference hasCode hasScore Model, M1 Model, M0 Patient questionnaire [1..1] [1..1] [1..*] ResponseItem source (HVL) Health Information Exchange November 5, 2019 17 / 34
  • 18. Schema Definition type Questionnaire { resourceType: String url: String identifier: [Identifier] version: String name: String title: String status: statusEnumType experimental: Boolean publisher: String description: String item: [QuestionnaireItem] } type Identifier { system: String value: String use: indentifierEnumType } type QuestionnaireItem { linkId: String prefix: String text: String type: QuestionnaireItemTypeEnum required: Boolean answerValueSet: [ValueSet] } type ValueSet { resourceType: String url: String identifier: [Identifier] version: String name: String title: String status: statusEnumType experimental: Boolean publisher: String description: String compose: Compose } type Compose { inactive: Boolean include: [ComposeInclude] } type ComposeInclude { concept: [ ComposeIncludeConcept ] } type ComposeIncludeConcept { code: coding display: String extension: [Extension] } type Extension { uri: String valueDecimal: Float } enum statusEnumType { draft active retired unknown } enum indentifierEnum { usual official temp secondary old } enum TypeEnum { group display boolean decimal integer date dateTime + } type Query { (HVL) Health Information Exchange November 5, 2019 18 / 34
  • 19. Evaluation of Response size and Time 4.07 2.26 2.0 4.0 6.0 8.0 NumberofKilobytes 3.33 1.59 7.42 4.34 4.22 2.5 6.94 3.56 PHQ-9 GAD7 ASRSV1 M DI ASRM S 90.1 79.5 80.0 90.0 100.0 110.0 Timeinmilliseconds 88.1 80.7 109.3 91.9 106.9 85.4 94.5 85.8 PHQ-9 GAD7 ASRSV1 M DI ASRM S 94.5 Kilobytes fetched (REST) Kilobytes used (GraphQL) Time to fetch all attributes (REST) Time to fetch required attributes (GraphQL) (HVL) Health Information Exchange November 5, 2019 19 / 34
  • 20. Throughput and response time with RESTful approach (HVL) Health Information Exchange November 5, 2019 20 / 34
  • 21. Throughput and response time with GraphQL (HVL) Health Information Exchange November 5, 2019 21 / 34
  • 22. Performance Test statistics Throughput :average number of HTTP/s requests per second generated by the test Response Time: average amount of time from first bit sent to the network card to the last byte received by the client. (HVL) Health Information Exchange November 5, 2019 22 / 34
  • 23. Challenge: Circular relationship complexity type ThreadDefinition { title: String text(first: Int, after: String): [ MessageDefinition] } type MessageDefinition { text: String thread: ThreadDefinition } type Query { thread(id: ID!): ThreadDefinition } query complicatedQuery { thread(id: "ID") { text(first: 100000) { thread { text(first: 100000) { thread { # ...repeat 100000 (n) times ... } } } } } } } (HVL) Health Information Exchange November 5, 2019 23 / 34
  • 24. Challenge: Schema Duplication schema definition based on the choice of the database being used (this project uses mongoDB, so schema are based on mongoose 1); schema definition for a GraphQL endpoint. Good thing is community is already aware of both issues. And there are solutions being worked out currently. 1 https://mongoosejs.com/ (HVL) Health Information Exchange November 5, 2019 24 / 34
  • 25. Future Directions Schema Stitching or Schema federation to promote interoperability between current health systems and legacy systems. Creation of adaptive Internet-Delivered Psychological Interventions (IDPT) using GraphQL based HIE. Create a comprehensible dashboard for better visualization for therapists. Further research in both development of Adaptive system and clinical trials are required. (HVL) Health Information Exchange November 5, 2019 25 / 34
  • 26. Conclusion: ISO/IEC 25000.ISO/IEC 25000:2005 Interoperability HL7 FHIR Security SMART on FHIR Modifiability SOA-Oriented architecture, GraphQL Scalability SOA-Oriented architecture Testability TDD Approach (HVL) Health Information Exchange November 5, 2019 26 / 34
  • 27. Thank You skmu@hvl.no (HVL) Health Information Exchange November 5, 2019 27 / 34
  • 28. HL7 FHIR ER Diagram Or gani zat i on i dent i f i er par t Of Pat i ent i dent i f i er managi ngOr gani zat i on gener al Pr act i t i oner Quest i onnai r e i dent i f i er answer Val ueSet Pr act i t i oner i dent i f i er Car ePl an i dent i f i er subj ect 0. . . * 0. . . 1 1. . . 1 Val ueSet i dent i f i er 0. . . 1 Quest i onnai r eResponse basedOn par t Of quest i onnai r e Obser vat i on i dent i f i er basedOn subj ect 0. . . 1 0. . . * 0. . . * 0. . . * 0. . . 1 (HVL) Health Information Exchange November 5, 2019 28 / 34
  • 29. How does GraphQL work?FrontendClient GraphQLquery Executiontree HTTP Request Query Mutation Subscription BackendOperations Resolver Resolver Resolver Resolver Database DataStore DBModels DBConnectors (HVL) Health Information Exchange November 5, 2019 29 / 34
  • 30. Resolvers What is a resolver? A resolver is a function that resolves a value for a type or field in a schema. If an Object is returned, execution continues to the next child field. If a scalar is returned (typically at a leaf node), execution completes. If null is returned, execution halts and does not continue. Executing queries Parse: A query is parsed into an abstract syntax tree (or AST). Validate: The AST is validated against the schema. Checks for correct query syntax and if the fields exist. Execute: The runtime walks through the AST, starting from the root of the tree, invokes resolvers, collects up results, and emits JSON. (HVL) Health Information Exchange November 5, 2019 30 / 34
  • 31. References I Duane Bender and Kamran Sartipi. HL7 FHIR: An agile and RESTful approach to healthcare information exchange. In Proceedings of CBMS 2013 - 26th IEEE International Symposium on Computer-Based Medical Systems, 2013. M. Bryant. Graphql for archival metadata: An overview of the ehri graphql api. In 2017 IEEE International Conference on Big Data (Big Data), pages 2225–2230, Dec 2017. ISO/IEC 25000. ISO/IEC 25000:2005 Software Engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Guide to SQuaRE, 2005. R. Srinivasan. RPC: Remote Procedure Call Protocol Specification Version 2. RFC 1831, DDN Network Information Center, 1995. Roy Fielding. Architectural Styles and the Design of Network-based Software Architectures. PhD thesis, 2000. Hl7 FHIR SMART app launch, Retrieved December 28. Roberto Rodriguez-Echeverria, Javier Luis Cánovas Izquierdo, and Jordi Cabot. Towards a UML and IFML Mapping to GraphQL. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 2018. Facebook. Graphql: A query language for apis, Retrieved April 11, 2019. (HVL) Health Information Exchange November 5, 2019 31 / 34
  • 32. References II Ka I Pun Yngve Lamo Suresh Kumar Mukhiya, Fazle Rabbi. An architectural design forself-reporting e-health systems. In ICSE 2019 Proceedings in the IEEE Digital Library, 2018. Hevner, March, Park, and Ram. Design Science in Information Systems Research. MIS Quarterly,, 2004. H. Ulrich, J. Kern, D. Tas, A. K. Kock-Schoppenhauer, F. Ückert, J. Ingenerf, and M. Lablans. QL 4 MDR: A GraphQL query language for ISO 11179-based metadata repositories. BMC Medical Informatics and Decision Making, 2019. Jun Li, Yingfei Xiong, Xuanzhe Liu, and Lu Zhang. How does web service API evolution affect clients? In Proceedings - IEEE 20th International Conference on Web Services, ICWS 2013, 2013. Khalil Khoumbati and Marinos Themistocleous. Integrating the IT Infrastructures in Healthcare Organisations : a Proposition of Influential Factors. Electronic Journal of e-Government, 2006. Yigang Xu, Dominique Sauquet, Eric Zapletal, David Lemaitre, and Patrice Degoulet. Integration of medical applications: The ’mediator service’ of the SynEx platform. International Journal of Medical Informatics, 2000. Olaf Hartig and Jorge Pérez. Semantics and Complexity of GraphQL . 2018. (HVL) Health Information Exchange November 5, 2019 32 / 34
  • 33. References III Nat Sakimura, John Bradley, Michael B. Jones, Breno Medeiros, and Chuck Mortimore. Final: OpenID Connect Core 1.0 incorporating, 2014. P. Ferguson and D. Senie. Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing. Technical report, 2000. Cross-origin Resource Sharing. Cross-Origin Resource Sharing. Options, 2011. Suresh Kumar Mukhiya and Khac Hoang Hung. An Architectural Style for Single Page Scalable Modern Web Application. 5(4):6–13, 2018. ISO/IEC 25000. ISO/IEC 25000:2005 Software Engineering - Software product Quality Requirements and Evaluation (SQuaRE) - Guide to SQuaRE, 2005. Scott Ambler. Process Patterns Building Large-Scale Systems Using Object Technology. 1998. (HVL) Health Information Exchange November 5, 2019 33 / 34
  • 34. A GraphQL approach to Healthcare Information Exchange with HL7 FHIR Suresh Kumar Mukhiya, Fazle Rabbi, Ka I Violet Pun, Adrian Rutle, Yngve Lamo � skmu@hvl.no November 5, 2019 (HVL) Health Information Exchange November 5, 2019 34 / 34