namespace EdiFabric.Templates.Hipaa5010
{
    using System;
    using System.Collections.Generic;
    using EdiFabric.Core.Annotations.Edi;
    using EdiFabric.Core.Annotations.Validation;
    using EdiFabric.Core.Model.Edi;
    using EdiFabric.Core.Model.Edi.X12;
    using EdiFabric.Core.Model.Edi.ErrorContexts;
    
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation_8 : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_6))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation_4 : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_11))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_28))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation_12 : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_20))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation_15 : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_23))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Health Care Code Information
    /// 
    [Serializable()]
    [Composite("C022")]
    public class C022_HealthCareCodeInformation_13 : IC022
    {
        
        /// 
        /// Code List Qualifier Code
        /// 
        [Required]
        [DataElement("1270", typeof(X12_ID_1270_4))]
        [Pos(1)]
        public string CodeListQualifierCode_01 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Required]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(2)]
        public string IndustryCode_02 { get; set; }
        /// 
        /// Date Time Period Format Qualifier
        /// 
        [Paired(4)]
        [DataElement("1250", typeof(X12_ID_1250))]
        [Pos(3)]
        public string DateTimePeriodFormatQualifier_03 { get; set; }
        /// 
        /// Date Time Period
        /// 
        [StringLength(1, 35)]
        [DataElement("1251", typeof(X12_AN))]
        [Pos(4)]
        public string DateTimePeriod_04 { get; set; }
        /// 
        /// Monetary Amount
        /// 
        [StringLength(1, 18)]
        [DataElement("782", typeof(X12_R))]
        [Pos(5)]
        public string MonetaryAmount_05 { get; set; }
        /// 
        /// Quantity
        /// 
        [StringLength(1, 15)]
        [DataElement("380", typeof(X12_R))]
        [Pos(6)]
        public string Quantity_06 { get; set; }
        /// 
        /// Version Identifier
        /// 
        [StringLength(1, 30)]
        [DataElement("799", typeof(X12_AN))]
        [Pos(7)]
        public string VersionIdentifier_07 { get; set; }
        /// 
        /// Industry Code
        /// 
        [Exclusion(9)]
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(8)]
        public string IndustryCode_08 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(9)]
        public string YesNoConditionorResponseCode_09 { get; set; }
    }
    
    /// 
    /// Actions Indicated
    /// 
    [Serializable()]
    [Composite("C002")]
    public class C002_ActionsIndicated_2 : IC002
    {
        
        /// 
        /// Paperwork/Report Action Code
        /// 
        [Required]
        [DataElement("704", typeof(X12_ID_704))]
        [Pos(1)]
        public string PaperworkReportActionCode_01 { get; set; }
        /// 
        /// Paperwork/Report Action Code
        /// 
        [DataElement("704", typeof(X12_ID_704))]
        [Pos(2)]
        public string PaperworkReportActionCode_02 { get; set; }
        /// 
        /// Paperwork/Report Action Code
        /// 
        [DataElement("704", typeof(X12_ID_704))]
        [Pos(3)]
        public string PaperworkReportActionCode_03 { get; set; }
        /// 
        /// Paperwork/Report Action Code
        /// 
        [DataElement("704", typeof(X12_ID_704))]
        [Pos(4)]
        public string PaperworkReportActionCode_04 { get; set; }
        /// 
        /// Paperwork/Report Action Code
        /// 
        [DataElement("704", typeof(X12_ID_704))]
        [Pos(5)]
        public string PaperworkReportActionCode_05 { get; set; }
    }
    
    /// 
    /// Composite Unit of Measure
    /// 
    [Serializable()]
    [Composite("C001")]
    public class C001_CompositeUnitofMeasure : IC001
    {
        
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [Required]
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(1)]
        public string UnitorBasisforMeasurementCode_01 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(2)]
        public string Exponent_02 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(3)]
        public string Multiplier_03 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(4)]
        public string UnitorBasisforMeasurementCode_04 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(5)]
        public string Exponent_05 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(6)]
        public string Multiplier_06 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(7)]
        public string UnitorBasisforMeasurementCode_07 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(8)]
        public string Exponent_08 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(9)]
        public string Multiplier_09 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(10)]
        public string UnitorBasisforMeasurementCode_10 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(11)]
        public string Exponent_11 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(12)]
        public string Multiplier_12 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(13)]
        public string UnitorBasisforMeasurementCode_13 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(14)]
        public string Exponent_14 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(15)]
        public string Multiplier_15 { get; set; }
    }
    
    /// 
    /// Reference Identifier
    /// 
    [Serializable()]
    [Composite("C040")]
    public class C040_ReferenceIdentifier : IC040
    {
        
        /// 
        /// Reference Identification Qualifier
        /// 
        [Required]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(1)]
        public string ReferenceIdentificationQualifier_01 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [Required]
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(2)]
        public string ReferenceIdentification_02 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Paired(4)]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(3)]
        public string ReferenceIdentificationQualifier_03 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(4)]
        public string ReferenceIdentification_04 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Paired(6)]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(5)]
        public string ReferenceIdentificationQualifier_05 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(6)]
        public string ReferenceIdentification_06 { get; set; }
    }
    
    /// 
    /// Reference Identifier
    /// 
    [Serializable()]
    [Composite("C040")]
    public class C040_ReferenceIdentifier_7 : IC040
    {
        
        /// 
        /// Reference Identification Qualifier
        /// 
        [Required]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(1)]
        public string ReferenceIdentificationQualifier_01 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(2)]
        public string ReferenceIdentification_02 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Required]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(3)]
        public string ReferenceIdentificationQualifier_03 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(4)]
        public string ReferenceIdentification_04 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Required]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(5)]
        public string ReferenceIdentificationQualifier_05 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(6)]
        public string ReferenceIdentification_06 { get; set; }
    }
    
    /// 
    /// Provider Specialty Information
    /// 
    [Serializable()]
    [Composite("C035")]
    public class C035_ProviderSpecialtyInformation : IC035
    {
        
        /// 
        /// Provider Specialty Code
        /// 
        [Required]
        [DataElement("1222", typeof(X12_ID_1222))]
        [Pos(1)]
        public string ProviderSpecialtyCode_01 { get; set; }
        /// 
        /// Agency Qualifier Code
        /// 
        [DataElement("559", typeof(X12_ID_559))]
        [Pos(2)]
        public string AgencyQualifierCode_02 { get; set; }
        /// 
        /// Yes/No Condition or Response Code
        /// 
        [DataElement("1073", typeof(X12_ID_1073_2))]
        [Pos(3)]
        public string YesNoConditionorResponseCode_03 { get; set; }
    }
    
    /// 
    /// Composite Race or Ethnicity Information
    /// 
    [Serializable()]
    [Composite("C056")]
    public class C056_CompositeRaceorEthnicityInformation : IC056
    {
        
        /// 
        /// Race or Ethnicity Code
        /// 
        [DataElement("1109", typeof(X12_ID_1109))]
        [Pos(1)]
        public string RaceorEthnicityCode_01 { get; set; }
        /// 
        /// Code List Qualifier Code
        /// 
        [Paired(3)]
        [DataElement("1270", typeof(X12_ID_1270_28))]
        [Pos(2)]
        public string CodeListQualifierCode_02 { get; set; }
        /// 
        /// Industry Code
        /// 
        [StringLength(1, 30)]
        [DataElement("1271", typeof(X12_AN))]
        [Pos(3)]
        public string IndustryCode_03 { get; set; }
    }
    
    /// 
    /// Health Care Service Location Information
    /// 
    [Serializable()]
    [Composite("C023")]
    public class C023_HealthCareServiceLocationInformation_2 : IC023
    {
        
        /// 
        /// Facility Code Value
        /// 
        [Required]
        [StringLength(1, 2)]
        [DataElement("1331", typeof(X12_AN))]
        [Pos(1)]
        public string FacilityTypeCode_01 { get; set; }
        /// 
        /// Facility Code Qualifier
        /// 
        [Required]
        [DataElement("1332", typeof(X12_ID_1332_2))]
        [Pos(2)]
        public string FacilityCodeQualifier_02 { get; set; }
        /// 
        /// Claim Frequency Type Code
        /// 
        [Required]
        [StringLength(1, 1)]
        [DataElement("1325", typeof(X12_AN))]
        [Pos(3)]
        public string ClaimFrequencyTypeCode_03 { get; set; }
    }
    
    /// 
    /// Related Causes Information
    /// 
    [Serializable()]
    [Composite("C024")]
    public class C024_RelatedCausesInformation_3 : IC024
    {
        
        /// 
        /// Related-Causes Code
        /// 
        [Required]
        [DataElement("1362", typeof(X12_ID_1362_2))]
        [Pos(1)]
        public string RelatedCausesCode_01 { get; set; }
        /// 
        /// Related-Causes Code
        /// 
        [DataElement("1362", typeof(X12_ID_1362_2))]
        [Pos(2)]
        public string RelatedCausesCode_02 { get; set; }
        /// 
        /// Related-Causes Code
        /// 
        [DataElement("1362", typeof(X12_ID_1362))]
        [Pos(3)]
        public string RelatedCausesCode_03 { get; set; }
        /// 
        /// State or Province Code
        /// 
        [StringLength(2, 2)]
        [DataElement("156", typeof(X12_AN))]
        [Pos(4)]
        public string StateorProvinceCode_04 { get; set; }
        /// 
        /// Country Code
        /// 
        [StringLength(2, 3)]
        [DataElement("26", typeof(X12_AN))]
        [Pos(5)]
        public string CountryCode_05 { get; set; }
    }
    
    /// 
    /// Reference Identifier
    /// 
    [Serializable()]
    [Composite("C040")]
    public class C040_ReferenceIdentifier_3 : IC040
    {
        
        /// 
        /// Reference Identification Qualifier
        /// 
        [Required]
        [DataElement("128", typeof(X12_ID_128_27))]
        [Pos(1)]
        public string ReferenceIdentificationQualifier_01 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [Required]
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(2)]
        public string ReferenceIdentification_02 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Paired(4)]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(3)]
        public string ReferenceIdentificationQualifier_03 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(4)]
        public string ReferenceIdentification_04 { get; set; }
        /// 
        /// Reference Identification Qualifier
        /// 
        [Paired(6)]
        [DataElement("128", typeof(X12_ID_128_20))]
        [Pos(5)]
        public string ReferenceIdentificationQualifier_05 { get; set; }
        /// 
        /// Reference Identification
        /// 
        [StringLength(1, 50)]
        [DataElement("127", typeof(X12_AN))]
        [Pos(6)]
        public string ReferenceIdentification_06 { get; set; }
    }
    
    /// 
    /// Composite Medical Procedure Identifier
    /// 
    [Serializable()]
    [Composite("C003")]
    public class C003_CompositeMedicalProcedureIdentifier_12 : IC003
    {
        
        /// 
        /// Product/Service ID Qualifier
        /// 
        [Required]
        [DataElement("235", typeof(X12_ID_235_6))]
        [Pos(1)]
        public string ProductorServiceIDQualifier_01 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [Required]
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(2)]
        public string ProcedureCode_02 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(3)]
        public string ProcedureModifier_03 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(4)]
        public string ProcedureModifier_04 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(5)]
        public string ProcedureModifier_05 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(6)]
        public string ProcedureModifier_06 { get; set; }
        /// 
        /// Description
        /// 
        [StringLength(1, 80)]
        [DataElement("352", typeof(X12_AN))]
        [Pos(7)]
        public string Description_07 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(8)]
        public string ProductServiceID_08 { get; set; }
    }
    
    /// 
    /// Composite Diagnosis Code Pointer
    /// 
    [Serializable()]
    [Composite("C004")]
    public class C004_CompositeDiagnosisCodePointer : IC004
    {
        
        /// 
        /// Diagnosis Code Pointer
        /// 
        [Required]
        [StringLength(1, 2)]
        [DataElement("1328", typeof(X12_N0))]
        [Pos(1)]
        public string DiagnosisCodePointer_01 { get; set; }
        /// 
        /// Diagnosis Code Pointer
        /// 
        [StringLength(1, 2)]
        [DataElement("1328", typeof(X12_N0))]
        [Pos(2)]
        public string DiagnosisCodePointer_02 { get; set; }
        /// 
        /// Diagnosis Code Pointer
        /// 
        [StringLength(1, 2)]
        [DataElement("1328", typeof(X12_N0))]
        [Pos(3)]
        public string DiagnosisCodePointer_03 { get; set; }
        /// 
        /// Diagnosis Code Pointer
        /// 
        [StringLength(1, 2)]
        [DataElement("1328", typeof(X12_N0))]
        [Pos(4)]
        public string DiagnosisCodePointer_04 { get; set; }
    }
    
    /// 
    /// Composite Medical Procedure Identifier
    /// 
    [Serializable()]
    [Composite("C003")]
    public class C003_CompositeMedicalProcedureIdentifier_9 : IC003
    {
        
        /// 
        /// Product/Service ID Qualifier
        /// 
        [Required]
        [DataElement("235", typeof(X12_ID_235_10))]
        [Pos(1)]
        public string ProductorServiceIDQualifier_01 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [Required]
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(2)]
        public string ProcedureCode_02 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(3)]
        public string ProcedureModifier_03 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(4)]
        public string ProcedureModifier_04 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(5)]
        public string ProcedureModifier_05 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(6)]
        public string ProcedureModifier_06 { get; set; }
        /// 
        /// Description
        /// 
        [StringLength(1, 80)]
        [DataElement("352", typeof(X12_AN))]
        [Pos(7)]
        public string Description_07 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(8)]
        public string ProductServiceID_08 { get; set; }
    }
    
    /// 
    /// Composite Unit of Measure
    /// 
    [Serializable()]
    [Composite("C001")]
    public class C001_CompositeUnitofMeasure_2 : IC001
    {
        
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [Required]
        [DataElement("355", typeof(X12_ID_355_6))]
        [Pos(1)]
        public string UnitorBasisforMeasurementCode_01 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(2)]
        public string Exponent_02 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(3)]
        public string Multiplier_03 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(4)]
        public string UnitorBasisforMeasurementCode_04 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(5)]
        public string Exponent_05 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(6)]
        public string Multiplier_06 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(7)]
        public string UnitorBasisforMeasurementCode_07 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(8)]
        public string Exponent_08 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(9)]
        public string Multiplier_09 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(10)]
        public string UnitorBasisforMeasurementCode_10 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(11)]
        public string Exponent_11 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(12)]
        public string Multiplier_12 { get; set; }
        /// 
        /// Unit or Basis for Measurement Code
        /// 
        [DataElement("355", typeof(X12_ID_355))]
        [Pos(13)]
        public string UnitorBasisforMeasurementCode_13 { get; set; }
        /// 
        /// Exponent
        /// 
        [StringLength(1, 15)]
        [DataElement("1018", typeof(X12_R))]
        [Pos(14)]
        public string Exponent_14 { get; set; }
        /// 
        /// Multiplier
        /// 
        [StringLength(1, 10)]
        [DataElement("649", typeof(X12_R))]
        [Pos(15)]
        public string Multiplier_15 { get; set; }
    }
    
    /// 
    /// Composite Medical Procedure Identifier
    /// 
    [Serializable()]
    [Composite("C003")]
    public class C003_CompositeMedicalProcedureIdentifier_7 : IC003
    {
        
        /// 
        /// Product/Service ID Qualifier
        /// 
        [Required]
        [DataElement("235", typeof(X12_ID_235_8))]
        [Pos(1)]
        public string ProductorServiceIDQualifier_01 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [Required]
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(2)]
        public string ProcedureCode_02 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(3)]
        public string ProcedureModifier_03 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(4)]
        public string ProcedureModifier_04 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(5)]
        public string ProcedureModifier_05 { get; set; }
        /// 
        /// Procedure Modifier
        /// 
        [StringLength(2, 2)]
        [DataElement("1339", typeof(X12_AN))]
        [Pos(6)]
        public string ProcedureModifier_06 { get; set; }
        /// 
        /// Description
        /// 
        [StringLength(1, 80)]
        [DataElement("352", typeof(X12_AN))]
        [Pos(7)]
        public string Description_07 { get; set; }
        /// 
        /// Product/Service ID
        /// 
        [StringLength(1, 48)]
        [DataElement("234", typeof(X12_AN))]
        [Pos(8)]
        public string ProductServiceID_08 { get; set; }
    }
}