FHIR SDK
This is a FHIR library in its early stages. The models are generated from the FHIR StructureDefinitions (see FHIR downloads). It aims to be:
- fully compliant
- as safe as possibe
- as easy to use as possible
- fully featured
Features
- Generated FHIR codes, types and resources
- Serialization and deserialization to and from JSON
- Optional builders for types and resources
- Implementation of base traits
- (Base)Resource for accessing common fields
- NamedResource for getting the resource type in const time
- DomainResource for accessing common fields
- IdentifiableResource for all resources with an identifier field
- Client implementation
- Create, Read, Update, Delete
- Search
- Paging
- Batch operations / Transactions
- Operations
- Patch
- GraphQL
- FHIRpath implementation
- Resource validation using FHIRpath and regular expressions
Not Planned
- XML
Example
use Patient;
use *;
use TryStreamExt;
async
For more examples, see the tests.
Testing
Simply set up the FHIR test server using docker compose up -d in the workspace root and then run cargo xtask test.
Known Problems
- Due to the big number of big types, the compile time and its memory usage is really high. The auto-generated builders also take a long time during the build time. The builders can be disabled by disabling the
buildersfeature to save some resources. - The builder cannot use
setter(strip_option), because it disables dynamic setting of optional fields. Vec<Option<T>>is annoying, but sadly is required to allow[null, {...}, null]for extensions..
Lints
This projects uses a bunch of clippy lints for higher code quality and style.
Install cargo-lints using cargo install --git https://github.com/FlixCoder/cargo-lints. The lints are defined in lints.toml and can be checked by running cargo lints clippy --all-targets --workspace.
License
Licensed under the MIT license. All contributors agree to license under this license.