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
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 | ✓/✓ | ✓/✓ | 文档 | |
JavaScript | tbd./tbd. | tbd./tbd. |
Rust
Rust 包支持两种工作模式
- 通用的元素模型
- 使用完全类型化的模型结构体。
元素模型始终启用,因为它也用于内部反序列化模型结构体。可以通过指定所需的 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()
};