#![allow(
dead_code,
non_snake_case,
non_camel_case_types,
clippy::all,
clippy::pedantic,
clippy::nursery,
reason = "mechanically generated model text: the XSD is emitted in full under its own spec-owned element/attribute spellings, so naming, style and dead-code lints do not apply — the hand-written runtime carries the lint bar"
)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UnknownFacetValue {
pub simple_type: &'static str,
pub value: String,
}
impl std::fmt::Display for UnknownFacetValue {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{:?} is not a declared xs:enumeration value of {}",
self.value, self.simple_type
)
}
}
impl std::error::Error for UnknownFacetValue {}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Operatorvaluetype {
Equal,
NotEqual,
LessThanOrEqual,
LessThan,
GreaterThanOrEqual,
GreaterThan,
Matches,
Not,
And,
Or,
Xor,
Implies,
ForAll,
Exists,
Plus,
Minus,
Multiply,
Divide,
Exponent,
}
impl Operatorvaluetype {
pub const fn as_wire(&self) -> &'static str {
match self {
Self::Equal => "2001",
Self::NotEqual => "2002",
Self::LessThanOrEqual => "2003",
Self::LessThan => "2004",
Self::GreaterThanOrEqual => "2005",
Self::GreaterThan => "2006",
Self::Matches => "2007",
Self::Not => "2010",
Self::And => "2011",
Self::Or => "2012",
Self::Xor => "2013",
Self::Implies => "2014",
Self::ForAll => "2015",
Self::Exists => "2016",
Self::Plus => "2020",
Self::Minus => "2021",
Self::Multiply => "2022",
Self::Divide => "2023",
Self::Exponent => "2024",
}
}
pub fn from_wire(text: &str) -> Result<Self, UnknownFacetValue> {
match text {
"2001" => Ok(Self::Equal),
"2002" => Ok(Self::NotEqual),
"2003" => Ok(Self::LessThanOrEqual),
"2004" => Ok(Self::LessThan),
"2005" => Ok(Self::GreaterThanOrEqual),
"2006" => Ok(Self::GreaterThan),
"2007" => Ok(Self::Matches),
"2010" => Ok(Self::Not),
"2011" => Ok(Self::And),
"2012" => Ok(Self::Or),
"2013" => Ok(Self::Xor),
"2014" => Ok(Self::Implies),
"2015" => Ok(Self::ForAll),
"2016" => Ok(Self::Exists),
"2020" => Ok(Self::Plus),
"2021" => Ok(Self::Minus),
"2022" => Ok(Self::Multiply),
"2023" => Ok(Self::Divide),
"2024" => Ok(Self::Exponent),
_ => Err(UnknownFacetValue {
simple_type: "OperatorValueType",
value: text.to_owned(),
}),
}
}
}
impl std::fmt::Display for Operatorvaluetype {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_wire())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ValidityKind {
Mandatory,
Optional,
Disallowed,
}
impl ValidityKind {
pub const fn as_wire(&self) -> &'static str {
match self {
Self::Mandatory => "1001",
Self::Optional => "1002",
Self::Disallowed => "1003",
}
}
pub fn from_wire(text: &str) -> Result<Self, UnknownFacetValue> {
match text {
"1001" => Ok(Self::Mandatory),
"1002" => Ok(Self::Optional),
"1003" => Ok(Self::Disallowed),
_ => Err(UnknownFacetValue {
simple_type: "VALIDITY_KIND",
value: text.to_owned(),
}),
}
}
}
impl std::fmt::Display for ValidityKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_wire())
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct Archetype {
pub archetype_id: ArchetypeHrid,
pub parent_archetype_id: Option<String>,
pub definition: CComplexObject,
pub rules: Vec<RuleStatement>,
pub terminology: ArchetypeTerminology,
pub is_specialised: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ArchetypeConstraint {
ArchetypeSlot(ArchetypeSlot),
CArchetypeRoot(CArchetypeRoot),
CBoolean(CBoolean),
CComplexObject(CComplexObject),
CComplexObjectProxy(CComplexObjectProxy),
CDate(CDate),
CDateTime(CDateTime),
CDefinedObject(CDefinedObject),
CDuration(CDuration),
CInteger(CInteger),
CPrimitiveObject(CPrimitiveObject),
CReal(CReal),
CString(CString),
CTemporal(CTemporal),
CTerminologyCode(CTerminologyCode),
CTime(CTime),
}
#[derive(Debug, Clone, PartialEq)]
pub struct ArchetypeHrid {
pub namespace: Option<String>,
pub rm_publisher: Option<String>,
pub rm_package: Option<String>,
pub rm_class: Option<String>,
pub release_version: Option<String>,
pub version_status: Option<String>,
pub build_count: Option<String>,
pub concept_id: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ArchetypeSlot {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub includes: Vec<Assertion>,
pub excludes: Vec<Assertion>,
pub is_closed: bool,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ArchetypeTerm {
pub id: String,
pub text: String,
pub description: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ArchetypeTerminology {
pub term_definitions: Vec<Codedefinitionset>,
pub term_bindings: Vec<Termbindingset>,
pub value_sets: Vec<ValueSet>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Assertion {
pub r#type: Option<String>,
pub tag: Option<String>,
pub expression: Box<ExprItem>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct AssertionVariable {
pub name: Option<String>,
pub definition: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct AuthoredArchetype {
pub original_language: TerminologyCode,
pub is_controlled: Option<bool>,
pub description: Option<ResourceDescription>,
pub translations: Vec<TranslationDetails>,
pub uid: Option<String>,
pub annotations: Vec<openehr_base::v1_3::resource::resource_annotations::ResourceAnnotations>,
pub archetype_id: ArchetypeHrid,
pub parent_archetype_id: Option<String>,
pub definition: CComplexObject,
pub rules: Vec<RuleStatement>,
pub terminology: ArchetypeTerminology,
pub is_specialised: Option<bool>,
pub build_uid: Option<String>,
pub adl_version: Option<String>,
pub is_generated: Option<bool>,
pub other_metadata: Option<indexmap::IndexMap<String, String>>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum AuthoredResource {
AuthoredArchetype(AuthoredArchetype),
}
#[derive(Debug, Clone, PartialEq)]
pub struct Annotationlangset {
pub id: String,
pub items: Vec<Annotationpathset>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Annotationpathset {
pub id: String,
pub items: Option<indexmap::IndexMap<String, String>>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Cardinality {
pub is_ordered: bool,
pub is_unique: bool,
pub interval: Multiplicityinterval,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CArchetypeRoot {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub attributes: Vec<CAttribute>,
pub archetype_ref: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CAttribute {
pub rm_attribute_name: String,
pub existence: Multiplicityinterval,
pub differential_path: Option<String>,
pub is_multiple: bool,
pub cardinality: Cardinality,
pub children: Vec<CObject>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CBoolean {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub assumed_value: Option<bool>,
pub constraint: bool,
pub default_value: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CComplexObject {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub attributes: Vec<CAttribute>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CComplexObjectProxy {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub target_path: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CDate {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CDateTime {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub pattern_constraint: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CDefinedObject {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CDuration {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub pattern_constraint: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CInteger {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub assumed_value: Option<i32>,
pub constraint: Intervalofinteger,
pub default_value: Option<i32>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum CObject {
ArchetypeSlot(ArchetypeSlot),
CArchetypeRoot(CArchetypeRoot),
CBoolean(CBoolean),
CComplexObject(CComplexObject),
CComplexObjectProxy(CComplexObjectProxy),
CDate(CDate),
CDateTime(CDateTime),
CDefinedObject(CDefinedObject),
CDuration(CDuration),
CInteger(CInteger),
CPrimitiveObject(CPrimitiveObject),
CReal(CReal),
CString(CString),
CTemporal(CTemporal),
CTerminologyCode(CTerminologyCode),
CTime(CTime),
}
#[derive(Debug, Clone, PartialEq)]
pub struct CPrimitiveObject {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CReal {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub assumed_value: Option<f64>,
pub constraint: Intervalofreal,
pub default_value: Option<f64>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CString {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub assumed_value: Option<String>,
pub constraint: String,
pub default_value: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CTemporal {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CTerminologyCode {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub assumed_value: Option<TerminologyCode>,
pub constraint: String,
pub default_value: Option<TerminologyCode>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct CTime {
pub is_deprecated: Option<String>,
pub node_id: Option<String>,
pub rm_type_name: Option<String>,
pub sibling_order: Vec<SiblingOrder>,
pub occurrences: Option<Multiplicityinterval>,
pub is_frozen: Option<bool>,
pub pattern_constraint: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Codedefinitionset {
pub id: String,
pub items: Vec<ArchetypeTerm>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ExprBinaryOperator {
pub r#type: Option<String>,
pub precedence_overridden: Option<String>,
pub operator: OperatorKind,
pub left_operand: Box<ExprItem>,
pub right_operand: Box<ExprItem>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ExprItem {
ExprBinaryOperator(ExprBinaryOperator),
ExprLeaf(ExprLeaf),
ExprUnaryOperator(ExprUnaryOperator),
}
#[derive(Debug, Clone, PartialEq)]
pub struct ExprLeaf {
pub r#type: Option<String>,
pub reference_type: Option<String>,
pub item: crate::xml::runtime::XmlAny,
}
#[derive(Debug, Clone, PartialEq)]
pub enum ExprOperator {
ExprBinaryOperator(ExprBinaryOperator),
ExprUnaryOperator(ExprUnaryOperator),
}
#[derive(Debug, Clone, PartialEq)]
pub struct ExprUnaryOperator {
pub r#type: Option<String>,
pub precedence_overridden: Option<String>,
pub operator: OperatorKind,
pub operand: Box<ExprItem>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervalofdate {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<String>,
pub upper: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervalofdatetime {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<String>,
pub upper: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervalofduration {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<String>,
pub upper: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervalofinteger {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<i32>,
pub upper: Option<i32>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervalofreal {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<f64>,
pub upper: Option<f64>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Intervaloftime {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<String>,
pub upper: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Multiplicityinterval {
pub lower_included: Option<String>,
pub upper_included: Option<String>,
pub lower_unbounded: Option<String>,
pub upper_unbounded: Option<String>,
pub lower: Option<i32>,
pub upper: Option<i32>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct OperatorKind {
pub value: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ResourceDescription {
pub lifecycle_state: String,
pub custodian_namespace: Option<String>,
pub custodian_organisation: Option<String>,
pub original_author: indexmap::IndexMap<String, String>,
pub original_namespace: Option<String>,
pub original_publisher: Option<String>,
pub other_contributors: Vec<String>,
pub copyright: Option<String>,
pub licence: Option<String>,
pub ip_acknowledgements: Option<indexmap::IndexMap<String, String>>,
pub resource_package_uri: Option<String>,
pub references: Option<indexmap::IndexMap<String, String>>,
pub other_details: Option<indexmap::IndexMap<String, String>>,
pub details: Vec<ResourceDescriptionItem>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ResourceDescriptionItem {
pub id: Option<String>,
pub language: String,
pub purpose: String,
pub use_: Option<String>,
pub misuse: Option<String>,
pub keywords: Vec<String>,
pub original_resource_uri: Option<indexmap::IndexMap<String, String>>,
pub other_details: Option<indexmap::IndexMap<String, String>>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum RuleElement {
Assertion(Assertion),
ExprBinaryOperator(ExprBinaryOperator),
ExprLeaf(ExprLeaf),
ExprUnaryOperator(ExprUnaryOperator),
RuleStatement(RuleStatement),
}
#[derive(Debug, Clone, PartialEq)]
pub struct RuleStatement {
pub r#type: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct SiblingOrder {
pub is_before: Option<String>,
pub sibling_node_id: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct TerminologyCode {
pub terminology_id: String,
pub code_string: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct TranslationDetails {
pub id: String,
pub language: String,
pub author: indexmap::IndexMap<String, String>,
pub accreditation: Option<String>,
pub other_details: Option<indexmap::IndexMap<String, String>>,
pub version_last_translated: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Termbindingset {
pub id: String,
pub items: Option<indexmap::IndexMap<String, String>>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct ValueSet {
pub id: String,
pub members: Vec<String>,
}