redispatch_xml/documents/
network_constraint.rs1use serde::{Deserialize, Serialize};
3
4use crate::documents::activation::{ControlZoneRef, ResourceObjectRef};
5use crate::documents::planned_resource_schedule::GridElementCodingScheme;
6use crate::types::{
7 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
8 MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
9};
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
15pub enum NcdDocType {
16 #[serde(rename = "B15")]
18 NetworkConstraint,
19}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
23pub enum NcdProcessType {
24 #[serde(rename = "A14")]
26 Forecast,
27}
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
31pub enum NcdBusinessType {
32 #[serde(rename = "A77")]
34 ProductionDispatchable,
35 #[serde(rename = "B59")]
37 NetworkElement,
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
42pub enum NcdStatus {
43 #[serde(rename = "A07")]
45 Activated,
46 #[serde(rename = "A36")]
48 Planned,
49 #[serde(rename = "Z06")]
51 Demand,
52}
53
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56pub struct NcdDocStatus {
57 #[serde(rename = "@v")]
59 pub v: String,
60}
61
62#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
66pub struct NetworkConstraintTimeSeries {
67 #[serde(rename = "TimeSeriesIdentification")]
69 pub time_series_identification: AttrV<DocumentId>,
70 #[serde(
75 rename = "OriginalTimeSeriesIdentification",
76 default,
77 skip_serializing_if = "Option::is_none"
78 )]
79 pub original_time_series_identification: Option<AttrV<DocumentId>>,
80 #[serde(
88 rename = "RequestingGridOperator",
89 default,
90 skip_serializing_if = "Option::is_none"
91 )]
92 pub requesting_grid_operator: Option<AttrVWithScheme<MarketParticipantId>>,
93 #[serde(rename = "BusinessType")]
95 pub business_type: AttrV<NcdBusinessType>,
96 #[serde(rename = "Direction")]
98 pub direction: AttrV<Direction>,
99 #[serde(rename = "ConnectingArea")]
101 pub connecting_area: ControlZoneRef,
102 #[serde(rename = "ResourceObject")]
104 pub resource_object: ResourceObjectRef,
105 #[serde(rename = "GridElement")]
107 pub grid_element: AttrVWithScheme<String, GridElementCodingScheme>,
108 #[serde(rename = "MeasurementUnit")]
110 pub measurement_unit: AttrV<MeasureUnit>,
111 #[serde(
114 rename = "ResourceProvider",
115 default,
116 skip_serializing_if = "Option::is_none"
117 )]
118 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
119 #[serde(rename = "Status", default, skip_serializing_if = "Option::is_none")]
121 pub status: Option<AttrV<NcdStatus>>,
122 #[serde(rename = "Period")]
124 pub period: Period,
125}
126
127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
135#[serde(rename = "NetworkConstraintDocument")]
136pub struct NetworkConstraintDocument {
137 #[serde(
139 rename = "OriginalSenderIdentification",
140 default,
141 skip_serializing_if = "Option::is_none"
142 )]
143 pub original_sender_identification: Option<AttrVWithScheme<MarketParticipantId>>,
144 #[serde(
146 rename = "OriginalDocumentIdentification",
147 default,
148 skip_serializing_if = "Option::is_none"
149 )]
150 pub original_document_identification: Option<AttrV<DocumentId>>,
151 #[serde(
153 rename = "OriginalDocumentVersion",
154 default,
155 skip_serializing_if = "Option::is_none"
156 )]
157 pub original_document_version: Option<AttrV<DocumentVersion>>,
158 #[serde(
160 rename = "OriginalDocumentDateTime",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub original_document_date_time: Option<AttrV<UtcDateTime>>,
165 #[serde(rename = "DocumentIdentification")]
167 pub document_identification: AttrV<DocumentId>,
168 #[serde(rename = "DocumentVersion")]
170 pub document_version: AttrV<DocumentVersion>,
171 #[serde(rename = "DocumentType")]
173 pub document_type: AttrV<NcdDocType>,
174 #[serde(rename = "ProcessType")]
176 pub process_type: AttrV<NcdProcessType>,
177 #[serde(rename = "SenderIdentification")]
179 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
180 #[serde(rename = "SenderRole")]
182 pub sender_role: AttrV<MarketRoleType>,
183 #[serde(rename = "ReceiverIdentification")]
185 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
186 #[serde(rename = "ReceiverRole")]
188 pub receiver_role: AttrV<MarketRoleType>,
189 #[serde(rename = "DocumentDateTime")]
191 pub document_date_time: AttrV<UtcDateTime>,
192 #[serde(rename = "TimePeriodCovered")]
194 pub time_period_covered: AttrV<TimeInterval>,
195 #[serde(rename = "DocStatus", default, skip_serializing_if = "Option::is_none")]
197 pub doc_status: Option<NcdDocStatus>,
198 #[serde(
200 rename = "NetworkConstraintTimeSeries",
201 default,
202 skip_serializing_if = "Vec::is_empty"
203 )]
204 pub time_series: Vec<NetworkConstraintTimeSeries>,
205}