Contents

1 Introduction

The purpose of this vignette is to explore relationships between concepts underlying FHIR foundational concepts and aspects of implementation in BiocFHIR.

This text uses R commands that will work for an R (version 4.2 or greater) in which BiocFHIR (version 0.0.14 or greater) has been installed. The source codes are always available at github and may be available for installation by other means.

2 Some comments from hl7.org/fhir Executive Summary

The following are verbatim from the executive summary on Oct 5 2022. The FHIR system is said to provide

End of quotation.

3 FHIR JSON documents in BiocFHIR

The file located at dir(system.file("json", package="BiocFHIR"), full=TRUE) is a single JSON document produced in the Synthea project of the MITRE Corporation. It is an extract from a zip file provided at the Synthea web site. Usage notes include:

’Data hosted within SyntheticMass has been generated by SyntheaTM, an open-source patient population simulation made available by The MITRE Corporation.

The data is free from cost, privacy, and security restrictions. It can be used without restriction for a variety of secondary uses in academia, research, industry, and government.

Please cite SyntheaTM or SyntheticMass as:

Jason Walonoski, Mark Kramer, Joseph Nichols, Andre Quina, Chris Moesel, Dylan Hall, Carlton Duffett, Kudakwashe Dube, Thomas Gallagher, Scott McLachlan, Synthea: An approach, method, and software mechanism for generating synthetic patients and the synthetic electronic health care record, Journal of the American Medical Informatics Association, Volume 25, Issue 3, March 2018, Pages 230–238, https://doi.org/10.1093/jamia/ocx079’")

A collection of 50 documents, randomly sampled from over 1100 provides at Synthea, is available using the command BiocFHIR::make_test_json_set(); the documents will be written to a temporary folder.

4 Examining sample data

peek = jsonlite::fromJSON(dir(system.file("json", package="BiocFHIR"), full=TRUE))
names(peek)
## [1] "resourceType" "type"         "entry"
peek$resourceType
## [1] "Bundle"
names(peek$entry)
## [1] "fullUrl"  "resource" "request"
length(names(peek$entry$resource))
## [1] 72
class(peek$entry$resource)
## [1] "data.frame"
dim(peek$entry$resource)
## [1] 301  72
head(names(peek$entry$resource))
## [1] "resourceType" "id"           "text"         "extension"    "identifier"  
## [6] "name"

There are many concepts covered in peek$entry$resource, but in this document, most of them will have no content.

It is significant to note that the resourceType has value “Bundle”. The meaning of this term is provided at http://hl7.org/fhir/bundle.html.

Drilling down a bit further, we see that the 301 records collected in this Bundle have resource types indicative of a clinical focus.

table(peek$entry$resource$resourceType)
## 
##   AllergyIntolerance             CarePlan             CareTeam 
##                    8                    3                    3 
##                Claim            Condition     DiagnosticReport 
##                   46                   15                    3 
##            Encounter ExplanationOfBenefit         Immunization 
##                   37                   37                   10 
##    MedicationRequest          Observation         Organization 
##                    9                  114                    3 
##              Patient         Practitioner            Procedure 
##                    1                    3                    9

More details on these types can be examined at http://hl7.org/fhir/clinicalsummary-module.html.

5 Session information

sessionInfo()
## R Under development (unstable) (2023-11-11 r85510)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 22.04.3 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.19-bioc/R/lib/libRblas.so 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_GB              LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] jsonlite_1.8.8   DT_0.31          BiocFHIR_1.5.1   BiocStyle_2.31.0
## 
## loaded via a namespace (and not attached):
##  [1] dplyr_1.1.4         compiler_4.4.0      BiocManager_1.30.22
##  [4] BiocBaseUtils_1.5.0 promises_1.2.1      tidyselect_1.2.0   
##  [7] Rcpp_1.0.11         tidyr_1.3.0         later_1.3.2        
## [10] jquerylib_0.1.4     yaml_2.3.8          fastmap_1.1.1      
## [13] mime_0.12           R6_2.5.1            generics_0.1.3     
## [16] knitr_1.45          htmlwidgets_1.6.4   visNetwork_2.1.2   
## [19] BiocGenerics_0.49.1 graph_1.81.0        tibble_3.2.1       
## [22] bookdown_0.37       shiny_1.8.0         bslib_0.6.1        
## [25] pillar_1.9.0        rlang_1.1.2         utf8_1.2.4         
## [28] cachem_1.0.8        httpuv_1.6.13       xfun_0.41          
## [31] sass_0.4.8          cli_3.6.2           magrittr_2.0.3     
## [34] digest_0.6.33       xtable_1.8-4        lifecycle_1.0.4    
## [37] vctrs_0.6.5         evaluate_0.23       glue_1.6.2         
## [40] stats4_4.4.0        fansi_1.0.6         purrr_1.0.2        
## [43] rmarkdown_2.25      ellipsis_0.3.2      tools_4.4.0        
## [46] pkgconfig_2.0.3     htmltools_0.5.7