{"id":23360006,"url":"https://github.com/fhir/fhir-candle","last_synced_at":"2025-04-10T10:32:08.153Z","repository":{"id":249177800,"uuid":"830549576","full_name":"FHIR/fhir-candle","owner":"FHIR","description":"fhir-candle - A FHIR development and test server implemented in C#","archived":false,"fork":false,"pushed_at":"2025-03-31T14:39:12.000Z","size":7166,"stargazers_count":9,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T15:06:39.491Z","etag":null,"topics":["csharp","developer-tools","development-environment","fhir","fhir-server","hl7","testing-tools"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FHIR.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.MD","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.MD","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-18T13:41:11.000Z","updated_at":"2025-03-31T14:39:18.000Z","dependencies_parsed_at":"2024-09-10T00:46:33.125Z","dependency_job_id":"44e3764b-9f5d-490d-bd83-b719dcfb0c10","html_url":"https://github.com/FHIR/fhir-candle","commit_stats":null,"previous_names":["fhir/fhir-candle"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FHIR%2Ffhir-candle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FHIR%2Ffhir-candle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FHIR%2Ffhir-candle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FHIR%2Ffhir-candle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FHIR","download_url":"https://codeload.github.com/FHIR/fhir-candle/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248199136,"owners_count":21063641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","developer-tools","development-environment","fhir","fhir-server","hl7","testing-tools"],"created_at":"2024-12-21T11:12:48.671Z","updated_at":"2025-04-10T10:32:08.144Z","avatar_url":"https://github.com/FHIR.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fhir-candle\n[![Tests](https://github.com/FHIR/fhir-candle/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/FHIR/fhir-candle/actions/workflows/build-and-test.yml)\n[![Publish dotnet tool](https://img.shields.io/nuget/v/fhir-candle.svg)](https://github.com/FHIR/fhir-candle/actions/workflows/nuget-tool.yml)\n[![Publish Docker image to ghcr.io](https://github.com/FHIR/fhir-candle/actions/workflows/ghcr-docker.yml/badge.svg)](https://github.com/FHIR/fhir-candle/actions/workflows/ghcr-docker.yml)\n[![Deploy to `argo.run`](https://github.com/FHIR/fhir-candle/actions/workflows/argo-ris.yml/badge.svg)](https://github.com/FHIR/fhir-candle/actions/workflows/argo-ris.yml)\n\nWhen you need a small FHIR.\n\nfhir-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.\n\nThe 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.\n\nWhile 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:\n* No database / persisted state\n* Fast startup\n* Dynamically apply changes (e.g., search parameters)\n* House features that would not be appropriate in production\n    * E.g., provide feedback on SMART tokens to help developers\n\n## FHIR Foundation Project Statement\n* Maintainers: Gino Canessa\n* Issues / Discussion: Any issues should be submitted on [GitHub](https://github.com/FHIR/fhir-candle/issues). Discussion can be performed here on GitHub, or on the [dotnet stream on chat.fhir.org](https://chat.fhir.org/#narrow/stream/179171-dotnet).\n* License: This software is offered under the [MIT License](LICENSE).\n* Contribution Policy: See [Contributing](#contributing).\n* Security Information: See [Security](#security).\n\n## Contributing\n\nThere are many ways to contribute:\n* [Submit bugs](https://github.com/FHIR/fhir-candle/issues) and help us verify fixes as they are checked in.\n* Review the [source code changes](https://github.com/FHIR/fhir-candle/pulls).\n* Engage with users and developers on the [dotnet stream on FHIR Zulip](https://chat.fhir.org/#narrow/stream/179171-dotnet)\n* Contribute features or bug fixes - see [Contributing](CONTRIBUTING.MD) for details.\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).\nFor more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or\ncontact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n\n\n### Security\n\nTo report a security issue, please use the GitHub Security Advisory [\"Report a Vulnerability\"](https://github.com/FHIR/fhir-candle/security/advisories/new) tab.\n\nFor more information, please see the [Security Readme](SECURITY.MD).\n\n\n# Documentation\n\n## Get Started with .Net\n\n[Install .NET 8 or newer](https://get.dot.net) and run this command:\n\n```\ndotnet tool install --global fhir-candle\n```\n\nNote that this software is still under heavy development.\n\nStart a FHIR server and open the browser by running:\n```\nfhir-candle -o\n```\n\n## Get Started with Docker\n\n[Install Docker](https://docs.docker.com/engine/install/) and run these commands:\n\n```\ndocker pull ghcr.io/fhir/fhir-candle:latest\ndocker run -p 8080:5826 ghcr.io/fhir/fhir-candle:latest\n```\n\nThis will run the docker image with the default configuration, mapping port 5826 from the container to port 8080 in the host.\nOnce running, you can access http://localhost:8080/ in the browser to access the fhir-candle's UI or access the default endpoints:\n* http://localhost:8080/fhir/r4/ for FHIR R4\n* http://localhost:8080/fhir/r4b/ for FHIR R4B\n* http://localhost:8080/fhir/r5/ for FHIR R5\n\nNote that additional arguments can be passed directly via the `docker run` command. For example, to run the server with only an R4 endpoint named 'test':\n```\ndocker run -p 8080:5826 ghcr.io/fhir/fhir-candle:latest --r4 test\n```\n\n\n## Get Started via cloning this repository\n\nTo run the default server from the command line:\n```\ndotnet run --project src/fhir-candle/fhir-candle.csproj\n```\n\nTo pass arguments when using `dotnet run`, add an extra `--`.  For example, to see help:\n```\ndotnet run --project src/fhir-candle/fhir-candle.csproj -- --help\n```\n\nTo build a release version of the project:\n```\ndotnet build src/fhir-candle/fhir-candle.csproj -c Release\n```\n\n\nThe output of the release build can be run (from the root directory of the repo)\n* on all platforms:\n```\ndotnet ./src/fhir-candle/bin/Release/net8.0/fhir-candle.dll\n```\n* if you built on Windows:\n```\n.\\src\\fhir-candle\\bin\\Release\\net8.0\\fhir-candle.exe\n```\n* if you built on Linux or MacOs:\n```\n./src/fhir-candle/bin/Release/net8.0/fhir-candle\n```\n\n### FHIR Tenants\n\nBy default, this software loads three FHIR 'tenants':\n* a FHIR R4 endpoint at `/r4`,\n* a FHIR R4B endpoint at `/r4b`, and\n* a FHIR R5 endpoint at `/r5`.\n\nThe tenants can be controlled by command line arguments - note that manually specifying any tenants\noverrides the default configuration and will *only* load the ones specified.  To load only an R4\nendpoint at 'fhir', the arguments would include `--r4 fhir`.  You can specify multiple tenants for\nthe same version, for example `--r5 fhir --r5 also-fhir` will create two endpoints.\n\n### Loading Initial Data\n\nThe server will load initial data specified by the `--fhir-source` argument.  If the path specified\nis a relative path, the software will look for the directory starting at the current running path.\n\nIf the system is loading multiple tenants, it will check the path for additional directories based\non the tenant names.  For example, a path like `fhirData` passed into the default server will look for\n`fhirData/r4`, `fhirData/r4b`, and `fhirData/r5`.  If tenant directories are not found, all tenants will try to\nload resources from the specified path.\n\n### Subscriptions Reference Implementation\n\nThis project also contains the reference stack for FHIR Subscriptions.  To use the default landing page\nof the subscriptions RI, the following command can be used:\n```\nfhir-candle --reference-implementation subscriptions --load-package hl7.fhir.uv.subscriptions-backport#1.1.0 --load-examples false --protect-source true -m 1000\n```\n\n## Using OpenTelemetry\n\nOpenTelemetry instrumentation can be enabled via either the `--otel-otlp-endpoint` argument or the `OTEL_EXPORTER_OTLP_ENDPOINT` environment variable.\nFor example, to send traces to a Jaeger instance running on `localhost:4317`: `fhir-candle -o --otel-otlp-endpoint http://localhost:4317`.\n\nFor local testing, you can run a Jaeger instance in Docker with the following command:\n\n```\ndocker run --rm --name jaeger -p 4317:4317 -p 4318:4318 -p 5778:5778 -p 16686:16686 -p 14250:14250 jaegertracing/all-in-one:latest\n```\n\n# To-Do\nNote: items are unsorted within their priorities\n\n## High priority\n* Feature/module definitions for selective loading\n    Build interfaces for Hosted Services, etc.\n    Add module tag to Operation, etc.\n    Conditional loading based on discovery within types\n* Persistent 'unsubscribe' list\n* Finish search evaluators (remaining modifier combinations)\n* Save/restore points\n* Resource display / edit in UI\n* Resource editor design improvements\n* Add loading packages/profiles to CapabilityStatement\n* Configuration and content loading via GH repos\n\n## Mid Priority\n* Complete SMART support\n* Additional Transaction support\n* OpenAPI generation\n* Contained resources\n* Subscription websocket support\n* Runtime Operation definitions with static/template or JS scripted responses.\n* Minimal build (project and image) focused on size reduction\n    * Use Native AOT deployment\n* Add 'core' operations (e.g., `$meta-add`).\n* Add support for operaions within `transaction` bundles\n\n## The long tail\n* Versioned Resource support\n* Non-terminology validation\n* Link to terminology server for full validation\n* `_filter` support\n* Runtime named queries\n* GraphQL support\n\n## More Information\n\n\n\nFHIR\u0026reg; is the registered trademark of HL7 and is used with the permission of HL7. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffhir%2Ffhir-candle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffhir%2Ffhir-candle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffhir%2Ffhir-candle/lists"}