use fhir::prelude::*;
use fhir::r5::choice::Primitive;
use fhir::r5::types::extension::ExtensionValue;
const EYE_COLOR: &str = "http://example.org/fhir/StructureDefinition/eye-color";
fn main() {
let mut patient = Patient::default();
patient.set_extension(Extension {
url: FhirString(EYE_COLOR.to_string()),
value: Some(ExtensionValue::String(Primitive::new(FhirString(
"blue".to_string(),
)))),
..Default::default()
});
if let Some(ext) = patient.extension(EYE_COLOR)
&& let Some(ExtensionValue::String(p)) = &ext.value
{
println!("eye color: {}", p.value.0);
}
patient.set_extension(Extension {
url: FhirString(EYE_COLOR.to_string()),
value: Some(ExtensionValue::String(Primitive::new(FhirString(
"green".to_string(),
)))),
..Default::default()
});
println!("extensions with that url: {}", patient.extensions(EYE_COLOR).len());
let json = serde_json::to_string_pretty(&patient).expect("serialize");
println!("{json}");
}