redispatch_xml/documents/
planned_resource_schedule.rs1use serde::{Deserialize, Serialize};
3
4use crate::documents::activation::{ControlZoneRef, EicCodingScheme};
5use crate::types::{
6 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
7 MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
8};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
14pub enum PrsDocType {
15 #[serde(rename = "A14")]
17 DayAheadPlan,
18 #[serde(rename = "Z08")]
20 IntradayPlan,
21 #[serde(rename = "Z09")]
23 StammdatenPlan,
24 #[serde(rename = "Z11")]
26 AggregatePlan,
27 #[serde(rename = "Z12")]
29 CorrectedPlan,
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
34pub enum PrsProcessType {
35 #[serde(rename = "A14")]
37 Forecast,
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
42pub enum PrsBusinessType {
43 #[serde(rename = "A01")]
45 Production,
46 #[serde(rename = "A04")]
48 Consumption,
49 #[serde(rename = "A10")]
51 GenerationForecast,
52 #[serde(rename = "A11")]
54 ConsumptionForecast,
55 #[serde(rename = "A12")]
57 GenerationSchedule,
58 #[serde(rename = "A46")]
60 SystemOperatorRedispatching,
61 #[serde(rename = "A60")]
63 TransmissionCapacity,
64 #[serde(rename = "A61")]
66 ExchangeSchedule,
67 #[serde(rename = "A77")]
69 ProductionDispatchable,
70 #[serde(rename = "A79")]
72 ConsumptionDispatchable,
73 #[serde(rename = "A85")]
75 InternalRedispatch,
76 #[serde(rename = "A93")]
78 ControllableGeneration,
79 #[serde(rename = "A94")]
81 ControllableConsumption,
82 #[serde(rename = "B59")]
84 NetworkElement,
85 #[serde(rename = "Z05")]
87 Flexibility,
88}
89
90#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
92pub enum PrsTimeSeriesStatus {
93 #[serde(rename = "A07")]
95 Activated,
96 #[serde(rename = "A36")]
98 Planned,
99 #[serde(rename = "Z06")]
101 Demand,
102}
103
104#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
106pub enum Product {
107 #[serde(rename = "8716867000016")]
109 ActivePower,
110}
111
112#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
114pub enum GridElementCodingScheme {
115 #[serde(rename = "A01")]
117 Eic,
118 #[serde(rename = "A02")]
120 NationalResource,
121 #[serde(rename = "Z01")]
123 Other,
124}
125
126#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
131pub struct PlannedResourceTimeSeries {
132 #[serde(rename = "TimeSeriesIdentification")]
134 pub time_series_identification: AttrV<DocumentId>,
135 #[serde(rename = "BusinessType")]
137 pub business_type: AttrV<PrsBusinessType>,
138 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
140 pub direction: Option<AttrV<Direction>>,
141 #[serde(
143 rename = "ConnectingArea",
144 default,
145 skip_serializing_if = "Option::is_none"
146 )]
147 pub connecting_area: Option<ControlZoneRef>,
148 #[serde(
150 rename = "ResourceObject",
151 default,
152 skip_serializing_if = "Option::is_none"
153 )]
154 pub resource_object: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
155 #[serde(rename = "Product")]
157 pub product: AttrV<Product>,
158 #[serde(
160 rename = "AcquiringArea",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub acquiring_area: Option<AttrVWithScheme<String, EicCodingScheme>>,
165 #[serde(
167 rename = "GridElement",
168 default,
169 skip_serializing_if = "Option::is_none"
170 )]
171 pub grid_element: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
172 #[serde(rename = "MeasureUnit")]
174 pub measure_unit: AttrV<MeasureUnit>,
175 #[serde(rename = "Status", default, skip_serializing_if = "Option::is_none")]
177 pub status: Option<AttrV<PrsTimeSeriesStatus>>,
178 #[serde(
180 rename = "ResourceProvider",
181 default,
182 skip_serializing_if = "Option::is_none"
183 )]
184 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
185 #[serde(rename = "Period")]
187 pub period: Period,
188}
189
190#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
198#[serde(rename = "PlannedResourceScheduleDocument")]
199pub struct PlannedResourceScheduleDocument {
200 #[serde(rename = "DocumentIdentification")]
202 pub document_identification: AttrV<DocumentId>,
203 #[serde(rename = "DocumentVersion")]
205 pub document_version: AttrV<DocumentVersion>,
206 #[serde(rename = "DocumentType")]
208 pub document_type: AttrV<PrsDocType>,
209 #[serde(rename = "ProcessType")]
211 pub process_type: AttrV<PrsProcessType>,
212 #[serde(rename = "SenderIdentification")]
214 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
215 #[serde(rename = "SenderRole")]
217 pub sender_role: AttrV<MarketRoleType>,
218 #[serde(rename = "ReceiverIdentification")]
220 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
221 #[serde(rename = "ReceiverRole")]
223 pub receiver_role: AttrV<MarketRoleType>,
224 #[serde(rename = "DocumentDateTime")]
226 pub document_date_time: AttrV<UtcDateTime>,
227 #[serde(rename = "TimePeriodCovered")]
229 pub time_period_covered: AttrV<TimeInterval>,
230 #[serde(rename = "PlannedResourceTimeSeries", default)]
232 pub time_series: Vec<PlannedResourceTimeSeries>,
233}