fhir-candle 2024.718.2031

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global fhir-candle --version 2024.718.2031
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local fhir-candle --version 2024.718.2031
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=fhir-candle&version=2024.718.2031
                    
nuke :add-package fhir-candle --version 2024.718.2031
                    

fhir-candle

Tests Publish dotnet tool Publish Docker image on GitHub CR Deploy to subscriptions.argo.run

When you need a small FHIR.

fhir-candle is a small in-memory FHIR server that can be used for testing and development. It is NOT intended to be used for production workloads.

The project is intended to serve as a platform for rapid development and testing for FHIR - both for features in the core specification as well as Implementation Guide development.

While there are many existing OSS FHIR servers, somewhere between most and all of them are intended to support production workloads. In my own work on Reference Implementations, I often found it challenging to add the types of features I wanted due to the conflicts that causes. To that end, here are some principles I generally use while developing this project:

  • No database / persisted state
  • Fast startup
  • Dynamically apply changes (e.g., search parameters)
  • House features that would not be appropriate in production
    • E.g., provide feedback on SMART tokens to help developers

FHIR Foundation Project Statement

Contributing

There are many ways to contribute:

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Security

To report a security issue, please use the GitHub Security Advisory "Report a Vulnerability" tab.

For more information, please see the Security Readme.

Documentation

Get Started

Install .NET 8 or newer and run this command:

dotnet tool install --global fhir-candle

Note that this software is still under heavy development.

Start a FHIR server and open the browser by running:

fhir-candle -o

Cloning this repository

To run the default server from the command line:

dotnet run --project src/fhir-candle/fhir-candle.csproj

To pass arguments when using dotnet run, add an extra --. For example, to see help:

dotnet run --project src/fhir-candle/fhir-candle.csproj -- --help

To build a release version of the project:

dotnet build src/fhir-candle/fhir-candle.csproj -c Release

The output of the release build can be run (from the root directory of the repo)

  • on all platforms:
dotnet ./src/fhir-candle/bin/Release/net8.0/fhir-candle.dll
  • if you built on Windows:
.\src\fhir-candle\bin\Release\net8.0\fhir-candle.exe
  • if you built on Linux or MacOs:
./src/fhir-candle/bin/Release/net8.0/fhir-candle

FHIR Tenants

By default, this software loads three FHIR 'tenants':

  • a FHIR R4 endpoint at /r4,
  • a FHIR R4B endpoint at /r4b, and
  • a FHIR R5 endpoint at /r5.

The tenants can be controlled by command line arguments - note that manually specifying any tenants overrides the default configuration and will only load the ones specified. To load only an R4 endpoint at 'fhir', the arguments would include --r4 fhir. You can specify multiple tenants for the same version, for example --r5 fhir --r5 also-fhir will create two endpoints.

Loading Initial Data

The server will load initial data specified by the --fhir-source argument. If the path specified is a relative path, the software will look for the directory starting at the current running path.

If the system is loading multiple tenants, it will check the path for additional directories based on the tenant names. For example, a path like data passed into the default server will look for data/r4, data/r4b, and data/r5. If tenant directories are not found, all tenants will try to load resources from the specified path.

Subscriptions Reference Implementation

This project also contains the reference stack for FHIR Subscriptions. To use the default landing page of the subscriptions RI, the following command can be used:

fhir-candle --reference-implementation subscriptions --load-package hl7.fhir.uv.subscriptions-backport#1.1.0 --load-examples false --protect-source true -m 1000

To-Do

Note: items are unsorted within their priorities

High priority

  • Composite search parameter support
  • Reverse chaining (_has)
  • Feature/module definitions for selective loading Build interfaces for Hosted Services, etc. Add module tag to Operation, etc. Conditional loading based on discovery within types
  • Persistent 'unsubscribe' list
  • Finish search evaluators (remaining modifier combinations)
  • Save/restore points
  • Versioned Resource support
  • Resource display / edit in UI
  • Subscription RI scenario/walkthrough
  • Resource editor design improvements
  • Add loading packages/profiles to CapabilityStatement

Mid Priority

  • SMART support
  • Transaction support
  • Proxy header support
  • Conditional interaction support (e.g., conditional-update, if-match)
  • OpenAPI generation
  • Compartments
  • Contained resources
  • Subscription websocket support

The long tail

  • Non-terminology validation
  • Link to terminology server for full validation
  • _filter support
  • Runtime named queries
  • GraphQL support

More Information

