Skip to main content

x12_types/v005010/segment/
i.rs

1use crate::v005010::element;
2use serde::{Deserialize, Serialize};
3use validator::Validate;
4use x12_types_macros::{DisplaySegment, ParseSegment};
5
6/// IMA - Interchange Move Authority
7///
8/// To specify the interchange move authority for a rail shipment
9///
10/// REF | ID | NAME | REQ | TYPE | MIN/MAX
11/// ----|----|-------|----|------|-------
12/// 01 | 748 | Movement Authority Code | M | ID | 1/2
13/// 02 | 140 | Standard Carrier Alpha Code | O | ID | 2/4
14/// 03 | 257 | Tariff Application Code | O | ID | 1/1
15/// 04 | 257 | Tariff Application Code | O | ID | 1/1
16#[derive(
17    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
18)]
19pub struct IMA {
20    #[serde(rename = "01")]
21    pub _01: crate::v005010::element::E748,
22    #[serde(rename = "02")]
23    pub _02: Option<String>,
24    #[serde(rename = "03")]
25    pub _03: Option<crate::v005010::element::E257>,
26    #[serde(rename = "04")]
27    pub _04: Option<crate::v005010::element::E257>,
28}
29
30/// IND - Individual Demographic Characteristics
31///
32/// To provide demographic and language information for an individual
33///
34/// REF | ID | NAME | REQ | TYPE | MIN/MAX
35/// ----|----|-------|----|------|-------
36/// 01 | 26 | Country Code | O | ID | 2/3
37/// 02 | 156 | State or Province Code | O | ID | 2/2
38/// 03 | 1096 | County Designator | O | ID | 5/5
39/// 04 | 19 | City Name | O | AN | 2/30
40/// 05 | 819 | Language Code | O | ID | 2/3
41/// 06 | 1476 | Language Proficiency Indicator | O | ID | 1/1
42/// 07 | 819 | Language Code | O | ID | 2/3
43/// 08 | 819 | Language Code | O | ID | 2/3
44/// 09 | 66 | Identification Code Qualifier | X | ID | 1/2
45/// 10 | 67 | Identification Code | X | AN | 2/80
46/// 11 | 66 | Identification Code Qualifier | X | ID | 1/2
47/// 12 | 67 | Identification Code | X | AN | 2/80
48#[derive(
49    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
50)]
51pub struct IND {
52    #[serde(rename = "01")]
53    pub _01: Option<String>,
54    #[serde(rename = "02")]
55    pub _02: Option<String>,
56    #[serde(rename = "03")]
57    pub _03: Option<String>,
58    #[serde(rename = "04")]
59    pub _04: Option<String>,
60    #[serde(rename = "05")]
61    pub _05: Option<String>,
62    #[serde(rename = "06")]
63    pub _06: Option<crate::v005010::element::E1476>,
64    #[serde(rename = "07")]
65    pub _07: Option<String>,
66    #[serde(rename = "08")]
67    pub _08: Option<String>,
68    #[serde(rename = "09")]
69    pub _09: Option<String>,
70    #[serde(rename = "10")]
71    pub _10: Option<String>,
72    #[serde(rename = "11")]
73    pub _11: Option<String>,
74    #[serde(rename = "12")]
75    pub _12: Option<String>,
76}
77
78/// ICM - Individual Income
79#[derive(
80    Serialize,
81    Deserialize,
82    Clone,
83    Default,
84    Debug,
85    Validate,
86    PartialEq,
87    Eq,
88    DisplaySegment,
89    ParseSegment,
90)]
91pub struct ICM {
92    #[serde(rename = "01")]
93    pub _01: String,
94    #[serde(rename = "02")]
95    pub _02: String,
96    #[serde(rename = "03")]
97    pub _03: Option<String>,
98    #[serde(rename = "04")]
99    pub _04: Option<String>,
100    #[serde(rename = "05")]
101    pub _05: Option<String>,
102    #[serde(rename = "06")]
103    pub _06: Option<String>,
104}
105
106/// IDC - Health Coverage
107#[derive(
108    Serialize,
109    Deserialize,
110    Clone,
111    Default,
112    Debug,
113    Validate,
114    PartialEq,
115    Eq,
116    DisplaySegment,
117    ParseSegment,
118)]
119pub struct IDC {
120    #[serde(rename = "01")]
121    pub _01: String,
122    #[serde(rename = "02")]
123    pub _02: String,
124    #[serde(rename = "03")]
125    pub _03: Option<String>,
126    #[serde(rename = "04")]
127    pub _04: Option<String>,
128}
129
130/// IEA - Interchange Control Trailer
131///
132/// To define the end of an interchange of zero or more functional groups and interchange-related control segments
133///
134/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
135/// ----|----|-------|--------|----|------|-------
136/// 01 | I16 | Number of Included Functional Groups | 1 | M | N0 | 1/5
137/// 02 | I12 | Interchange Control Number | 1 | M | N0 | 9/9
138#[derive(
139    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
140)]
141pub struct IEA {
142    /// I16 - Number of Included Functional Groups
143    ///
144    /// A count of the number of functional groups included in an interchange
145    /// - TYPE=N0
146    /// - MIN=1
147    /// - MAX=5
148    #[serde(rename = "01")]
149    pub _01: element::I16,
150    /// I12 - Interchange Control Number
151    ///
152    /// A control number assigned by the interchange sender
153    /// - TYPE=N0
154    /// - MIN=9
155    /// - MAX=9
156    #[serde(rename = "02")]
157    pub _02: element::I12,
158}
159
160/// IMM - Immunization Status
161#[derive(
162    Serialize,
163    Deserialize,
164    Clone,
165    Default,
166    Debug,
167    Validate,
168    PartialEq,
169    Eq,
170    DisplaySegment,
171    ParseSegment,
172)]
173pub struct IMM {
174    #[serde(rename = "01")]
175    pub _01: String,
176    #[serde(rename = "02")]
177    pub _02: Option<String>,
178    #[serde(rename = "03")]
179    pub _03: Option<String>,
180    #[serde(rename = "04")]
181    pub _04: Option<String>,
182    #[serde(rename = "05")]
183    pub _05: Option<String>,
184    #[serde(rename = "06")]
185    pub _06: Option<String>,
186}
187
188/// IMP - Impairment Detail
189///
190/// To specify the impaired part of the body and the degree of impairment
191///
192/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
193/// ----|----|-------|--------|----|------|-------
194/// 01 | 1460 | Part of Body Code | 1 | M | ID | 2/2
195/// 02 | 954 | Percentage as Decimal | 1 | O | R | 1/10
196#[derive(
197    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
198)]
199pub struct IMP {
200    #[serde(rename = "01")]
201    pub _01: String,
202    #[serde(rename = "02")]
203    pub _02: Option<crate::v005010::element::E954>,
204}
205
206/// IN1 - Individual Identification
207///
208/// To supply individual identification information for a named party
209///
210/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
211/// ----|----|-------|--------|----|------|-------
212/// 01 | 1065 | Entity Type Qualifier | 1 | M | ID | 1/1
213/// 02 | 1107 | Name Type Code | 1 | M | ID | 2/2
214/// 03 | 98 | Entity Identifier Code | 1 | O | ID | 2/3
215/// 04 | 128 | Reference Identification Qualifier | 1 | X | ID | 2/3
216/// 05 | 127 | Reference Identification | 1 | X | AN | 1/50
217/// 06 | 1069 | Individual Relationship Code | 1 | O | ID | 2/2
218/// 07 | 1131 | Level of Individual, Test, or Course Code | 1 | O | ID | 2/2
219#[derive(
220    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
221)]
222pub struct IN1 {
223    #[serde(rename = "01")]
224    pub _01: String,
225    #[serde(rename = "02")]
226    pub _02: crate::v005010::element::E1107,
227    #[serde(rename = "03")]
228    pub _03: Option<String>,
229    #[serde(rename = "04")]
230    pub _04: Option<String>,
231    #[serde(rename = "05")]
232    pub _05: Option<String>,
233    #[serde(rename = "06")]
234    pub _06: Option<crate::v005010::element::E1069>,
235    #[serde(rename = "07")]
236    pub _07: Option<crate::v005010::element::E1131>,
237}
238
239/// IN2 - Individual Name Structure Components
240///
241/// To provide the components of an individual name
242///
243/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
244/// ----|----|-------|--------|----|------|-------
245/// 01 | 1104 | Name Component Qualifier | 1 | M | ID | 2/2
246/// 02 | 93 | Name | 1 | M | AN | 1/60
247/// 03 | 93 | Name | 1 | O | AN | 1/60
248#[derive(
249    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
250)]
251pub struct IN2 {
252    #[serde(rename = "01")]
253    pub _01: crate::v005010::element::E1104,
254    #[serde(rename = "02")]
255    pub _02: String,
256    #[serde(rename = "03")]
257    pub _03: Option<String>,
258}
259
260/// INC - Installment Information
261#[derive(
262    Serialize,
263    Deserialize,
264    Clone,
265    Default,
266    Debug,
267    Validate,
268    PartialEq,
269    Eq,
270    DisplaySegment,
271    ParseSegment,
272)]
273pub struct INC {
274    #[serde(rename = "01")]
275    pub _01: String,
276    #[serde(rename = "02")]
277    pub _02: String,
278    #[serde(rename = "03")]
279    pub _03: String,
280    #[serde(rename = "04")]
281    pub _04: Option<String>,
282    #[serde(rename = "05")]
283    pub _05: Option<String>,
284    #[serde(rename = "06")]
285    pub _06: Option<String>,
286}
287
288/// INS - Insured Benefit
289#[derive(
290    Serialize,
291    Deserialize,
292    Clone,
293    Default,
294    Debug,
295    Validate,
296    PartialEq,
297    Eq,
298    DisplaySegment,
299    ParseSegment,
300)]
301pub struct INS {
302    #[serde(rename = "01")]
303    pub _01: String,
304    #[serde(rename = "02")]
305    pub _02: String,
306    #[serde(rename = "03")]
307    pub _03: Option<String>,
308    #[serde(rename = "04")]
309    pub _04: Option<String>,
310    #[serde(rename = "05")]
311    pub _05: Option<String>,
312    #[serde(rename = "06")]
313    pub _06: Option<String>,
314    #[serde(rename = "07")]
315    pub _07: Option<String>,
316    #[serde(rename = "08")]
317    pub _08: Option<String>,
318    #[serde(rename = "09")]
319    pub _09: Option<String>,
320    #[serde(rename = "10")]
321    pub _10: Option<String>,
322    #[serde(rename = "11")]
323    pub _11: Option<String>,
324    #[serde(rename = "12")]
325    pub _12: Option<String>,
326    #[serde(rename = "13")]
327    pub _13: Option<String>,
328    #[serde(rename = "14")]
329    pub _14: Option<String>,
330    #[serde(rename = "15")]
331    pub _15: Option<String>,
332    #[serde(rename = "16")]
333    pub _16: Option<String>,
334    #[serde(rename = "17")]
335    pub _17: Option<String>,
336}
337
338/// INV - Incestment Vehicle Selection
339#[derive(
340    Serialize,
341    Deserialize,
342    Clone,
343    Default,
344    Debug,
345    Validate,
346    PartialEq,
347    Eq,
348    DisplaySegment,
349    ParseSegment,
350)]
351pub struct INV {
352    #[serde(rename = "01")]
353    pub _01: String,
354    #[serde(rename = "02")]
355    pub _02: Option<String>,
356    #[serde(rename = "03")]
357    pub _03: Option<String>,
358    #[serde(rename = "04")]
359    pub _04: Option<String>,
360    #[serde(rename = "05")]
361    pub _05: Option<String>,
362    #[serde(rename = "06")]
363    pub _06: Option<String>,
364    #[serde(rename = "07")]
365    pub _07: Option<String>,
366}
367
368/// ISA - Interchange Control Header
369///
370/// To start and identify an interchange of zero or more functional groups and interchange-related control segments
371///
372/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
373/// ----|----|-------|--------|----|------|-------
374/// 01 | I01 | Authorization Information Qualifier | 1 | M | ID | 2/2
375/// 02 | I02 | Authorization Information | 1 | M | AN | 10/10
376/// 03 | I03 | Security Information Qualifier | 1 | M | ID | 2/2
377/// 04 | I04 | Security Information | 1 | M | AN | 10/10
378/// 05 | I05 | Interchange ID Qualifier | 1 | M | ID | 2/2
379/// 06 | I06 | Interchange Sender ID | 1 | M | AN | 15/15
380/// 07 | I05 | Interchange ID Qualifier | 1 | M | ID | 2/2
381/// 08 | I07 | Interchange Receiver ID | 1 | M | AN | 15/15
382/// 09 | I08 | Interchange Date | 1 | M | DT | 6/6
383/// 10 | I09 | Interchange Time | 1 | M | TM | 4/4
384/// 11 | I10 | Interchange Control Standards Identifier | 1 | M | ID | 1/1
385/// 12 | I11 | Interchange Control Version Number | 1 | M | ID | 5/5
386/// 13 | I12 | Interchange Control Number | 1 | M | N0 | 9/9
387/// 14 | I13 | Acknowledgment Requested | 1 | M | ID | 1/1
388/// 15 | I14 | Usage Indicator | 1 | M | ID | 1/1
389/// 16 | I15 | Component Element Separator | 1 | M |  | 1/1
390#[derive(
391    Serialize,
392    Deserialize,
393    Clone,
394    Default,
395    Debug,
396    Validate,
397    PartialEq,
398    Eq,
399    DisplaySegment,
400    ParseSegment,
401)]
402pub struct ISA {
403    /// I01 - Authorization Information Qualifier
404    ///
405    /// Code to identify the type of information in the Authorization Information
406    /// - TYPE=ID
407    /// - MIN=2
408    /// - MAX=2
409    #[serde(rename = "01")]
410    pub _01: element::I01,
411    /// I02 - Authorization Information
412    ///
413    /// Information used for additional identification or authorization of the interchange sender or the data in the interchange; the type of information is set by the Authorization Information Qualifier (I01)
414    /// - TYPE=AN
415    /// - MIN=10
416    /// - MAX=10
417    #[validate(length(equal = 10, message = "I02 must be 10 characters long"))]
418    #[serde(rename = "02")]
419    pub _02: String,
420    /// I03 - Security Information Qualifier
421    ///
422    /// Code to identify the type of information in the Security Information
423    /// - TYPE=ID
424    /// - MIN=2
425    /// - MAX=2
426    #[serde(rename = "03")]
427    pub _03: element::I03,
428    /// I04 - Security Information
429    ///
430    /// This is used for identifying the security information about the interchange sender or the data in the interchange; the type of information is set by the Security Information Qualifier (I03)
431    /// - TYPE=AN
432    /// - MIN=10
433    /// - MAX=10
434    #[validate(length(equal = 10, message = "I04 must be 10 characters long"))]
435    #[serde(rename = "04")]
436    pub _04: String,
437    /// I05 - Interchange ID Qualifier
438    ///
439    /// Qualifier to designate the system/method of code structure used to designate the sender or receiver ID element being qualified
440    /// - TYPE=ID
441    /// - MIN=2
442    /// - MAX=2
443    #[serde(rename = "05")]
444    pub _05: element::I05,
445    /// I06 - Interchange Sender ID
446    ///
447    /// Identification code published by the sender for other parties to use as the receiver ID to route data to them; the sender always codes this value in the sender ID element
448    /// - TYPE=AN
449    /// - MIN=15
450    /// - MAX=15
451    #[serde(rename = "06")]
452    pub _06: String,
453    /// I05 - Interchange ID Qualifier
454    ///
455    /// Qualifier to designate the system/method of code structure used to designate the sender or receiver ID element being qualified
456    /// - TYPE=ID
457    /// - MIN=2
458    /// - MAX=2
459    #[serde(rename = "07")]
460    pub _07: element::I05,
461    /// I07 - Interchange Receiver ID
462    ///
463    /// Identification code published by the receiver of the data; When sending, it is used by the sender as their sending ID, thus other parties sending to them will use this as a receiving ID to route data to them
464    /// - TYPE=AN
465    /// - MIN=15
466    /// - MAX=15
467    #[serde(rename = "08")]
468    pub _08: String,
469    /// I08 - Interchange Date
470    ///
471    /// Date of the interchange
472    /// - TYPE=DT
473    /// - MIN=6
474    /// - MAX=6
475    #[serde(rename = "09")]
476    pub _09: element::I08,
477    /// I09 - Interchange Time
478    ///
479    /// Time of the interchange
480    /// - TYPE=TM
481    /// - MIN=4
482    /// - MAX=4
483    #[serde(rename = "10")]
484    pub _10: element::I09,
485    /// I10 - Interchange Control Standards Identifier
486    ///
487    /// Code to identify the agency responsible for the control standard used by the message that is enclosed by the interchange header and trailer
488    /// - TYPE=ID
489    /// - MIN=1
490    /// - MAX=1
491    #[serde(rename = "11")]
492    pub _11: element::I10,
493    /// I11 - Interchange Control Version Number
494    ///
495    /// This version number covers the interchange control segments
496    /// - TYPE=ID
497    /// - MIN=5
498    /// - MAX=5
499    #[serde(rename = "12")]
500    pub _12: element::I11,
501    /// I12 - Interchange Control Number
502    ///
503    /// A control number assigned by the interchange sender
504    /// - TYPE=N0
505    /// - MIN=9
506    /// - MAX=9
507    #[serde(rename = "13")]
508    pub _13: element::I12,
509    /// I13 - Acknowledgment Requested
510    ///
511    /// Code sent by the sender to request an interchange acknowledgment (TA1)
512    /// - TYPE=ID
513    /// - MIN=1
514    /// - MAX=1
515    #[serde(rename = "14")]
516    pub _14: element::I13,
517    /// I14 - Usage Indicator
518    ///
519    /// Code to indicate whether data enclosed by this interchange envelope is test, production or information
520    /// - TYPE=ID
521    /// - MIN=1
522    /// - MAX=1
523    #[serde(rename = "15")]
524    pub _15: element::I14,
525    /// I15 - Component Element Separator
526    ///
527    /// Type is not applicable; the component element separator is a delimiter and not a data element; this field provides the delimiter used to separate component data elements within a composite data structure; this value must be different than the data element separator and the segment terminator
528    /// - TYPE=
529    /// - MIN=1
530    /// - MAX=1
531    #[serde(rename = "16")]
532    pub _16: String,
533}
534
535/// III - Information
536#[derive(
537    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
538)]
539pub struct III {
540    #[serde(rename = "01")]
541    pub _01: Option<String>,
542    #[serde(rename = "02")]
543    pub _02: Option<String>,
544    #[serde(rename = "03")]
545    pub _03: Option<String>,
546    #[serde(rename = "04")]
547    pub _04: Option<String>,
548    #[serde(rename = "05")]
549    pub _05: Option<String>,
550}
551
552/// IK3 - Implementation Data Segment Note
553#[derive(
554    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
555)]
556pub struct IK3 {
557    #[serde(rename = "01")]
558    pub _01: Option<String>,
559    #[serde(rename = "02")]
560    pub _02: Option<String>,
561    #[serde(rename = "03")]
562    pub _03: Option<String>,
563    #[serde(rename = "04")]
564    pub _04: Option<String>,
565}
566
567/// IK4 - Implementation Data Element Note
568#[derive(
569    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
570)]
571pub struct IK4 {
572    #[serde(rename = "01")]
573    pub _01: Option<String>,
574    #[serde(rename = "02")]
575    pub _02: Option<String>,
576    #[serde(rename = "03")]
577    pub _03: Option<String>,
578    #[serde(rename = "04")]
579    pub _04: Option<String>,
580}
581
582/// IK5 - Implementation Transaction Set Response Trailer
583#[derive(
584    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
585)]
586pub struct IK5 {
587    #[serde(rename = "01")]
588    pub _01: Option<String>,
589    #[serde(rename = "02")]
590    pub _02: Option<String>,
591    #[serde(rename = "03")]
592    pub _03: Option<String>,
593    #[serde(rename = "04")]
594    pub _04: Option<String>,
595    #[serde(rename = "05")]
596    pub _05: Option<String>,
597    #[serde(rename = "06")]
598    pub _06: Option<String>,
599}
600
601/// IT8 - Conditions of Sale
602///
603/// To specify the conditions of sale, including substitution and sales-requirement detail
604///
605/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
606/// ----|----|-------|--------|----|------|-------
607/// 01 | 563 | Sales Requirement Code | 1 | X | ID | 1/2
608/// 02 | 306 | Action Code | 1 | X | ID | 1/2
609/// 03 | 610 | Amount | 1 | X | N2 | 1/15
610/// 04 | 508 | Account Number | 1 | O | AN | 1/35
611/// 05 | 373 | Date | 1 | X | DT | 8/8
612/// 06 | 559 | Agency Qualifier Code | 1 | O | ID | 2/2
613/// 07 | 566 | Product/Service Substitution Code | 1 | X | ID | 1/2
614/// 08-27 | 235/234 | Product/Service ID Qualifier and ID pairs | 1 | X | |
615#[derive(
616    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
617)]
618pub struct IT8 {
619    #[serde(rename = "01")]
620    pub _01: Option<crate::v005010::element::E563>,
621    #[serde(rename = "02")]
622    pub _02: Option<String>,
623    #[serde(rename = "03")]
624    pub _03: Option<crate::v005010::element::E610>,
625    #[serde(rename = "04")]
626    pub _04: Option<String>,
627    #[serde(rename = "05")]
628    pub _05: Option<String>,
629    #[serde(rename = "06")]
630    pub _06: Option<String>,
631    #[serde(rename = "07")]
632    pub _07: Option<crate::v005010::element::E566>,
633    #[serde(rename = "08")]
634    pub _08: Option<String>,
635    #[serde(rename = "09")]
636    pub _09: Option<String>,
637    #[serde(rename = "10")]
638    pub _10: Option<String>,
639    #[serde(rename = "11")]
640    pub _11: Option<String>,
641    #[serde(rename = "12")]
642    pub _12: Option<String>,
643    #[serde(rename = "13")]
644    pub _13: Option<String>,
645    #[serde(rename = "14")]
646    pub _14: Option<String>,
647    #[serde(rename = "15")]
648    pub _15: Option<String>,
649    #[serde(rename = "16")]
650    pub _16: Option<String>,
651    #[serde(rename = "17")]
652    pub _17: Option<String>,
653    #[serde(rename = "18")]
654    pub _18: Option<String>,
655    #[serde(rename = "19")]
656    pub _19: Option<String>,
657    #[serde(rename = "20")]
658    pub _20: Option<String>,
659    #[serde(rename = "21")]
660    pub _21: Option<String>,
661    #[serde(rename = "22")]
662    pub _22: Option<String>,
663    #[serde(rename = "23")]
664    pub _23: Option<String>,
665    #[serde(rename = "24")]
666    pub _24: Option<String>,
667    #[serde(rename = "25")]
668    pub _25: Option<String>,
669    #[serde(rename = "26")]
670    pub _26: Option<String>,
671    #[serde(rename = "27")]
672    pub _27: Option<String>,
673}
674
675/// IT1 - Baseline Item Data (Invoice)
676#[derive(
677    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
678)]
679pub struct IT1 {
680    #[serde(rename = "01")]
681    pub _01: Option<String>,
682    #[serde(rename = "02")]
683    pub _02: Option<String>,
684    /// 355 - Unit or Basis for Measurement Code
685    #[serde(rename = "03")]
686    pub _03: Option<crate::v005010::element::E355>,
687    #[serde(rename = "04")]
688    pub _04: Option<String>,
689    #[serde(rename = "05")]
690    pub _05: Option<String>,
691    /// 235 - Product/Service ID Qualifier
692    #[serde(rename = "06")]
693    pub _06: Option<crate::v005010::element::E235>,
694    #[serde(rename = "07")]
695    pub _07: Option<String>,
696    /// 235 - Product/Service ID Qualifier
697    #[serde(rename = "08")]
698    pub _08: Option<crate::v005010::element::E235>,
699    #[serde(rename = "09")]
700    pub _09: Option<String>,
701    /// 235 - Product/Service ID Qualifier
702    #[serde(rename = "10")]
703    pub _10: Option<crate::v005010::element::E235>,
704    #[serde(rename = "11")]
705    pub _11: Option<String>,
706    /// 235 - Product/Service ID Qualifier
707    #[serde(rename = "12")]
708    pub _12: Option<crate::v005010::element::E235>,
709    #[serde(rename = "13")]
710    pub _13: Option<String>,
711    /// 235 - Product/Service ID Qualifier
712    #[serde(rename = "14")]
713    pub _14: Option<crate::v005010::element::E235>,
714    #[serde(rename = "15")]
715    pub _15: Option<String>,
716    /// 235 - Product/Service ID Qualifier
717    #[serde(rename = "16")]
718    pub _16: Option<crate::v005010::element::E235>,
719    #[serde(rename = "17")]
720    pub _17: Option<String>,
721    /// 235 - Product/Service ID Qualifier
722    #[serde(rename = "18")]
723    pub _18: Option<crate::v005010::element::E235>,
724    #[serde(rename = "19")]
725    pub _19: Option<String>,
726    /// 235 - Product/Service ID Qualifier
727    #[serde(rename = "20")]
728    pub _20: Option<crate::v005010::element::E235>,
729    #[serde(rename = "21")]
730    pub _21: Option<String>,
731    /// 235 - Product/Service ID Qualifier
732    #[serde(rename = "22")]
733    pub _22: Option<crate::v005010::element::E235>,
734    #[serde(rename = "23")]
735    pub _23: Option<String>,
736    /// 235 - Product/Service ID Qualifier
737    #[serde(rename = "24")]
738    pub _24: Option<crate::v005010::element::E235>,
739    #[serde(rename = "25")]
740    pub _25: Option<String>,
741}
742
743/// ITA - Allowance, Charge or Service
744///
745/// To specify allowances, charges, or services
746///
747/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
748/// ----|----|-------|--------|----|------|-------
749/// 01 | 248 | Allowance or Charge Indicator | 1 | M | ID | 1/1
750/// 02 | 559 | Agency Qualifier Code | 1 | X | ID | 2/2
751/// 03 | 560 | Special Services Code | 1 | X | ID | 2/10
752/// 04 | 331 | Allowance or Charge Method of Handling Code | 1 | M | ID | 2/2
753/// 05 | 341 | Allowance or Charge Number | 1 | O | AN | 1/16
754/// 06 | 359 | Allowance or Charge Rate | 1 | O | R | 1/15
755/// 07 | 360 | Allowance or Charge Total Amount | 1 | O | N2 | 1/15
756/// 08 | 378 | Allowance/Charge Percent Qualifier | 1 | O | ID | 1/1
757/// 09 | 332 | Percent, Decimal Format | 1 | X | R | 1/6
758/// 10 | 380 | Quantity | 1 | X | R | 1/15
759/// 11 | 355 | Unit or Basis for Measurement Code | 1 | X | ID | 2/2
760/// 12 | 380 | Quantity | 1 | X | R | 1/15
761/// 13 | 352 | Description | 1 | X | AN | 1/80
762/// 14 | 150 | Special Charge or Allowance Code | 1 | X | ID | 3/3
763/// 15 | 822 | Source Subqualifier | 1 | O | AN | 1/15
764/// 16 | 662 | Relationship Code | 1 | O | ID | 1/1
765/// 17 | 355 | Unit or Basis for Measurement Code | 1 | O | ID | 2/2
766#[derive(
767    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
768)]
769pub struct ITA {
770    #[serde(rename = "01")]
771    pub _01: String,
772    #[serde(rename = "02")]
773    pub _02: Option<String>,
774    #[serde(rename = "03")]
775    pub _03: Option<crate::v005010::element::E560>,
776    #[serde(rename = "04")]
777    pub _04: crate::v005010::element::E331,
778    #[serde(rename = "05")]
779    pub _05: Option<String>,
780    #[serde(rename = "06")]
781    pub _06: Option<crate::v005010::element::E359>,
782    #[serde(rename = "07")]
783    pub _07: Option<crate::v005010::element::E360>,
784    #[serde(rename = "08")]
785    pub _08: Option<crate::v005010::element::E378>,
786    #[serde(rename = "09")]
787    pub _09: Option<crate::v005010::element::E332>,
788    #[serde(rename = "10")]
789    pub _10: Option<String>,
790    #[serde(rename = "11")]
791    pub _11: Option<String>,
792    #[serde(rename = "12")]
793    pub _12: Option<String>,
794    #[serde(rename = "13")]
795    pub _13: Option<String>,
796    #[serde(rename = "14")]
797    pub _14: Option<crate::v005010::element::E150>,
798    #[serde(rename = "15")]
799    pub _15: Option<String>,
800    #[serde(rename = "16")]
801    pub _16: Option<crate::v005010::element::E662>,
802    #[serde(rename = "17")]
803    pub _17: Option<String>,
804}
805
806/// ITD - Terms of Sale/Deferred Terms of Sale
807#[derive(
808    Serialize,
809    Deserialize,
810    Clone,
811    Default,
812    Debug,
813    Validate,
814    PartialEq,
815    Eq,
816    DisplaySegment,
817    ParseSegment,
818)]
819pub struct ITD {
820    /// 336 - Terms Type Code
821    #[serde(rename = "01")]
822    pub _01: Option<crate::v005010::element::E336>,
823    #[serde(rename = "02")]
824    pub _02: Option<String>,
825    #[serde(rename = "03")]
826    pub _03: Option<String>,
827    #[serde(rename = "04")]
828    pub _04: Option<String>,
829    #[serde(rename = "05")]
830    pub _05: Option<String>,
831    #[serde(rename = "06")]
832    pub _06: Option<String>,
833    #[serde(rename = "07")]
834    pub _07: Option<String>,
835    #[serde(rename = "08")]
836    pub _08: Option<String>,
837    #[serde(rename = "09")]
838    pub _09: Option<String>,
839    #[serde(rename = "10")]
840    pub _10: Option<String>,
841    #[serde(rename = "11")]
842    pub _11: Option<String>,
843    #[serde(rename = "12")]
844    pub _12: Option<String>,
845    #[serde(rename = "13")]
846    pub _13: Option<String>,
847    #[serde(rename = "14")]
848    pub _14: Option<String>,
849    #[serde(rename = "15")]
850    pub _15: Option<String>,
851}
852
853/// ISR - Item Status Report
854///
855/// To specify the status of an order or line item
856///
857/// REF | ID | NAME | REPEAT | REQ | TYPE | MIN/MAX
858/// ----|----|-------|--------|----|------|-------
859/// 01 | 368 | Shipment/Order Status Code | 1 | M | ID | 2/2
860/// 02 | 373 | Date | 1 | O | DT | 8/8
861/// 03 | 641 | Status Reason Code | 1 | O | ID | 3/3
862#[derive(
863    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
864)]
865pub struct ISR {
866    #[serde(rename = "01")]
867    pub _01: crate::v005010::element::E368,
868    #[serde(rename = "02")]
869    pub _02: Option<String>,
870    #[serde(rename = "03")]
871    pub _03: Option<crate::v005010::element::E641>,
872}
873
874/// ISS - Invoice Shipment Summary
875///
876/// To specify summary details of total items shipped in terms of quantity, weight, and volume
877#[derive(
878    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
879)]
880pub struct ISS {
881    #[serde(rename = "01")]
882    pub _01: Option<String>,
883    #[serde(rename = "02")]
884    pub _02: Option<String>,
885    #[serde(rename = "03")]
886    pub _03: Option<String>,
887    #[serde(rename = "04")]
888    pub _04: Option<String>,
889    #[serde(rename = "05")]
890    pub _05: Option<String>,
891    #[serde(rename = "06")]
892    pub _06: Option<String>,
893    #[serde(rename = "07")]
894    pub _07: Option<String>,
895    #[serde(rename = "08")]
896    pub _08: Option<String>,
897}
898
899/// IT3 - Additional Item Data
900///
901/// To specify additional item details relating to variations between ordered and shipped quantities, or to specify alternate units of measures and quantities
902#[derive(
903    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
904)]
905pub struct IT3 {
906    #[serde(rename = "01")]
907    pub _01: Option<String>,
908    #[serde(rename = "02")]
909    pub _02: Option<String>,
910    #[serde(rename = "03")]
911    pub _03: Option<String>,
912    #[serde(rename = "04")]
913    pub _04: Option<String>,
914    #[serde(rename = "05")]
915    pub _05: Option<String>,
916}
917
918/// IC - Intermodal Chassis Equipment
919#[derive(
920    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
921)]
922pub struct IC {
923    #[serde(rename = "01")]
924    pub _01: String,
925    #[serde(rename = "02")]
926    pub _02: String,
927    #[serde(rename = "03")]
928    pub _03: Option<String>,
929    #[serde(rename = "04")]
930    pub _04: Option<String>,
931    #[serde(rename = "05")]
932    pub _05: Option<String>,
933    #[serde(rename = "06")]
934    pub _06: Option<String>,
935    #[serde(rename = "07")]
936    pub _07: Option<String>,
937    #[serde(rename = "08")]
938    pub _08: Option<String>,
939    #[serde(rename = "09")]
940    pub _09: Option<String>,
941}
942
943/// IM - Intermodal Movement Information
944#[derive(
945    Serialize, Deserialize, Clone, Default, Debug, PartialEq, Eq, DisplaySegment, ParseSegment,
946)]
947pub struct IM {
948    #[serde(rename = "01")]
949    pub _01: Option<String>,
950    #[serde(rename = "02")]
951    pub _02: Option<String>,
952    #[serde(rename = "03")]
953    pub _03: Option<String>,
954}