SlideShare a Scribd company logo
Up-front Design Considerations in FHIR Data Modeling
Combo Search Index Parameters in Practice
2022-03-10
Welcome
Presenter:
Reza Abolhassani, MSc(eHealth), MSCA
FHIR Data Modeler and Standards Developer
Credit:
Laurie MacDougall Sookraj (Tech/Team Lead)
Dmitry Polyakov (Software Developer)
Kevin Dougan (Senior Software Developer)
Main Goal
To be specific:
● Not sharing a piece of software or tool BUT a technique of using:
○ TransactionBuilder API which is used to construct FHIR transaction bundles
○ Custom Search Index Parameters(CSIP) which is used to for better performance of search parameters
○ Both are Smile CDR features
TransactionBuilder API
It is part of JavaScript Execution Environment (JEE) in Smile CDR platform:
● TransactionBuilder API is used to construct FHIR transaction bundles
○ Useful for batching a group of related FHIR operations into a single atomic unit (e.g., capture patient
encounter data points using Patient, Encounter, Organization, Location, Practitioner, etc.)
○ updateConditional(resource).onToken(parameter, system, value)
○ createConditional(resource).onToken(parameter, system, value)
Example
● Create this patient unless a patient already exists
A Real Scenario (NALC)
● Organization Resource
○ Some organizations with the same TaxID or lack of NPI for many
○ Name+’-’+TaxId+’-’+NPI
● Practitioner Resource
○ Some practitioners with the same TaxID or lack of NPI for many
○ First Name+’-’+ Last Name+’-’+TaxId+‘-’+ NPI
A Real Scenario (NALC)
● Organization (CARIN BB)
● Added Name because some orgs are missing data for ids above
● Name+’-’+TaxId+’-’+NPI will end up with unique resources!
So What?
● When it comes to multi-threading and concurrency (e.g., data ingestion)
● Chances are to have several transactions including createConditional or
updateConditional executed at the same time !!! (from experience)
● It will end up with duplicate resources with the same identifier
● Duplicate resources for reference information:
○ Organization, Practitioner, Location
● It could be really challenging!!! (especially in PROD)
● Here is where using CSIP technique comes into play!
● It will accommodate the normal behavior of TransactionBuilder API
methods
Search Parameters
The important notes of Search Parameters:
● Used to search resources in a FHIR repository.
○ Resources filter by search parameters.
● Named paths (FHIR Path) within resources that are indexed by the system
○ Patient.gender
● Once defined, we can use them to find matching resources
○ GET [base]/Patient?gender=male
Default Search Parameters
The FHIR specification defines a set of built-in parameterst:
Managing Search Parameters
In a relational FHIR Storage module, each search parameter is represented by
a SearchParameter resource in the database
Using the FHIR Endpoint
1) GET http://localhost:8000/DEFAULT/SearchParameter?base=Patient
2) GET http://localhost:8000/DEFAULT/SearchParameter/individual-gender
3) …
Custom Search Parameters
We can create your own Search Parameters in Smile CDR in order to index
fields and extensions that are not indexed by default.
Combo Search Index Parameters
HAPI FHIR and Smile CDR define a special type of SearchParameter called a
Combo Search Index Parameter (CSIP) that is used to index a combination
of parameters together in a single database table
1) http://localhost:8000/Patient?family=smith&birthdate=2021-01-
01&gender=http://hl7.org/fhir/administrative-gender|male
2) This generally works well, but can lead to performance issues
3) Using a Combo Search Index Parameter avoids unnecessary database joining.
4) Optionally, Smile CDR can also enforce uniqueness for the values of the
parameters.
Example
Up-front Data Modeling Considerations!
● It is critical! for example when concurrency comes into play in Data
Ingestion with Channel Import!
● Profile the data that comes in to understand it first ( big chunk of real
data!)
● Design a specific simple or composite identifier to maintain uniqueness!
● Design a specific Custom Search Parameter and its associated Combo
Search Index Parameter (Take advantage of the optional extension)
● Then, we can use this specific identifier along with the system URL
○ updateConditional(resource).onToken(parameter, system, value)
○ createConditional(resource).onToken(parameter, system, value)
Q&A

