use fhir::r5::resources::Patient;
use fhir::r5::types::{Code, HumanName, Id, String as FhirString};
use fhir::r5::validate::Validate;
fn main() {
println!("`patient-1` valid id? {}", Id("patient-1".to_string()).is_valid());
println!("`has spaces` valid id? {}", Id("has spaces".to_string()).is_valid());
let mut patient = Patient {
id: Some(FhirString("pat-1".to_string())),
gender: Some(Code("male".to_string())),
name: Some(vec![HumanName {
family: Some(FhirString("Chalmers".to_string())),
..Default::default()
}]),
..Default::default()
};
report(&patient);
patient.gender = Some(Code(String::new()));
report(&patient);
}
fn report(patient: &Patient) {
let issues = patient.validate();
if issues.is_empty() {
println!("valid ✓");
} else {
println!("{} issue(s):", issues.len());
for issue in issues {
println!(" - {}: {}", issue.path, issue.message);
}
}
}