use serde::{Deserialize, Serialize};

/// AdditionalIdentificationSubscriber : Use this object when you need to provide an identification number other than or in addition to the subscriber's member ID. For example, you may provide the patient account number.  Don't include the health insurance claim number or the medicaid recipient ID number here unless they are different from the member ID.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdditionalIdentificationSubscriber {
    /// The Property and Casualty Claim Number associated with the patient. You should only submit this value when when you are submitting an eligibility request to a property and casualty payer.
    #[serde(rename = "agencyClaimNumber", skip_serializing_if = "Option::is_none")]
    pub agency_claim_number: Option<String>,
    /// The contract number for an existing contract between the payer and the provider requesting the eligibility check.
    #[serde(rename = "contractNumber", skip_serializing_if = "Option::is_none")]
    pub contract_number: Option<String>,
    /// The health insurance claim number.
    #[serde(
        rename = "healthInsuranceClaimNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub health_insurance_claim_number: Option<String>,
    /// The identification card serial number. You can include this when the ID card has a number in addition to the member ID number. The Identification Card Serial Number uniquely identifies the card when multiple cards have been or will be issued to a member, such as a replacement card.
    #[serde(
        rename = "identificationCardSerialNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub identification_card_serial_number: Option<String>,
    /// The insurance policy number.
    #[serde(
        rename = "insurancePolicyNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub insurance_policy_number: Option<String>,
    /// The medical record identification number.
    #[serde(
        rename = "medicalRecordIdentificationNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub medical_record_identification_number: Option<String>,
    /// This property is never used in practice. Supply the subscriber's member ID in `subscriber.memberId`.
    #[serde(
        rename = "memberIdentificationNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub member_identification_number: Option<String>,
    /// The patient account number.
    #[serde(
        rename = "patientAccountNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub patient_account_number: Option<String>,
    /// The plan network identification number.
    #[serde(
        rename = "planNetworkIdentificationNumber",
        skip_serializing_if = "Option::is_none"
    )]
    pub plan_network_identification_number: Option<String>,
    /// The insurance plan number.
    #[serde(rename = "planNumber", skip_serializing_if = "Option::is_none")]
    pub plan_number: Option<String>,
    /// The insurance group or policy number.
    #[serde(rename = "policyNumber", skip_serializing_if = "Option::is_none")]
    pub policy_number: Option<String>,
}

impl AdditionalIdentificationSubscriber {
    /// Use this object when you need to provide an identification number other than or in addition to the subscriber's member ID. For example, you may provide the patient account number.  Don't include the health insurance claim number or the medicaid recipient ID number here unless they are different from the member ID.
    pub fn new() -> AdditionalIdentificationSubscriber {
        AdditionalIdentificationSubscriber {
            agency_claim_number: None,
            contract_number: None,
            health_insurance_claim_number: None,
            identification_card_serial_number: None,
            insurance_policy_number: None,
            medical_record_identification_number: None,
            member_identification_number: None,
            patient_account_number: None,
            plan_network_identification_number: None,
            plan_number: None,
            policy_number: None,
        }
    }
}
