use crate::v1_2::common::change_control::original_version::OriginalVersion;
use crate::v1_2::common::generic::revision_history::RevisionHistory;
use crate::v1_2::data_types::quantity::date_time::dv_date_time::DvDateTime;
use crate::v1_2::ehr_extract::openehr_extract::x_versioned_composition::XVersionedComposition;
use crate::v1_2::ehr_extract::openehr_extract::x_versioned_ehr_access::XVersionedEhrAccess;
use crate::v1_2::ehr_extract::openehr_extract::x_versioned_ehr_status::XVersionedEhrStatus;
use crate::v1_2::ehr_extract::openehr_extract::x_versioned_folder::XVersionedFolder;
use crate::v1_2::ehr_extract::openehr_extract::x_versioned_party::XVersionedParty;
use openehr_base::v1_3::base_types::identification::hier_object_id::HierObjectId;
use openehr_base::v1_3::base_types::identification::object_ref::ObjectRef;
#[doc(alias = "X_VERSIONED_OBJECT")]
#[derive(Debug, Clone, PartialEq)]
pub struct XVersionedObjectData<T> {
pub uid: HierObjectId,
pub owner_id: ObjectRef,
pub time_created: DvDateTime,
pub total_version_count: i32,
pub extract_version_count: i32,
pub revision_history: Option<RevisionHistory>,
pub versions: Option<Vec<OriginalVersion<T>>>,
}
#[doc(alias = "X_VERSIONED_OBJECT")]
#[derive(Debug, Clone, PartialEq)]
pub enum XVersionedObject<T> {
XVersionedComposition(XVersionedComposition),
XVersionedEhrAccess(XVersionedEhrAccess),
XVersionedEhrStatus(XVersionedEhrStatus),
XVersionedFolder(XVersionedFolder),
XVersionedParty(XVersionedParty),
XVersionedObject(XVersionedObjectData<T>),
}