use crate::r5::parse::all::*;
use crate::r5::parse::search_parameters::*;
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 min: Option<u32>,
pub max: Option<String>,
pub base: Option<Base>,
pub r#type: Option<Vec<ElementType>>,
pub constraint: Option<Vec<Constraint>>,
pub binding: Option<Binding>,
pub extension: Option<Vec<Extension>>,
pub comment: Option<String>,
pub requirements: Option<String>,
pub alias: Option<Vec<String>>,
pub fixed_code: Option<String>,
pub fixed_markdown: Option<String>,
pub fixed_uri: Option<String>,
pub fixed_value: Option<serde_json::Value>,
pub pattern_value: Option<serde_json::Value>,
pub example: Option<Vec<Example>>,
pub additional: Option<serde_json::Value>,
pub condition: Option<Vec<String>>,
pub is_modifier: Option<bool>,
pub is_summary: Option<bool>,
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::search_parameters::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());
}
}