use crate::r5::parse::all::*;
use crate::r5::parse::data_elements::*;
use ::serde::{Deserialize, Serialize};
#[serde_with::skip_serializing_none]
#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[serde(deny_unknown_fields)]
pub struct Element {
pub id: String,
pub path: String,
pub representation: Option<Vec<String>>,
pub short: Option<String>,
pub definition: Option<String>,
pub alias: Option<Vec<String>>,
pub comment: Option<String>,
pub requirements: Option<String>,
pub order_meaning: Option<String>,
pub meaning_when_missing: Option<String>,
pub min: Option<u32>,
pub max: Option<String>,
pub base: Option<Base>,
pub r#type: Option<Vec<ElementType>>,
pub max_length: Option<i32>,
pub min_value_integer: Option<i64>,
pub max_value_integer: Option<i64>,
pub min_value_integer_64: Option<String>,
pub max_value_integer_64: Option<String>,
pub constraint: Option<Vec<Constraint>>,
pub extension: Option<Vec<Extension>>,
pub slicing: Option<Slicing>,
pub example: Option<Vec<Example>>,
pub condition: Option<Vec<String>>,
pub is_modifier: Option<bool>,
pub is_modifier_reason: Option<String>,
pub is_summary: Option<bool>,
pub binding: Option<Binding>,
pub mapping: Option<::serde_json::Value>,
}
#[cfg(test)]
mod tests {
use super::*;
type T = Element;
#[test]
fn test_serde_json_from_reader() {
let path = crate::r5::parse::data_elements::DIR
.join("element")
.join("element.json");
let file = std::fs::File::open(path).expect("open");
let reader = std::io::BufReader::new(file);
let actual: T = ::serde_json::from_reader(reader).unwrap();
assert_ne!(actual, T::default());
}
}