Thanks to visit codestin.com
Credit goes to lib.rs

#healthcare #hl7

fhir-rs

FHIR-RS library is an implementation of HL7 FHIR Specification for Rust

10 releases

0.1.0 Dec 8, 2024
0.0.10 May 7, 2024
0.0.3 Feb 28, 2024
0.0.2 Jan 11, 2024

#685 in Development tools

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

659 downloads per month
Used in 2 crates

Custom license

2MB
27K SLoC

fhir-rs

About

FHIR-RS library is an implementation of HL7 FHIR Specification for Rust.

Read this in other languages:

Versioning

This is still a draft version. The functionality is not yet fully developed and the performance has not been optimized, making it unsuitable for production environments.

Usage

Healthcare Interoperability.

Parse

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

At present, the framework for FHIRPath syntax parsing has been completed, but the function support is limited and only a few function methods are supported:

  • empty()
  • exists()

operator:

  • and
  • =

Validate

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(())
}

Complete examples

  • Transform
  • FhirPath
  • Validate

Done

  • datatype
  • resource
  • from json to resource
  • from xml to resource
  • from resource to json
  • from resource to xml
  • fhirpath
  • validator

Todo

  • fhir client
  • fhir server

License

CC0

Dependencies

~7–24MB
~238K SLoC