More Related Content

PDF
GraphDB Cloud: Enterprise Ready RDF Database on Demand
PDF
FIWARE Global Summit - IDS Implementation with FIWARE Software Components
PDF
Smarter content with a Dynamic Semantic Publishing Platform
PDF
Building Knowledge Graphs in 10 steps
PPT
DataFinder: A Python Application for Scientific Data Management
PPTX
A Deep Dive Implementing xAPI in Learning Games
PDF
Applied Enterprise Semantic Mining -- Charlotte 201410
PPT
Organizing the Data Chaos of Scientists
GraphDB Cloud: Enterprise Ready RDF Database on Demand
FIWARE Global Summit - IDS Implementation with FIWARE Software Components
Smarter content with a Dynamic Semantic Publishing Platform
Building Knowledge Graphs in 10 steps
DataFinder: A Python Application for Scientific Data Management
A Deep Dive Implementing xAPI in Learning Games
Applied Enterprise Semantic Mining -- Charlotte 201410
Organizing the Data Chaos of Scientists

What's hot (18)

PDF
Supporting GDPR Compliance through effectively governing Data Lineage and Dat...
PDF
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
PDF
SHACL-based data life cycle management
PDF
Running complex data queries in a distributed system
PDF
Applied Enterprise Semantic Search 201305
PPTX
Stephen Buxton | Data Integration - a Multi-Model Approach - Documents and Tr...
PDF
PDF
Vital AI: Big Data Modeling
PDF
Applied Semantic Search with Microsoft SQL Server
PDF
How Graphs Continue to Revolutionize The Prevention of Financial Crime & Frau...
PDF
Elasticsearch
PDF
Building Enterprise-Ready Knowledge Graph Applications in the Cloud
PDF
Applied Semantic Search 201306
PDF
Building materialised views for linked data systems using microservices
PDF
Compass Framework
PDF
Building, and communicating, a knowledge graph in Zalando
PPTX
GraphQL vs REST
Supporting GDPR Compliance through effectively governing Data Lineage and Dat...
Practical use of Knowledge Graph with Case Studies using Semantic Web Publish...
SHACL-based data life cycle management
Running complex data queries in a distributed system
Applied Enterprise Semantic Search 201305
Stephen Buxton | Data Integration - a Multi-Model Approach - Documents and Tr...
Vital AI: Big Data Modeling
Applied Semantic Search with Microsoft SQL Server
How Graphs Continue to Revolutionize The Prevention of Financial Crime & Frau...
Elasticsearch
Building Enterprise-Ready Knowledge Graph Applications in the Cloud
Applied Semantic Search 201306
Building materialised views for linked data systems using microservices
Compass Framework
Building, and communicating, a knowledge graph in Zalando
GraphQL vs REST
Ad

Similar to Up-front Design Considerations in FHIR Data Modeling (20)

PPTX
FHIR Search for client developers by Mirjam Baltus
PDF
FHIR for Hackers
PPTX
Dev days 2017 advanced directories (brian postlethwaite)
PPTX
fhir-documents
PDF
Claude Nanjo. Modeling with FHIR. An Introduction to FHIR.
PDF
Semantic Indexing and Search for Content Management Systems with Apache Stanbol
PDF
Fhir basics session2_restful_apis
PPTX
BizTalk on FHIR
PDF
1 7 open_ehr in context
PPTX
Fire and Ice - FHIR in New Zealand - David Hay
PPTX
FHIR & Ice
PPTX
FHIR
PDF
What is FHIR
PDF
FAST Search for SharePoint
PPTX
Intro_To_FHIR.pptx
PPTX
Building bridges devdays 2017- powerpoint template
PDF
Fhir your applications
DOCX
Eastman_MI530_FinalProjectReport
PPTX
Ihic preso v2
PPTX
Lab EPiServer Find - Advanced developer scenarios
FHIR Search for client developers by Mirjam Baltus
FHIR for Hackers
Dev days 2017 advanced directories (brian postlethwaite)
fhir-documents
Claude Nanjo. Modeling with FHIR. An Introduction to FHIR.
Semantic Indexing and Search for Content Management Systems with Apache Stanbol
Fhir basics session2_restful_apis
BizTalk on FHIR
1 7 open_ehr in context
Fire and Ice - FHIR in New Zealand - David Hay
FHIR & Ice
FHIR
What is FHIR
FAST Search for SharePoint
Intro_To_FHIR.pptx
Building bridges devdays 2017- powerpoint template
Fhir your applications
Eastman_MI530_FinalProjectReport
Ihic preso v2
Lab EPiServer Find - Advanced developer scenarios
Ad

