FSH Seminar
0.1.0 - ci-build

Publish Box goes here

Part 3: Hands-On Exercise

Purpose

The goal of this hands-on exercise is to provide experience working with the concepts and tools described in Part 1 and Part 2.

Premise

As a FHIR implementation modeler, author a FHIR Implementation Guide (IG) based on FHIR 4.0.1 for the fictitious use case scenario described in Part 2, and reproduced below for convenience:

Tasks

  1. Add remaining FHIR profiles based on the Resources Model from Part 2, aligning with with FHIR U.S. Core 3.2 profiles where possible:
    1. Practitioner profile (OSAPractitioner) (solution)
    2. OSA Condition profile (OSACondition) (solution)
  2. Create an example of OSAPractitioner (solution at bottom of this section of Part 2)
  3. Edit the home page of the IG to answer the following question:

    Were there any FHIR limitations in what is needed to create a representative model that addresses this use case? If yes, what were they and what changes or workarounds would you propose?

  4. Successfully build your IG locally with _genonce and attempt to resolve any errors on the output/qa.html page.

Additional notes

  • Don't overthink or expand the scope of the clinical use case. Just focus on the representation of clinical data requirements within the FHIR resource model with the information that is given.
  • Assume that the data exchange is secure so PHI and PII in FHIR instances will not be an issue.
  • There is no single answer. There could however be more optimal ways to represent models.

Helpful tips, tools, and references

  • Check the QA report (output/qa.html) as you build the IG with _genonce to identify any FHIR validation issues that aren't caught by SUSHI.
  • If you just want to quickly test how to represent and validate a contained construct in FSH without having to run the IG publisher, try it using FSHOnline
  • Want to see more FSH examples? Go to FSHOnline and click on the "FSH Examples".
  • Want to see how another IG's StructureDefinitions in JSON could be represented in FSH? Also try it using FSHOnline. Cut and paste your JSON into the right column and click on Convert to FSH to see the syntax.
  • Try using some of the nice perks in the vscode-language-fsh extension to help navigate references between your authored FHIR constructs (profiles, value sets, extensions, etc.)
  • Other neat VSCode extensions to help create a more authoring-friendly VSCode environment:
    • Markdown Preview Github Styling - provides a basic dynamic rendering of your markdown page while you type (but note that embedded images won't be rendered in the preview due to the directory structure).
    • Draw.io integration - integrates Draw.io/diagrams.net into VSCode so that you can create nice diagrams directly inside your IG authoring environment
  • This Markdown guide may be helpful if you're new to Markdown.

Solution

In addition to the elements of the solution embedded in Part 2, the full solution hidden below ().

Structural mapping

Profile Name FHIR element name / Path Use Case Data Element Comments
OSAPatient Patient.name Patient name  
OSAPatient Patient.birthDate Patient birth date  
OSAPatient Patient.generalPractitioner Patient's primary care provider  
OSAPatient Patient.extension.patient-birthPlace Patient's birth place Found FHIR standard extension, [patient-birthPlace]
OSAPractitioner Practitioner.name Practitioner name  
OSAPractitioner Practitioner.identifier.type Practitioner NPI Fix identifier type = NPI
OSACondition Condition.code OSA diagnosis code Fix to OSADiagnosisVS containing provided ICD-10-CM codes
OSACondition Condition.extension[AgeAtOSADiagnosis] OSA onset date  
OSACondition Condition.asserter managing provider who diagnosed OSA  
OSABodyMassIndex Observation.code Body Mass Index (BMI) Fix code to 39156-5 "Body mass index (BMI)"
OSABodyMassIndex Observation.effectiveDateTime Body Mass Index (BMI)  
OSABodyMassIndex Observation.valueQuantity BMI measurement BMI Measurement

Completed IG

Available here.