Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

- name: Cache contents of ~/.fhir
id: fhir-cache
uses: actions/cache@v3
uses: actions/cache@v5
with:
path: ~/.fhir
key: ${{ runner.os }}-fhir
Expand Down
69 changes: 41 additions & 28 deletions fsh-deep-dive/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fsh-seminar/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ Course authors include:
- Max Masnick
- May Terry

Questions/comments: [chat.fhir.org](https://chat.fhir.org/#narrow/stream/322131-fsh-courses)
Questions/comments: [chat.fhir.org](https://chat.fhir.org/#narrow/channel/215610-shorthand)
2 changes: 1 addition & 1 deletion fsh-seminar/Requirements-fromNarrative.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"resourceType" : "Requirements",
"id" : "fromNarrative",
"url" : "http://hl7.org/fhir/xver-extensions/Requirements/fromNarrative",
"url" : "https://fshschool.org/courses/fsh-seminar/Requirements/fromNarrative",
"name" : "FromNarrative",
"title" : "Narrative Conformance Statements",
"status" : "active",
Expand Down
Binary file added fsh-seminar/input/images-source/ig_venn.graffle
Binary file not shown.
Binary file not shown.
Binary file added fsh-seminar/input/images-source/pie.graffle
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified fsh-seminar/input/images/osa_patient.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/patient_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/patient_ex.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/profile_anatomy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/profile_diff.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/profile_snapshot_annotated.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified fsh-seminar/input/images/sushi_init.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
89 changes: 48 additions & 41 deletions fsh-seminar/input/pagecontent/01-reading-an-ig.md

Large diffs are not rendered by default.

117 changes: 65 additions & 52 deletions fsh-seminar/input/pagecontent/02-creating-an-ig.md

Large diffs are not rendered by default.

17 changes: 9 additions & 8 deletions fsh-seminar/input/pagecontent/03-exercise.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ The goal of this hands-on exercise is to provide experience working with the con

### Premise

As a FHIR implementation modeler, author a FHIR Implementation Guide (IG) based on [FHIR 4.0.1](http://hl7.org/fhir) for the fictitious use case scenario [described in Part 2](http://localhost:4321/fshschool-ig-authoring/02-creating-an-ig.html#how-do-you-create-an-ig%E2%8F%AF-video-versionto-view-this-v), and reproduced below for convenience:
As a FHIR implementation modeler, author a FHIR Implementation Guide (IG) based on [FHIR 4.0.1](https://hl7.org/fhir/R4/index.html) for the fictitious use case scenario [described in Part 2](02-creating-an-ig.html#how-do-you-create-an-ig), and reproduced below for convenience:

<div class="alert alert-success" role="alert" markdown="1">
**Hypothetical problem:**

> The Obstructive Sleep Apnea Association (OSAA - a fictitious clinical organization based in the U.S.) is looking to evaluate the impact of obesity as a risk > for Obstructive Sleep Apnea (OSA). OSAA needs a way to ensure the relevant clinical data are collected in a standard, interoperable format from participating member sites.
> The Obstructive Sleep Apnea Association (OSAA - a fictitious clinical organization based in the U.S.) is looking to evaluate the impact of obesity as a risk for Obstructive Sleep Apnea (OSA). OSAA needs a way to ensure the relevant clinical data are collected in a standard, interoperable format from participating member sites.

**Participants:**

Expand Down Expand Up @@ -45,15 +45,15 @@ The use case for this work is as follows:

### Tasks

1. Add remaining FHIR profiles based on the [Resources Model from Part 2](02-creating-an-ig.html#mapping-high-level-information-model-to-fhir-resources), aligning with with [FHIR U.S. Core 3.2](http://hl7.org/fhir/us/core/2021Jan/) profiles where possible:
1. Add remaining FHIR profiles based on the [Resources Model from Part 2](02-creating-an-ig.html#mapping-high-level-information-model-to-fhir-resources), aligning with with [FHIR US Core 6.1](https://hl7.org/fhir/us/core/STU6.1/) profiles where possible:
1. Practitioner profile (`OSAPractitioner`) ([solution](02-creating-an-ig.html#profile-practitioner))
2. OSA Condition profile (`OSACondition`) ([solution](02-creating-an-ig.html#profile-condition))
2. Create an example of `OSAPractitioner` (solution at bottom of [this section of Part 2](02-creating-an-ig.html#creating-examples))
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.
4. Successfully build your IG locally with `_build` and attempt to resolve any errors on the `output/qa.html` page. _NOTE: You may also see some warning, but just focus on resolving the errors for now._


### Additional notes
Expand All @@ -64,11 +64,12 @@ The use case for this work is as follows:

### 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](https://fshschool.org/FSHOnline/#/)
- Check the QA report (`output/qa.html`) as you build the IG with `_build` 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](https://fshschool.org/FSHOnline/#/).
- If your FSH references US Core profiles or extensions, you'll need to add `hl7.fhir.us.core#6.1.0` as a dependency in the FSH Online configuration.
- Want to see more FSH examples? Go to [FSHOnline](https://fshschool.org/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](https://fshschool.org/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](https://marketplace.visualstudio.com/items?itemName=MITRE-Health.vscode-language-fsh) extension to help navigate references between your authored FHIR constructs (profiles, value sets, extensions, etc.)
- Try using some of the nice perks in the [vscode-fsh](https://marketplace.visualstudio.com/items?itemName=FHIR-Shorthand.vscode-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](https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles) - 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](https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio) - integrates Draw.io/diagrams.net into VSCode so that you can create nice diagrams directly inside your IG authoring environment
Expand All @@ -94,7 +95,7 @@ In addition to the elements of the solution embedded in Part 2, the full solutio
| `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 | |
| `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 |
Expand Down
7 changes: 4 additions & 3 deletions fsh-seminar/input/pagecontent/fhir-resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- [Architecture overview](http://hl7.org/fhir/overview-arch.html)
- [IG best practices](https://build.fhir.org/ig/FHIR/ig-guidance/branches/master/best-practice.html) (note that this has not officially been published yet, but [the authors are some of the FHIR-I leaders](https://github.com/FHIR/ig-guidance/))
- Intro to FHIR videos
- [45 minutes, from 2023](https://www.youtube.com/watch?v=6PkDXAEmkbE)
- [90 minutes, from 2020](https://www.youtube.com/watch?v=YbQcJj1GqH0)
- The FHIR Confluence site, e.g., [Guide to Designing Resources](https://confluence.hl7.org/display/FHIR/Guide+to+Designing+Resources), but there are many other pages that may be of interest
- [45 minutes, from 2025](https://youtu.be/Dz3HOaf6e-0)
- [90 minutes, from 2020](https://youtu.be/YbQcJj1GqH0)
- The FHIR Confluence site, e.g., [Guide to Designing Resources](https://confluence.hl7.org/display/FHIR/Guide+to+Designing+Resources), but there are many other pages that may be of interest
- Search the archives or ask for help at [chat.fhir.org (a.k.a. Zulip)](https://chat.fhir.org/)
22 changes: 16 additions & 6 deletions fsh-seminar/input/pagecontent/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ This course is a comprehensive overview of IG authoring for those interested in

### Learning objectives

1. Become familiar with the FHIR specification, and commonly used FHIR resources and element types.
1. Become familiar with the FHIR specification, and commonly used FHIR resources and element types
2. Learn the recommended process for successfully planning a new IG
3. Gain proficiency with the FHIR Shorthand ecosystem of tools (FSH, GoFSH, SUSHI)
4. Learn how to create the common components of an IG, including FHIR profiles, code systems, and value sets
5. Learn about key FHIR profiling concepts including value set binding, cardinality, MustSupport, slicing, and extensions
6. Awareness of common clinical code systems including LOINC, SNOMED, ICD10, and code systems in the HL7 terminology list
6. Understand the purpose of common clinical code systems including LOINC, SNOMED, ICD10, and code systems in the HL7 terminology list


### Prerequisites
Expand Down Expand Up @@ -47,7 +47,7 @@ We recommend completing the course materials over two days as described below.
<li>Complete the <a href="setup.html">setup instructions</a></li>
</ol>
</td>
<td>~1 hour; help available on <a href="https://chat.fhir.org/#narrow/stream/322131-fsh-courses">chat.fhir.org</a></td>
<td>~1 hour; help available on <a href="https://chat.fhir.org/#narrow/channel/215610-shorthand">chat.fhir.org</a></td>
</tr>

<tr style="background-color: #453d83; color: white;">
Expand All @@ -62,7 +62,7 @@ We recommend completing the course materials over two days as described below.
<li>What's the purpose of an IG?</li>
<li>What are the common components of an IG?</li>
<li>How to approach reading an unfamiliar IG</li>
<li>Review of the <a href="http://hl7.org/fhir/uv/shc-vaccination/2021Sep/">SMART Health Cards: Vaccination &amp; Testing</a> IG</li>
<li>Review of the <a href="https://hl7.org/fhir/us/mcode/STU4/">minimal Common Oncology Data Elements (mCODE)</a> IG</li>
</ol>
</td>
<td>~1 hour</td>
Expand Down Expand Up @@ -106,7 +106,17 @@ We recommend completing the course materials over two days as described below.
<td><a href="04-deep-dive-with-fsh.html">Deep Dive With FSH</a></td>
<td>
<ol>
<li>TBD, but likely: slicing, extensions, invariants, CapabilityStatements and SearchParams</li>
<li>IG Overview: review purposes and processes for creating FHIR IGs</li>
<li>FSH Profiles: cardinality, flags, types, patterns, bindings, extensions, metadata</li>
<li>Slicing: defining slicing logic, creating slices, referencing slices</li>
<li>FHIRPath: path navigation, common expressions, testing and debugging</li>
<li>Invariants: defining and using invariants (a.k.a. constraints)</li>
<li>FSH Extensions: simple and complex extensions</li>
<li>FSH Terminology: value sets and code systems </li>
<li>FSH Instances: example and definition instances, rule sets, search parameters, operations, capability statements</li>
<li>Narrative: creating pages in your IG and inserting content into formal definition pages</li>
<li>Configuration: sushi-config.yaml and the ImplementationGuide resource</li>
<li>GoFSH: converting an existing project to FSH</li>
</ol>
</td>
<td>2-3 hours</td>
Expand All @@ -121,7 +131,7 @@ We recommend completing the course materials over two days as described below.
- Chris Moesel (MITRE)
- May Terry (MITRE)

If you have questions or comments, please contact us on <a href="https://chat.fhir.org/#narrow/stream/322131-fsh-courses">chat.fhir.org</a>.
If you have questions or comments, please contact us on <a href="https://chat.fhir.org/#narrow/channel/215610-shorthand">chat.fhir.org</a>.

MITRE: Approved for Public Release. Distribution Unlimited. Case Number 19-3439.

Expand Down
12 changes: 6 additions & 6 deletions fsh-seminar/input/pagecontent/setup.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
### FHIR Background

- [45 minute FHIR introduction video](https://www.youtube.com/watch?v=rJ_VEKiR55I) -- please consider viewing before the course begins
- [35 minute FHIR introduction video](https://youtu.be/Dz3HOaf6e-0) -- please consider viewing before the course begins

### Local environment

As part of this course, you will edit and build a FHIR Implementation Guide on your computer. To do this, you will need the following:

1. Install [Visual Studio Code](https://code.visualstudio.com) and the [FSH language extension](https://marketplace.visualstudio.com/items?itemName=MITRE-Health.vscode-language-fsh)
1. Install [Visual Studio Code](https://code.visualstudio.com) and the [FSH language extension](https://marketplace.visualstudio.com/items?itemName=FHIR-Shorthand.vscode-fsh)
2. Install a Java runtime
3. Install Ruby and Jekyll using [these OS-specific instructions](https://jekyllrb.com/docs/installation/#guides)
4. Install SUSHI using [these directions](https://fshschool.org/docs/sushi/installation/)
5. Download the syllabus IG from `https://github.com/FSHSchool/courses-fsh-seminar-exercise/archive/refs/heads/main.zip` and unzip it, or `git clone https://github.com/FSHSchool/courses-fsh-seminar-exercise.git`
6. Open a Terminal/Command Prompt window inside the IG folder, and run `./_updatePublisher.sh` (Mac/Linux) or `_updatePublisher.bat` (Windows) from the command line.
- This will automatically download the latest `publisher.jar` release from <https://github.com/HL7/fhir-ig-publisher/releases> and put it in the `input-cache/` folder inside the IG folder.
- The IG folder will be `courses-fsh-seminar-exercise-main/input-cache/` if you used the `.zip` download, or `courses-fsh-seminar-exercise/input-cache/` if you used `git clone`.
7. Run `./_genonce.sh` (Mac/Linux) or `_genonce.bat` (Windows)
- The IG folder will be `courses-fsh-seminar-exercise-main/` if you used the `.zip` download, or `courses-fsh-seminar-exercise/` if you used `git clone`.
6. Open a Terminal/Command Prompt window inside the IG folder, and run `./_build.sh update` (Mac/Linux) or `_build.bat update` (Windows) from the command line, answering `Y` to each of the prompts
- This will automatically download the latest `publisher.jar` release from <https://github.com/HL7/fhir-ig-publisher/releases> and put it in the `input-cache/` folder inside the IG folder
7. Run `./_build.sh build` (Mac/Linux) or `_build.bat build` (Windows)
8. Open `output/index.html` from inside your IG folder. You should see a mostly-empty IG home page that says "FSHSeminarExercise" on it.

### JSON background
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ <h3 class="card-title lh-sm text-center">
</p>

<p class="text-center">
Questions? Ask on <a href="https://chat.fhir.org/#narrow/stream/322131-fsh-courses" target="_blank">Zulip</a>.
Questions? Ask on <a href="https://chat.fhir.org/#narrow/channel/215610-shorthand" target="_blank">Zulip</a>.
</p>
</div>
</div>
Expand Down