8 个不稳定版本 (3 个破坏性版本)

0.4.0 2023年5月17日
0.3.1 2023年4月21日
0.2.2 2023年4月17日
0.1.2 2023年3月15日

#817编码


用于 hubro-sdk

MIT/Apache

75MB
1.5M SLoC

Fhirbolt - (实验性) Rust (以及可能 🔜 JS) 的 FHIR 库

Fhirbolt 是一个用于处理 FHIR 资源的实验性库集合。它目前为 Rust 编程语言提供了 JSON 和 XML 资源的序列化和反序列化。

将来会添加其他语言的绑定。主要目标是添加 JS 绑定,通过将核心 Rust 包编译成 WASM 来实现。

最终可能会添加更高级的功能,例如验证(包括基数和切片)或完整的 FHIRPath 评估。

目前支持的 FHIR 版本:R4、R4B 和 R5

路线图

  • JSON(反)序列化
  • XML(反)序列化
  • FHIRPath
  • JS/TS 包(通过编译成 WASM)

语言支持

语言 JSON 序列化/反序列化 XML 序列化/反序列化
Rust ✓/✓ ✓/✓ Rust 文档
JavaScript tbd./tbd. tbd./tbd.

Rust

Rust 包支持两种工作模式

  1. 通用的元素模型
  2. 使用完全类型化的模型结构体。

元素模型始终启用,因为它也用于内部反序列化模型结构体。可以通过指定所需的 FHIR 版本作为 Cargo 功能来选择性地启用模型结构体。

您应该只包含您真正需要的版本,因为这会显著增加构建时间。

[dependencies]
fhirbolt = { version = "0.4", features = ["r4b"] }

示例

// The `Resource` type is an enum that contains all possible FHIR resources.
// If the resource type is known in advance, you could also use a concrete resource type
// (like e.g. `fhirbolt::model::r4b::resources::Observation`).
use fhirbolt::model::r4b::Resource;
use fhirbolt::serde::{DeserializationConfig, DeserializationMode};

// The type of `s` is `&str`
let s = r#"{
    "resourceType": "Observation",
    "status": "final",
    "code": {
        "text": "some code"
    },
    "valueString": "some value"
}"#;

let r: Resource = fhirbolt::json::from_str(s, None).unwrap();

match r {
    Resource::Observation(o) => println!("deserialized observation: {:?}", r),
    _ => (),
}

// Use Default::default() or constructing new resources by yourself
let o = Observation {
    status: "final".into(),
    code: Box::new(CodeableConcept {
        text: Some("some code".into()),
        ..Default::default()
    }),
    value: Some(ObservationValue::String("some value".into())),
    ..Default::default()
};

依赖项