FHIR® is the registered trademark of HL7 and is used with the permission of HL7.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
2025.611.1422 288 6/11/2025
2025.331.1443 400 3/31/2025
2025.220.1345 540 2/20/2025
2025.212.1633 534 2/12/2025
2025.210.2340 459 2/10/2025
2025.206.2325 262 2/6/2025
2025.129.1600 190 1/29/2025
2025.128.2330 225 1/28/2025
2025.127.2338 238 1/27/2025
2025.127.1336 233 1/27/2025
2024.921.1505 384 9/21/2024
2024.921.1450 282 9/21/2024
2024.910.1539 281 9/10/2024
2024.910.1310 269 9/10/2024
2024.909.2131 324 9/9/2024
2024.905.1831 268 9/5/2024
2024.904.11 252 9/4/2024
2024.903.1924 276 9/3/2024
2024.830.2000 214 8/30/2024
2024.830.1940 201 8/30/2024
2024.830.1932 241 8/30/2024
2024.830.1905 213 8/30/2024
2024.830.1741 210 8/30/2024
2024.830.1727 191 8/30/2024
2024.830.1708 201 8/30/2024
2024.830.1611 202 8/30/2024
2024.830.1605 197 8/30/2024
2024.830.1532 215 8/30/2024
2024.829.2222 181 8/29/2024
2024.829.2212 191 8/29/2024
2024.829.2052 210 8/29/2024
2024.829.2051 199 8/29/2024
2024.829.1556 176 8/29/2024
2024.829.1552 190 8/29/2024
2024.829.1550 182 8/29/2024
2024.829.1546 191 8/29/2024
2024.829.1527 175 8/29/2024
2024.828.1910 224 8/28/2024
2024.828.1856 202 8/28/2024
2024.718.2031 277 7/18/2024
2024.718.1934 230 7/18/2024
2024.718.1905 224 7/18/2024
2024.716.1509 207 7/16/2024
2024.530.2132 256 5/30/2024
2024.519.2147 285 5/19/2024
2024.519.2142 225 5/19/2024
2024.519.2045 234 5/19/2024
2024.328.2125 275 3/28/2024
2024.328.1751 332 3/28/2024
2024.125.1954 290 1/25/2024
2024.118.1940 274 1/18/2024
2024.118.1926 268 1/18/2024
2024.117.155 239 1/17/2024
2024.116.2310 260 1/16/2024
2024.116.2215 227 1/16/2024
2024.116.2208 262 1/16/2024
2024.116.2107 235 1/16/2024
2024.116.1647 263 1/16/2024
2024.116.1449 232 1/16/2024
2024.110.2157 304 1/10/2024
2024.110.2148 305 1/10/2024
2024.110.2136 273 1/10/2024
2024.110.2130 278 1/10/2024
2024.110.2117 287 1/10/2024
2024.110.2054 249 1/10/2024
2023.1116.2344 426 11/16/2023
2023.1115.1740 293 11/15/2023
2023.1115.1729 304 11/15/2023
2023.1113.2335 322 11/13/2023
2023.1113.1816 311 11/13/2023
2023.1110.2223 267 11/10/2023
2023.1109.2234 243 11/9/2023
2023.1109.2019 266 11/9/2023
2023.1109.1528 294 11/9/2023
2023.1109.1525 226 11/9/2023
2023.1108.2311 288 11/8/2023
2023.1108.2242 272 11/8/2023
2023.1108.2209 228 11/8/2023
2023.1108.2158 238 11/8/2023
2023.1108.2156 322 11/8/2023
2023.1108.2111 318 11/8/2023
2023.1108.2101 262 11/8/2023
2023.1108.1909 249 11/8/2023
2023.910.2104 414 9/10/2023
2023.910.1844 390 9/10/2023
2023.910.1836 420 9/10/2023
2023.909.1658 292 9/9/2023
2023.907.2106 365 9/7/2023
2023.906.2248 347 9/6/2023
2023.906.2228 373 9/6/2023
2023.831.1559 355 8/31/2023
2023.830.1814 465 8/30/2023
2023.830.1458 387 8/30/2023
2023.824.2157 357 8/24/2023
2023.815.308 391 8/15/2023
2023.811.2132 400 8/11/2023
2023.811.3 410 8/11/2023
2023.810.1617 380 8/10/2023
2023.810.1554 335 8/10/2023
2023.809.1922 393 8/9/2023
0.0.1-beta.8 143 6/19/2023
0.0.1-beta.7 113 6/19/2023
0.0.1-beta.6 133 6/4/2023
0.0.1-beta.5 148 6/2/2023
0.0.1-beta.4 130 6/1/2023
0.0.1-beta.3 133 5/31/2023