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
- Authentication callback
- 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 environment using cargo xtask docker -- up -d and then run cargo xtask test.
If you need sudo to run docker, use the --sudo or just -s flag on cargo xtask docker.
Known Problems
- Due to the big number of big types, the compile time and its memory usage is really high. This is due to serde and typed builder derives being highly generic. The builders can be disabled by disabling the
buildersfeature to save some resources. - The builders 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 using FHIR resources with extensions..
More examples
Authentication callback
use Patient;
use *;
async
async
Resource identifier access
use ;
async
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.