Recently uploaded (20)

PPTX
New ISO 27001_2022 standard and the changes
PPTX
SAP 2 completion done . PRESENTATION.pptx
PPTX
Microsoft-Fabric-Unifying-Analytics-for-the-Modern-Enterprise Solution.pptx
PPTX
IMPACT OF LANDSLIDE.....................
PPT
DU, AIS, Big Data and Data Analytics.ppt
PDF
OneRead_20250728_1808.pdfhdhddhshahwhwwjjaaja
PPTX
AI Strategy room jwfjksfksfjsjsjsjsjfsjfsj
PDF
Transcultural that can help you someday.
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked 2025}
PPTX
retention in jsjsksksksnbsndjddjdnFPD.pptx
PPT
ISS -ESG Data flows What is ESG and HowHow
PDF
Jean-Georges Perrin - Spark in Action, Second Edition (2020, Manning Publicat...
PPTX
Leprosy and NLEP programme community medicine
PDF
Navigating the Thai Supplements Landscape.pdf
PPTX
Market Analysis -202507- Wind-Solar+Hybrid+Street+Lights+for+the+North+Amer...
PDF
Votre score augmente si vous choisissez une catégorie et que vous rédigez une...
PDF
annual-report-2024-2025 original latest.
PPTX
Pilar Kemerdekaan dan Identi Bangsa.pptx
PDF
Microsoft 365 products and services descrption
PPTX
Topic 5 Presentation 5 Lesson 5 Corporate Fin
New ISO 27001_2022 standard and the changes
SAP 2 completion done . PRESENTATION.pptx
Microsoft-Fabric-Unifying-Analytics-for-the-Modern-Enterprise Solution.pptx
IMPACT OF LANDSLIDE.....................
DU, AIS, Big Data and Data Analytics.ppt
OneRead_20250728_1808.pdfhdhddhshahwhwwjjaaja
AI Strategy room jwfjksfksfjsjsjsjsjfsjfsj
Transcultural that can help you someday.
Capcut Pro Crack For PC Latest Version {Fully Unlocked 2025}
retention in jsjsksksksnbsndjddjdnFPD.pptx
ISS -ESG Data flows What is ESG and HowHow
Jean-Georges Perrin - Spark in Action, Second Edition (2020, Manning Publicat...
Leprosy and NLEP programme community medicine
Navigating the Thai Supplements Landscape.pdf
Market Analysis -202507- Wind-Solar+Hybrid+Street+Lights+for+the+North+Amer...
Votre score augmente si vous choisissez une catégorie et que vous rédigez une...
annual-report-2024-2025 original latest.
Pilar Kemerdekaan dan Identi Bangsa.pptx
Microsoft 365 products and services descrption
Topic 5 Presentation 5 Lesson 5 Corporate Fin

Up-front Design Considerations in FHIR Data Modeling

  • 1. Up-front Design Considerations in FHIR Data Modeling Combo Search Index Parameters in Practice 2022-03-10
  • 2. Welcome Presenter: Reza Abolhassani, MSc(eHealth), MSCA FHIR Data Modeler and Standards Developer Credit: Laurie MacDougall Sookraj (Tech/Team Lead) Dmitry Polyakov (Software Developer) Kevin Dougan (Senior Software Developer)
  • 3. Main Goal To be specific: ● Not sharing a piece of software or tool BUT a technique of using: ○ TransactionBuilder API which is used to construct FHIR transaction bundles ○ Custom Search Index Parameters(CSIP) which is used to for better performance of search parameters ○ Both are Smile CDR features
  • 4. TransactionBuilder API It is part of JavaScript Execution Environment (JEE) in Smile CDR platform: ● TransactionBuilder API is used to construct FHIR transaction bundles ○ Useful for batching a group of related FHIR operations into a single atomic unit (e.g., capture patient encounter data points using Patient, Encounter, Organization, Location, Practitioner, etc.) ○ updateConditional(resource).onToken(parameter, system, value) ○ createConditional(resource).onToken(parameter, system, value)
  • 5. Example ● Create this patient unless a patient already exists
  • 6. A Real Scenario (NALC) ● Organization Resource ○ Some organizations with the same TaxID or lack of NPI for many ○ Name+’-’+TaxId+’-’+NPI ● Practitioner Resource ○ Some practitioners with the same TaxID or lack of NPI for many ○ First Name+’-’+ Last Name+’-’+TaxId+‘-’+ NPI
  • 7. A Real Scenario (NALC) ● Organization (CARIN BB) ● Added Name because some orgs are missing data for ids above ● Name+’-’+TaxId+’-’+NPI will end up with unique resources!
  • 8. So What? ● When it comes to multi-threading and concurrency (e.g., data ingestion) ● Chances are to have several transactions including createConditional or updateConditional executed at the same time !!! (from experience) ● It will end up with duplicate resources with the same identifier ● Duplicate resources for reference information: ○ Organization, Practitioner, Location ● It could be really challenging!!! (especially in PROD) ● Here is where using CSIP technique comes into play! ● It will accommodate the normal behavior of TransactionBuilder API methods
  • 9. Search Parameters The important notes of Search Parameters: ● Used to search resources in a FHIR repository. ○ Resources filter by search parameters. ● Named paths (FHIR Path) within resources that are indexed by the system ○ Patient.gender ● Once defined, we can use them to find matching resources ○ GET [base]/Patient?gender=male
  • 10. Default Search Parameters The FHIR specification defines a set of built-in parameterst:
  • 11. Managing Search Parameters In a relational FHIR Storage module, each search parameter is represented by a SearchParameter resource in the database Using the FHIR Endpoint 1) GET http://localhost:8000/DEFAULT/SearchParameter?base=Patient 2) GET http://localhost:8000/DEFAULT/SearchParameter/individual-gender 3) …
  • 12. Custom Search Parameters We can create your own Search Parameters in Smile CDR in order to index fields and extensions that are not indexed by default.
  • 13. Combo Search Index Parameters HAPI FHIR and Smile CDR define a special type of SearchParameter called a Combo Search Index Parameter (CSIP) that is used to index a combination of parameters together in a single database table 1) http://localhost:8000/Patient?family=smith&birthdate=2021-01- 01&gender=http://hl7.org/fhir/administrative-gender|male 2) This generally works well, but can lead to performance issues 3) Using a Combo Search Index Parameter avoids unnecessary database joining. 4) Optionally, Smile CDR can also enforce uniqueness for the values of the parameters.
  • 15. Up-front Data Modeling Considerations! ● It is critical! for example when concurrency comes into play in Data Ingestion with Channel Import! ● Profile the data that comes in to understand it first ( big chunk of real data!) ● Design a specific simple or composite identifier to maintain uniqueness! ● Design a specific Custom Search Parameter and its associated Combo Search Index Parameter (Take advantage of the optional extension) ● Then, we can use this specific identifier along with the system URL ○ updateConditional(resource).onToken(parameter, system, value) ○ createConditional(resource).onToken(parameter, system, value)
  • 16. Q&A