1#![allow(dead_code)]
7
8use serde::Deserialize;
9
10#[derive(Debug, Deserialize, Clone)]
12#[allow(dead_code)]
13pub struct ValueSet {
14 #[serde(rename = "resourceType")]
15 pub resource_type: String,
16 pub id: Option<String>,
17 pub url: Option<String>,
18 pub version: Option<String>,
19 pub name: Option<String>,
20 pub title: Option<String>,
21 pub status: Option<String>,
22 pub description: Option<String>,
23 pub expansion: Option<ValueSetExpansion>,
24 pub compose: Option<ValueSetCompose>,
25}
26
27#[derive(Debug, Deserialize, Clone)]
29pub struct ValueSetExpansion {
30 pub timestamp: Option<String>,
31 pub total: Option<u32>,
32 pub contains: Option<Vec<ValueSetExpansionContains>>,
33}
34
35#[derive(Debug, Deserialize, Clone)]
37pub struct ValueSetExpansionContains {
38 pub system: Option<String>,
39 pub code: String,
40 pub display: Option<String>,
41}
42
43#[derive(Debug, Deserialize, Clone)]
45pub struct ValueSetCompose {
46 pub include: Option<Vec<ValueSetComposeInclude>>,
47 pub exclude: Option<Vec<ValueSetComposeInclude>>,
48}
49
50#[derive(Debug, Deserialize, Clone)]
52pub struct ValueSetComposeInclude {
53 pub system: Option<String>,
54 pub version: Option<String>,
55 pub concept: Option<Vec<ValueSetComposeConcept>>,
56 pub filter: Option<Vec<ValueSetComposeFilter>>,
57}
58
59#[derive(Debug, Deserialize, Clone)]
61pub struct ValueSetComposeConcept {
62 pub code: String,
63 pub display: Option<String>,
64}
65
66#[derive(Debug, Deserialize, Clone)]
68pub struct ValueSetComposeFilter {
69 pub property: String,
70 pub op: String,
71 pub value: String,
72}
73
74#[derive(Debug, Deserialize, Clone)]
76pub struct CodeSystem {
77 #[serde(rename = "resourceType")]
78 pub resource_type: String,
79 pub id: Option<String>,
80 pub url: Option<String>,
81 pub version: Option<String>,
82 pub name: Option<String>,
83 pub title: Option<String>,
84 pub status: Option<String>,
85 pub description: Option<String>,
86 pub content: Option<String>,
87 pub concept: Option<Vec<CodeSystemConcept>>,
88}
89
90#[derive(Debug, Deserialize, Clone)]
92pub struct CodeSystemConcept {
93 pub code: String,
94 pub display: Option<String>,
95 pub definition: Option<String>,
96}
97
98#[derive(Debug, Deserialize, Clone)]
100pub struct ElementDefinition {
101 pub id: Option<String>,
102 pub path: String,
103 pub short: Option<String>,
104 pub definition: Option<String>,
105 pub min: Option<u32>,
106 pub max: Option<String>,
107 #[serde(rename = "type")]
108 pub element_type: Option<Vec<ElementType>>,
109 pub fixed: Option<serde_json::Value>,
110 pub pattern: Option<serde_json::Value>,
111 pub binding: Option<ElementBinding>,
112 pub constraint: Option<Vec<ElementConstraint>>,
113}
114
115#[derive(Debug, Deserialize, Clone)]
117pub struct ElementConstraint {
118 pub key: String,
119 pub severity: String,
120 pub human: String,
121 pub expression: Option<String>,
122 pub xpath: Option<String>,
123 pub source: Option<String>,
124}
125
126#[derive(Debug, Deserialize, Clone)]
128pub struct ElementBinding {
129 pub strength: String,
130 pub description: Option<String>,
131 #[serde(rename = "valueSet")]
132 pub value_set: Option<String>,
133}
134
135#[derive(Debug, Deserialize, Clone)]
137pub struct ElementType {
138 pub code: Option<String>,
139 #[serde(rename = "targetProfile")]
140 pub target_profile: Option<Vec<String>>,
141}
142
143#[derive(Debug, Clone, Deserialize)]
145pub struct StructureDefinition {
146 #[serde(rename = "resourceType")]
147 pub resource_type: String,
148 pub id: String,
149 pub url: String,
150 pub version: Option<String>,
151 pub name: String,
152 pub title: Option<String>,
153 pub status: String,
154 pub description: Option<String>,
155 pub purpose: Option<String>,
156 pub kind: String,
157 #[serde(rename = "abstract")]
158 pub is_abstract: bool,
159 #[serde(rename = "type")]
160 pub base_type: String,
161 #[serde(rename = "baseDefinition")]
162 pub base_definition: Option<String>,
163 pub differential: Option<StructureDefinitionDifferential>,
164 pub snapshot: Option<StructureDefinitionSnapshot>,
165}
166
167#[derive(Debug, Clone, Deserialize)]
168pub struct StructureDefinitionDifferential {
169 pub element: Vec<ElementDefinition>,
170}
171
172#[derive(Debug, Clone, Deserialize)]
173pub struct StructureDefinitionSnapshot {
174 pub element: Vec<ElementDefinition>,
175}