rh-foundation 0.1.0-beta.1

Foundation crate providing common utilities, error handling, and shared functionality
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StructureDefinition {
    pub url: String,
    #[serde(default)]
    pub name: String,
    #[serde(rename = "type")]
    pub type_: String,
    pub base_definition: Option<String>,
    pub differential: Option<Differential>,
    pub snapshot: Option<Snapshot>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Differential {
    pub element: Vec<ElementDefinition>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Snapshot {
    pub element: Vec<ElementDefinition>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementDefinition {
    pub path: String,
    pub id: Option<String>,
    pub min: Option<u32>,
    pub max: Option<String>,
    #[serde(rename = "type")]
    pub type_: Option<Vec<ElementType>>,
    pub binding: Option<ElementBinding>,
    pub constraint: Option<Vec<ElementConstraint>>,
    pub definition: Option<String>,
    pub short: Option<String>,
    pub comment: Option<String>,
    pub requirements: Option<String>,
    #[serde(rename = "mustSupport")]
    pub must_support: Option<bool>,
    #[serde(rename = "isSummary")]
    pub is_summary: Option<bool>,
    #[serde(rename = "isModifier")]
    pub is_modifier: Option<bool>,
    #[serde(rename = "isModifierReason")]
    pub is_modifier_reason: Option<String>,
    pub slicing: Option<ElementSlicing>,
    #[serde(rename = "sliceName")]
    pub slice_name: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementSlicing {
    pub discriminator: Option<Vec<ElementDiscriminator>>,
    pub rules: Option<String>,
    pub ordered: Option<bool>,
    pub description: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementDiscriminator {
    #[serde(rename = "type")]
    pub type_: String,
    pub path: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementType {
    pub code: String,
    pub profile: Option<Vec<String>>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementBinding {
    pub strength: String,
    #[serde(rename = "valueSet")]
    pub value_set: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ElementConstraint {
    pub key: String,
    pub severity: String,
    pub human: String,
    pub expression: Option<String>,
}