use fhir::r5::coded::Coded;
use fhir::r5::codes::AdministrativeGender;
use fhir::r5::resources::Patient;
use fhir::r5::types::{HumanName, Id, String as FhirString, Uri};
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(Coded::Known(AdministrativeGender::Male)),
name: vec![HumanName {
family: Some(FhirString("Chalmers".to_string())),
..Default::default()
}],
..Default::default()
};
report(&patient);
patient.implicit_rules = Some(Uri(" http://example.org/bad ".to_string()));
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);
}
}
}