use fhir::r5::coded::Coded;
use fhir::r5::resources::Patient;
use fhir::r5::resources::operation_outcome::OperationOutcome;
use fhir::r5::types::Uri;
use fhir::r5::validate::Validate;
fn main() {
let mut patient = Patient {
gender: Some(Coded::Unknown("robot".to_string())),
..Default::default()
};
patient.implicit_rules = Some(Uri(" http://example.org/bad ".to_string()));
let issues = patient.validate();
println!("{} validation issue(s)", issues.len());
let outcome: OperationOutcome = issues.into();
let json = serde_json::to_string_pretty(&outcome).expect("serialize OperationOutcome");
println!("{json}");
for issue in &outcome.issue {
assert_eq!(
issue.severity,
Coded::Known(fhir::r5::codes::IssueSeverity::Error)
);
let Some(path) = issue.expression.first_value().map(|p| &p.0) else {
continue;
};
let msg = issue.diagnostics.as_ref().unwrap();
println!("- {path}: {}", msg.0);
}
}