9 个版本
0.0.10 | 2024年5月7日 |
---|---|
0.0.9 | 2024年5月7日 |
0.0.3 | 2024年2月28日 |
0.0.2 | 2024年1月11日 |
525 在 网页编程 中
2MB
26K SLoC
fhir-rs
关于
FHIR-RS 库是 Rust 对 HL7 FHIR 规范 的实现。
用其他语言阅读
版本
这是一个草案版本。功能尚未完全开发,性能尚未优化,因此不适合生产环境。
使用
医疗互操作性。
解析
use fhir_rs::prelude::*;
fn main() -> Result<()> {
let complex_extension = Extension::with_url("http://yeyanbo.cn")
.add_extension(Extension::new("abc", Any::Coding(Coding::default().set_code("cc"))))
.add_extension(Extension::new("xcv", Any::Coding(Coding::default().set_code("bb"))));
let patient = Patient::default()
.set_id("example")
.set_meta(Meta::default()
.set_version_id("v1")
.set_last_updated(InstantDt::from_str("2001-10-10T10:10:12Z")?))
.add_extension(Extension::new("dd", Any::String(StringDt::new("ddf"))))
.add_extension(complex_extension)
.add_name(HumanName::default().set_text("Mike"))
.add_telecom(ContactPoint::default().set_value("1234567890"));
test_xml_serialize(&patient)?;
test_json_serialize(&patient)?;
Ok(())
}
fn test_json_serialize(patient: &Patient) -> Result<()> {
let str = to_json_pretty(patient)?;
info!("Patient Formatter: {}", str);
Ok(())
}
fn test_xml_serialize(patient: &Patient) -> Result<()> {
let str = to_xml_pretty(patient)?;
info!("Patient Formatter: {}", str);
Ok(())
}
Fhirpath
目前,FHIRPath 语法解析框架已完成,但功能支持有限,仅支持少量功能方法
- empty()
- exists()
运算符:
- and
- =
验证
use fhir_rs::prelude::*;
fn main() -> Result<()> {
let encounter_str = include_str!("encounter_example_02.xml");
let encounter: Encounter = from_xml(encounter_str)?;
let profile_str = include_str!("profile-core-outpatient-encounter.xml");
let profile: StructureDefinition = from_xml(profile_str)?;
let mut validator = Validator::new(profile);
let outcome = validator.validate(&encounter)?;
println!("Validate Outcome: {:#?}", &outcome);
Ok(())
}
完整示例
- 转换
- FhirPath
- 验证
完成
- 数据类型
- 资源
- 从 json 到资源
- 从 xml 到资源
- 从资源到 json
- 从资源到 xml
- fhirpath
- 验证器
待办事项
- fhir 客户端
- fhir 服务器
许可
CC0
依赖
~3–15MB
~188K SLoC