redispatch_xml/documents/
planned_resource_schedule.rs1use serde::{Deserialize, Serialize};
2
3use crate::documents::activation::{ControlZoneRef, EicCodingScheme};
4use crate::types::{
5 AttrV, AttrVWithScheme, Direction, DocumentId, DocumentVersion, MarketParticipantId,
6 MarketRoleType, MeasureUnit, Period, TimeInterval, UtcDateTime,
7};
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
13pub enum PrsDocType {
14 #[serde(rename = "A14")]
16 DayAheadPlan,
17 #[serde(rename = "Z08")]
19 IntradayPlan,
20 #[serde(rename = "Z09")]
22 StammdatenPlan,
23 #[serde(rename = "Z11")]
25 AggregatePlan,
26 #[serde(rename = "Z12")]
28 CorrectedPlan,
29}
30
31#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
33pub enum PrsProcessType {
34 #[serde(rename = "A14")]
36 Forecast,
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
41pub enum PrsBusinessType {
42 #[serde(rename = "A01")]
43 Production,
44 #[serde(rename = "A04")]
45 Consumption,
46 #[serde(rename = "A10")]
47 GenerationForecast,
48 #[serde(rename = "A11")]
49 ConsumptionForecast,
50 #[serde(rename = "A12")]
51 GenerationSchedule,
52 #[serde(rename = "A46")]
53 SystemOperatorRedispatching,
54 #[serde(rename = "A60")]
55 TransmissionCapacity,
56 #[serde(rename = "A61")]
57 ExchangeSchedule,
58 #[serde(rename = "A77")]
59 ProductionDispatchable,
60 #[serde(rename = "A79")]
61 ConsumptionDispatchable,
62 #[serde(rename = "A85")]
63 InternalRedispatch,
64 #[serde(rename = "A93")]
65 ControllableGeneration,
66 #[serde(rename = "A94")]
67 ControllableConsumption,
68 #[serde(rename = "B59")]
69 NetworkElement,
70 #[serde(rename = "Z05")]
71 Flexibility,
72}
73
74#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
76pub enum PrsTimeSeriesStatus {
77 #[serde(rename = "A07")]
79 Activated,
80 #[serde(rename = "A36")]
82 Planned,
83 #[serde(rename = "Z06")]
85 Demand,
86}
87
88#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
90pub enum Product {
91 #[serde(rename = "8716867000016")]
93 ActivePower,
94}
95
96#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
98pub enum GridElementCodingScheme {
99 #[serde(rename = "A01")]
101 Eic,
102 #[serde(rename = "A02")]
104 NationalResource,
105 #[serde(rename = "Z01")]
107 Other,
108}
109
110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
115pub struct PlannedResourceTimeSeries {
116 #[serde(rename = "TimeSeriesIdentification")]
118 pub time_series_identification: AttrV<DocumentId>,
119 #[serde(rename = "BusinessType")]
121 pub business_type: AttrV<PrsBusinessType>,
122 #[serde(rename = "Direction", default, skip_serializing_if = "Option::is_none")]
124 pub direction: Option<AttrV<Direction>>,
125 #[serde(
127 rename = "ConnectingArea",
128 default,
129 skip_serializing_if = "Option::is_none"
130 )]
131 pub connecting_area: Option<ControlZoneRef>,
132 #[serde(
134 rename = "ResourceObject",
135 default,
136 skip_serializing_if = "Option::is_none"
137 )]
138 pub resource_object: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
139 #[serde(rename = "Product")]
141 pub product: AttrV<Product>,
142 #[serde(
144 rename = "AcquiringArea",
145 default,
146 skip_serializing_if = "Option::is_none"
147 )]
148 pub acquiring_area: Option<AttrVWithScheme<String, EicCodingScheme>>,
149 #[serde(
151 rename = "GridElement",
152 default,
153 skip_serializing_if = "Option::is_none"
154 )]
155 pub grid_element: Option<AttrVWithScheme<String, GridElementCodingScheme>>,
156 #[serde(rename = "MeasureUnit")]
158 pub measure_unit: AttrV<MeasureUnit>,
159 #[serde(rename = "Status", default, skip_serializing_if = "Option::is_none")]
161 pub status: Option<AttrV<PrsTimeSeriesStatus>>,
162 #[serde(
164 rename = "ResourceProvider",
165 default,
166 skip_serializing_if = "Option::is_none"
167 )]
168 pub resource_provider: Option<AttrVWithScheme<MarketParticipantId>>,
169 #[serde(rename = "Period")]
171 pub period: Period,
172}
173
174#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
182#[serde(rename = "PlannedResourceScheduleDocument")]
183pub struct PlannedResourceScheduleDocument {
184 #[serde(rename = "DocumentIdentification")]
186 pub document_identification: AttrV<DocumentId>,
187 #[serde(rename = "DocumentVersion")]
189 pub document_version: AttrV<DocumentVersion>,
190 #[serde(rename = "DocumentType")]
192 pub document_type: AttrV<PrsDocType>,
193 #[serde(rename = "ProcessType")]
195 pub process_type: AttrV<PrsProcessType>,
196 #[serde(rename = "SenderIdentification")]
198 pub sender_identification: AttrVWithScheme<MarketParticipantId>,
199 #[serde(rename = "SenderRole")]
201 pub sender_role: AttrV<MarketRoleType>,
202 #[serde(rename = "ReceiverIdentification")]
204 pub receiver_identification: AttrVWithScheme<MarketParticipantId>,
205 #[serde(rename = "ReceiverRole")]
207 pub receiver_role: AttrV<MarketRoleType>,
208 #[serde(rename = "DocumentDateTime")]
210 pub document_date_time: AttrV<UtcDateTime>,
211 #[serde(rename = "TimePeriodCovered")]
213 pub time_period_covered: AttrV<TimeInterval>,
214 #[serde(rename = "PlannedResourceTimeSeries", default)]
216 pub time_series: Vec<PlannedResourceTimeSeries>,
217}