# -*- coding: utf-8 -*-
# ----  AUTO-GENERATED BY redox_lib_gen. DO NOT MODIFY MANUALLY!!  ---- #

from typing import List, Union

from pydantic import Field

from ..abstract_base import EventTypeAbstractModel, RedoxAbstractModel
from ..field_types import Number


class VisitPush(EventTypeAbstractModel):

    AdmissionDiagnosis: List["VisitPushAdmissionDiagnosis"] = Field(None)
    AdmissionDiagnosisText: Union[str, None] = Field(None)
    AdvanceDirectives: List["VisitPushAdvanceDirective"] = Field(None)
    AdvanceDirectivesText: Union[str, None] = Field(None)
    Allergies: List["VisitPushAllergy"] = Field(None)
    AllergyText: Union[str, None] = Field(None)
    Assessment: "VisitPushAssessment" = Field(None)
    AssessmentText: Union[str, None] = Field(None)
    ChiefComplaintText: Union[str, None] = Field(None)
    DischargeDiagnosis: List["VisitPushDischargeDiagnosis"] = Field(None)
    DischargeDiagnosisText: Union[str, None] = Field(None)
    DischargeMedications: List["VisitPushDischargeMedication"] = Field(None)
    DischargeMedicationsText: Union[str, None] = Field(None)
    Encounters: List["VisitPushEncounter"] = Field(None)
    EncountersText: Union[str, None] = Field(None)
    FamilyHistory: List["VisitPushFamilyHistory"] = Field(None)
    FamilyHistoryText: Union[str, None] = Field(None)
    FunctionalStatus: "VisitPushFunctionalStatus" = Field(None)
    FunctionalStatusText: Union[str, None] = Field(None)
    Goals: List["VisitPushGoal"] = Field(None)
    GoalsText: Union[str, None] = Field(None)
    Header: "VisitPushHeader" = Field(None)
    HealthConcerns: List["VisitPushHealthConcern"] = Field(None)
    HealthConcernsText: Union[str, None] = Field(None)
    HistoryOfPresentIllnessText: Union[str, None] = Field(None)
    Immunizations: List["VisitPushImmunization"] = Field(None)
    ImmunizationText: Union[str, None] = Field(None)
    InstructionsText: Union[str, None] = Field(None)
    Insurances: List["VisitPushInsurance"] = Field(None)
    InsurancesText: Union[str, None] = Field(None)
    InterventionsText: Union[str, None] = Field(None)
    MedicalEquipment: List["VisitPushMedicalEquipment"] = Field(None)
    MedicalEquipmentText: Union[str, None] = Field(None)
    MedicalHistoryText: Union[str, None] = Field(None)
    Medications: List["VisitPushMedication"] = Field(None)
    MedicationsAdministered: List["VisitPushMedicationsAdministered"] = Field(None)
    MedicationsAdministeredText: Union[str, None] = Field(None)
    MedicationsText: Union[str, None] = Field(None)
    Meta: "VisitPushMeta" = Field(...)
    NoteSections: List["VisitPushNoteSection"] = Field(None)
    ObjectiveText: Union[str, None] = Field(None)
    PhysicalExamText: Union[str, None] = Field(None)
    PlanOfCare: "VisitPushPlanOfCare" = Field(None)
    PlanOfCareText: Union[str, None] = Field(None)
    Problems: List["VisitPushProblem"] = Field(None)
    ProblemsText: Union[str, None] = Field(None)
    Procedures: "VisitPushProcedures" = Field(None)
    ProceduresText: Union[str, None] = Field(None)
    ReasonForReferralText: Union[str, None] = Field(None)
    ReasonForVisit: List["VisitPushReasonForVisit"] = Field(None)
    ReasonForVisitText: Union[str, None] = Field(None)
    ResolvedProblems: List["VisitPushResolvedProblem"] = Field(None)
    ResolvedProblemsText: Union[str, None] = Field(None)
    Results: List["VisitPushResult"] = Field(None)
    ResultText: Union[str, None] = Field(None)
    ReviewOfSystemsText: Union[str, None] = Field(None)
    SocialHistory: "VisitPushSocialHistory" = Field(None)
    SocialHistoryText: Union[str, None] = Field(None)
    SubjectiveText: Union[str, None] = Field(None)
    VitalSigns: List["VisitPushVitalSign"] = Field(None)
    VitalSignsText: Union[str, None] = Field(None)


class VisitPushAdmissionDiagnosis(RedoxAbstractModel):

    AltCodes: List["VisitPushAdmissionDiagnosisAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    IsNegativeIndicator: Union[bool, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)


class VisitPushAdmissionDiagnosisAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAdvanceDirective(RedoxAbstractModel):

    AltCodes: List["VisitPushAdvanceDirectiveAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Custodians: List["VisitPushAdvanceDirectiveCustodian"] = Field(None)
    EndDate: Union[str, None] = Field(None)
    ExternalReference: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Type: "VisitPushAdvanceDirectiveType" = Field(None)
    VerifiedBy: List["VisitPushAdvanceDirectiveVerifiedBy"] = Field(None)


class VisitPushAdvanceDirectiveAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAdvanceDirectiveCustodian(RedoxAbstractModel):

    Address: "VisitPushAdvanceDirectiveCustodianAddress" = Field(None)
    Credentials: Union[str, None] = Field(None)
    FirstName: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)


class VisitPushAdvanceDirectiveCustodianAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushAdvanceDirectiveType(RedoxAbstractModel):

    AltCodes: List["VisitPushAdvanceDirectiveTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAdvanceDirectiveTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAdvanceDirectiveVerifiedBy(RedoxAbstractModel):

    Credentials: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    FirstName: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)


class VisitPushAllergy(RedoxAbstractModel):

    Comment: Union[str, None] = Field(None)
    Criticality: "VisitPushAllergyCriticality" = Field(None)
    EndDate: Union[str, None] = Field(None)
    Reaction: List["VisitPushAllergyReaction"] = Field(None)
    Severity: "VisitPushAllergySeverity" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: "VisitPushAllergyStatus" = Field(None)
    Substance: "VisitPushAllergySubstance" = Field(None)
    Type: "VisitPushAllergyType" = Field(None)


class VisitPushAllergyCriticality(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergyReaction(RedoxAbstractModel):

    AltCodes: List["VisitPushAllergyReactionAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Severity: "VisitPushAllergyReactionSeverity" = Field(None)
    Text: Union[str, None] = Field(None)


class VisitPushAllergyReactionAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergyReactionSeverity(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergySeverity(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergyStatus(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergySubstance(RedoxAbstractModel):

    AltCodes: List["VisitPushAllergySubstanceAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergySubstanceAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergyType(RedoxAbstractModel):

    AltCodes: List["VisitPushAllergyTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAllergyTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushAssessment(RedoxAbstractModel):

    Diagnoses: List["VisitPushAssessmentDiagnosis"] = Field(None)


class VisitPushAssessmentDiagnosis(RedoxAbstractModel):

    Codes: List["VisitPushAssessmentDiagnosisCode"] = Field(None)
    DateTime: Union[str, None] = Field(None)
    IsNegativeIndicator: Union[bool, None] = Field(None)
    Value: Union[str, None] = Field(None)


class VisitPushAssessmentDiagnosisCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeDiagnosis(RedoxAbstractModel):

    AltCodes: List["VisitPushDischargeDiagnosisAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    IsNegativeIndicator: Union[bool, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)


class VisitPushDischargeDiagnosisAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedication(RedoxAbstractModel):

    Dose: "VisitPushDischargeMedicationDose" = Field(None)
    EndDate: Union[str, None] = Field(None)
    FreeTextSig: Union[str, None] = Field(None)
    Frequency: "VisitPushDischargeMedicationFrequency" = Field(None)
    Indications: List["VisitPushDischargeMedicationIndication"] = Field(None)
    IsPRN: Union[bool, None] = Field(None)
    NumberOfRefillsRemaining: Union[Number, None] = Field(None)
    Prescription: Union[bool, None] = Field(None)
    Product: "VisitPushDischargeMedicationProduct" = Field(None)
    Rate: "VisitPushDischargeMedicationRate" = Field(None)
    Route: "VisitPushDischargeMedicationRoute" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)
    SupplyOrder: "VisitPushDischargeMedicationSupplyOrder" = Field(None)


class VisitPushDischargeMedicationDose(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushDischargeMedicationFrequency(RedoxAbstractModel):

    EventCode: Union[str, None] = Field(None)
    InstitutionSpecified: Union[bool, None] = Field(None)
    Period: Union[str, None] = Field(None)
    PeriodMax: Union[str, None] = Field(None)
    Unit: Union[str, None] = Field(None)


class VisitPushDischargeMedicationIndication(RedoxAbstractModel):

    AltCodes: List["VisitPushDischargeMedicationIndicationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationIndicationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushDischargeMedicationProductAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationRate(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushDischargeMedicationRoute(RedoxAbstractModel):

    AltCodes: List["VisitPushDischargeMedicationRouteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationRouteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushDischargeMedicationSupplyOrder(RedoxAbstractModel):

    EndDate: Union[str, None] = Field(None)
    NumberOfRefillsRemaining: Union[Number, None] = Field(None)
    Quantity: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushEncounter(RedoxAbstractModel):

    DateTime: Union[str, None] = Field(None)
    Diagnosis: List["VisitPushEncounterDiagnosis"] = Field(None)
    EndDateTime: Union[str, None] = Field(None)
    Identifiers: List["VisitPushEncounterIdentifier"] = Field(None)
    Locations: List["VisitPushEncounterLocation"] = Field(None)
    Providers: List["VisitPushEncounterProvider"] = Field(None)
    ReasonForVisit: List["VisitPushEncounterReasonForVisit"] = Field(None)
    Type: "VisitPushEncounterType" = Field(None)


class VisitPushEncounterDiagnosis(RedoxAbstractModel):

    AltCodes: List["VisitPushEncounterDiagnosisAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterDiagnosisAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushEncounterLocation(RedoxAbstractModel):

    Address: "VisitPushEncounterLocationAddress" = Field(None)
    Name: Union[str, None] = Field(None)
    Type: "VisitPushEncounterLocationType" = Field(None)


class VisitPushEncounterLocationAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushEncounterLocationType(RedoxAbstractModel):

    AltCodes: List["VisitPushEncounterLocationTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterLocationTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterProvider(RedoxAbstractModel):

    Address: "VisitPushEncounterProviderAddress" = Field(None)
    Credentials: List[str] = Field(None)
    EmailAddresses: List[str] = Field(None)
    FirstName: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)
    Location: "VisitPushEncounterProviderLocation" = Field(None)
    NPI: Union[str, None] = Field(None)
    PhoneNumber: "VisitPushEncounterProviderPhoneNumber" = Field(None)
    Role: "VisitPushEncounterProviderRole" = Field(None)


class VisitPushEncounterProviderAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushEncounterProviderLocation(RedoxAbstractModel):

    Department: Union[str, None] = Field(None)
    Facility: Union[str, None] = Field(None)
    Room: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushEncounterProviderPhoneNumber(RedoxAbstractModel):

    Office: Union[str, None] = Field(None)


class VisitPushEncounterProviderRole(RedoxAbstractModel):

    AltCodes: List["VisitPushEncounterProviderRoleAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterProviderRoleAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterReasonForVisit(RedoxAbstractModel):

    AltCodes: List["VisitPushEncounterReasonForVisitAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterReasonForVisitAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterType(RedoxAbstractModel):

    AltCodes: List["VisitPushEncounterTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushEncounterTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFamilyHistory(RedoxAbstractModel):

    Problems: List["VisitPushFamilyHistoryProblem"] = Field(None)
    Relation: "VisitPushFamilyHistoryRelation" = Field(None)


class VisitPushFamilyHistoryProblem(RedoxAbstractModel):

    AgeAtOnset: Union[str, None] = Field(None)
    AltCodes: List["VisitPushFamilyHistoryProblemAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    IsCauseOfDeath: Union[bool, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Type: "VisitPushFamilyHistoryProblemType" = Field(None)


class VisitPushFamilyHistoryProblemAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFamilyHistoryProblemType(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFamilyHistoryRelation(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Demographics: "VisitPushFamilyHistoryRelationDemographics" = Field(None)
    IsDeceased: Union[bool, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFamilyHistoryRelationDemographics(RedoxAbstractModel):

    DOB: Union[str, None] = Field(None)
    Sex: Union[str, None] = Field(None)


class VisitPushFunctionalStatus(RedoxAbstractModel):

    Observations: List["VisitPushFunctionalStatusObservation"] = Field(None)
    Supplies: List["VisitPushFunctionalStatusSupply"] = Field(None)


class VisitPushFunctionalStatusObservation(RedoxAbstractModel):

    AltCodes: List["VisitPushFunctionalStatusObservationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodedValue: "VisitPushFunctionalStatusObservationCodedValue" = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    ReferenceRange: "VisitPushFunctionalStatusObservationReferenceRange" = Field(None)
    Units: Union[str, None] = Field(None)
    Value: Union[str, None] = Field(None)


class VisitPushFunctionalStatusObservationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFunctionalStatusObservationCodedValue(RedoxAbstractModel):

    AltCodes: List["VisitPushFunctionalStatusObservationCodedValueAltCode"] = Field(
        None
    )
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFunctionalStatusObservationCodedValueAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushFunctionalStatusObservationReferenceRange(RedoxAbstractModel):

    High: Union[Number, None] = Field(None)
    Low: Union[Number, None] = Field(None)
    Text: Union[str, None] = Field(None)


class VisitPushFunctionalStatusSupply(RedoxAbstractModel):

    AltCodes: List["VisitPushFunctionalStatusSupplyAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushFunctionalStatusSupplyAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoal(RedoxAbstractModel):

    AchievementStatus: "VisitPushGoalAchievementStatus" = Field(None)
    AltCodes: List["VisitPushGoalAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodedValue: "VisitPushGoalCodedValue" = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Milestones: List["VisitPushGoalMilestone"] = Field(None)
    Name: Union[str, None] = Field(None)
    Priority: "VisitPushGoalPriority" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)
    Value: Union[str, None] = Field(None)


class VisitPushGoalAchievementStatus(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalCodedValue(RedoxAbstractModel):

    AltCodes: List["VisitPushGoalCodedValueAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalCodedValueAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalMilestone(RedoxAbstractModel):

    AchievementStatus: "VisitPushGoalMilestoneAchievementStatus" = Field(None)
    AltCodes: List["VisitPushGoalMilestoneAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodedValue: "VisitPushGoalMilestoneCodedValue" = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Priority: "VisitPushGoalMilestonePriority" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)
    Value: Union[str, None] = Field(None)


class VisitPushGoalMilestoneAchievementStatus(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalMilestoneAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalMilestoneCodedValue(RedoxAbstractModel):

    AltCodes: List["VisitPushGoalMilestoneCodedValueAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalMilestoneCodedValueAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalMilestonePriority(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushGoalPriority(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeader(RedoxAbstractModel):

    DirectAddressFrom: Union[None] = Field(None)
    DirectAddressTo: Union[None] = Field(None)
    Document: "VisitPushHeaderDocument" = Field(None)
    Patient: "VisitPushHeaderPatient" = Field(None)
    PCP: "VisitPushHeaderPCP" = Field(None)


class VisitPushHeaderDocument(RedoxAbstractModel):

    Author: "VisitPushHeaderDocumentAuthor" = Field(None)
    Custodian: "VisitPushHeaderDocumentCustodian" = Field(None)
    DateTime: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)
    Locale: Union[str, None] = Field(None)
    Title: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)
    TypeCode: "VisitPushHeaderDocumentTypeCode" = Field(None)
    Visit: "VisitPushHeaderDocumentVisit" = Field(None)


class VisitPushHeaderDocumentAuthor(RedoxAbstractModel):

    Address: "VisitPushHeaderDocumentAuthorAddress" = Field(None)
    Credentials: List[str] = Field(None)
    EmailAddresses: List[str] = Field(None)
    FirstName: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)
    Location: "VisitPushHeaderDocumentAuthorLocation" = Field(None)
    PhoneNumber: "VisitPushHeaderDocumentAuthorPhoneNumber" = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderDocumentAuthorAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushHeaderDocumentAuthorLocation(RedoxAbstractModel):

    Department: Union[str, None] = Field(None)
    Facility: Union[str, None] = Field(None)
    Room: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderDocumentAuthorPhoneNumber(RedoxAbstractModel):

    Office: Union[str, None] = Field(None)


class VisitPushHeaderDocumentCustodian(RedoxAbstractModel):

    Address: "VisitPushHeaderDocumentCustodianAddress" = Field(None)
    Identifiers: List["VisitPushHeaderDocumentCustodianIdentifier"] = Field(None)
    Name: Union[None] = Field(None)
    Telecom: List["VisitPushHeaderDocumentCustodianTelecom"] = Field(None)
    Type: "VisitPushHeaderDocumentCustodianType" = Field(None)


class VisitPushHeaderDocumentCustodianAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushHeaderDocumentCustodianIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushHeaderDocumentCustodianTelecom(RedoxAbstractModel):

    System: Union[None] = Field(None)
    Use: Union[None] = Field(None)
    Value: Union[None] = Field(None)


class VisitPushHeaderDocumentCustodianType(RedoxAbstractModel):

    AltCodes: List["VisitPushHeaderDocumentCustodianTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderDocumentCustodianTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderDocumentTypeCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderDocumentVisit(RedoxAbstractModel):

    EndDateTime: Union[str, None] = Field(None)
    Location: "VisitPushHeaderDocumentVisitLocation" = Field(None)
    Reason: Union[str, None] = Field(None)
    StartDateTime: Union[str, None] = Field(None)
    Type: "VisitPushHeaderDocumentVisitType" = Field(None)
    VisitNumber: Union[str, None] = Field(None)


class VisitPushHeaderDocumentVisitLocation(RedoxAbstractModel):

    Department: Union[str, None] = Field(None)
    Facility: Union[str, None] = Field(None)
    Room: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderDocumentVisitType(RedoxAbstractModel):

    AltCodes: List["VisitPushHeaderDocumentVisitTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderDocumentVisitTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderPatient(RedoxAbstractModel):

    Demographics: "VisitPushHeaderPatientDemographics" = Field(None)
    Identifiers: List["VisitPushHeaderPatientIdentifier"] = Field(None)
    Organization: "VisitPushHeaderPatientOrganization" = Field(None)


class VisitPushHeaderPatientDemographics(RedoxAbstractModel):

    Address: "VisitPushHeaderPatientDemographicsAddress" = Field(None)
    DeathDateTime: Union[str, None] = Field(None)
    DOB: Union[str, None] = Field(None)
    EmailAddresses: List["VisitPushHeaderPatientDemographicsEmailAddress"] = Field(None)
    EthnicGroupCodes: List["VisitPushHeaderPatientDemographicsEthnicGroupCode"] = Field(
        None
    )
    Ethnicity: Union[str, None] = Field(None)
    FirstName: Union[str, None] = Field(None)
    IsDeceased: Union[bool, None] = Field(None)
    Language: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)
    MaritalStatus: Union[str, None] = Field(None)
    MiddleName: Union[str, None] = Field(None)
    PhoneNumber: "VisitPushHeaderPatientDemographicsPhoneNumber" = Field(None)
    Race: Union[str, None] = Field(None)
    RaceCodes: List["VisitPushHeaderPatientDemographicsRaceCode"] = Field(None)
    Religion: Union[str, None] = Field(None)
    Sex: Union[str, None] = Field(None)
    SSN: Union[str, None] = Field(None)


class VisitPushHeaderPatientDemographicsAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushHeaderPatientDemographicsEmailAddress(RedoxAbstractModel):

    Address: Union[str, None] = Field(None)


class VisitPushHeaderPatientDemographicsEthnicGroupCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderPatientDemographicsPhoneNumber(RedoxAbstractModel):

    Home: Union[str, None] = Field(None)
    Mobile: Union[str, None] = Field(None)


class VisitPushHeaderPatientDemographicsRaceCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderPatientIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderPatientOrganization(RedoxAbstractModel):

    Address: "VisitPushHeaderPatientOrganizationAddress" = Field(None)
    Identifiers: List["VisitPushHeaderPatientOrganizationIdentifier"] = Field(None)
    Name: Union[None] = Field(None)
    Telecom: List["VisitPushHeaderPatientOrganizationTelecom"] = Field(None)
    Type: "VisitPushHeaderPatientOrganizationType" = Field(None)


class VisitPushHeaderPatientOrganizationAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushHeaderPatientOrganizationIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushHeaderPatientOrganizationTelecom(RedoxAbstractModel):

    System: Union[None] = Field(None)
    Use: Union[None] = Field(None)
    Value: Union[None] = Field(None)


class VisitPushHeaderPatientOrganizationType(RedoxAbstractModel):

    AltCodes: List["VisitPushHeaderPatientOrganizationTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderPatientOrganizationTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushHeaderPCP(RedoxAbstractModel):

    Address: "VisitPushHeaderPCPAddress" = Field(None)
    Credentials: List[str] = Field(None)
    EmailAddresses: List[str] = Field(None)
    FirstName: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    LastName: Union[str, None] = Field(None)
    Location: "VisitPushHeaderPCPLocation" = Field(None)
    PhoneNumber: "VisitPushHeaderPCPPhoneNumber" = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderPCPAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushHeaderPCPLocation(RedoxAbstractModel):

    Department: Union[str, None] = Field(None)
    Facility: Union[str, None] = Field(None)
    Room: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushHeaderPCPPhoneNumber(RedoxAbstractModel):

    Office: Union[str, None] = Field(None)


class VisitPushHealthConcern(RedoxAbstractModel):

    AltCodes: List["VisitPushHealthConcernAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushHealthConcernAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushImmunization(RedoxAbstractModel):

    DateTime: Union[str, None] = Field(None)
    Dose: "VisitPushImmunizationDose" = Field(None)
    Product: "VisitPushImmunizationProduct" = Field(None)
    Route: "VisitPushImmunizationRoute" = Field(None)


class VisitPushImmunizationDose(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushImmunizationProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushImmunizationProductAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    LotNumber: Union[str, None] = Field(None)
    Manufacturer: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushImmunizationProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushImmunizationRoute(RedoxAbstractModel):

    AltCodes: List["VisitPushImmunizationRouteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushImmunizationRouteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushInsurance(RedoxAbstractModel):

    AgreementType: Union[str, None] = Field(None)
    Company: "VisitPushInsuranceCompany" = Field(None)
    CoverageType: Union[str, None] = Field(None)
    EffectiveDate: Union[str, None] = Field(None)
    ExpirationDate: Union[str, None] = Field(None)
    GroupName: Union[str, None] = Field(None)
    GroupNumber: Union[str, None] = Field(None)
    Insured: "VisitPushInsuranceInsured" = Field(None)
    MemberNumber: Union[str, None] = Field(None)
    Plan: "VisitPushInsurancePlan" = Field(None)
    PolicyNumber: Union[str, None] = Field(None)
    Priority: Union[str, None] = Field(None)


class VisitPushInsuranceCompany(RedoxAbstractModel):

    Address: "VisitPushInsuranceCompanyAddress" = Field(None)
    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    PhoneNumber: Union[str, None] = Field(None)


class VisitPushInsuranceCompanyAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushInsuranceInsured(RedoxAbstractModel):

    Address: "VisitPushInsuranceInsuredAddress" = Field(None)
    DOB: Union[str, None] = Field(None)
    FirstName: Union[str, None] = Field(None)
    Identifiers: List["VisitPushInsuranceInsuredIdentifier"] = Field(None)
    LastName: Union[str, None] = Field(None)
    MiddleName: Union[str, None] = Field(None)
    Relationship: Union[str, None] = Field(None)
    Sex: Union[str, None] = Field(None)
    SSN: Union[str, None] = Field(None)


class VisitPushInsuranceInsuredAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushInsuranceInsuredIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushInsurancePlan(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class VisitPushMedicalEquipment(RedoxAbstractModel):

    Product: "VisitPushMedicalEquipmentProduct" = Field(None)
    Quantity: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushMedicalEquipmentProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicalEquipmentProductAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicalEquipmentProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedication(RedoxAbstractModel):

    Dose: "VisitPushMedicationDose" = Field(None)
    EndDate: Union[str, None] = Field(None)
    FreeTextSig: Union[str, None] = Field(None)
    Frequency: "VisitPushMedicationFrequency" = Field(None)
    Indications: List["VisitPushMedicationIndication"] = Field(None)
    IsPRN: Union[bool, None] = Field(None)
    NumberOfRefillsRemaining: Union[Number, None] = Field(None)
    Prescription: Union[bool, None] = Field(None)
    Product: "VisitPushMedicationProduct" = Field(None)
    Rate: "VisitPushMedicationRate" = Field(None)
    Route: "VisitPushMedicationRoute" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)
    SupplyOrder: "VisitPushMedicationSupplyOrder" = Field(None)


class VisitPushMedicationDose(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushMedicationFrequency(RedoxAbstractModel):

    EventCode: Union[str, None] = Field(None)
    InstitutionSpecified: Union[bool, None] = Field(None)
    Period: Union[str, None] = Field(None)
    PeriodMax: Union[str, None] = Field(None)
    Unit: Union[str, None] = Field(None)


class VisitPushMedicationIndication(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicationIndicationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationIndicationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicationProductAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationRate(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushMedicationRoute(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicationRouteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationRouteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationsAdministered(RedoxAbstractModel):

    Dose: "VisitPushMedicationsAdministeredDose" = Field(None)
    EndDate: Union[str, None] = Field(None)
    Frequency: "VisitPushMedicationsAdministeredFrequency" = Field(None)
    Product: "VisitPushMedicationsAdministeredProduct" = Field(None)
    Rate: "VisitPushMedicationsAdministeredRate" = Field(None)
    ReasonNotGiven: Union[str, None] = Field(None)
    Route: "VisitPushMedicationsAdministeredRoute" = Field(None)
    StartDate: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredDose(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredFrequency(RedoxAbstractModel):

    Period: Union[str, None] = Field(None)
    Unit: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicationsAdministeredProductAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredRate(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredRoute(RedoxAbstractModel):

    AltCodes: List["VisitPushMedicationsAdministeredRouteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationsAdministeredRouteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMedicationSupplyOrder(RedoxAbstractModel):

    EndDate: Union[str, None] = Field(None)
    NumberOfRefillsRemaining: Union[Number, None] = Field(None)
    Quantity: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushMeta(RedoxAbstractModel):

    DataModel: str = Field(...)
    Destinations: List["VisitPushMetaDestination"] = Field(None)
    EventDateTime: Union[str, None] = Field(None)
    EventType: str = Field(...)
    FacilityCode: Union[str, None] = Field(None)
    Logs: List["VisitPushMetaLog"] = Field(None)
    Message: "VisitPushMetaMessage" = Field(None)
    Source: "VisitPushMetaSource" = Field(None)
    Test: Union[bool, None] = Field(None)
    Transmission: "VisitPushMetaTransmission" = Field(None)


class VisitPushMetaDestination(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMetaLog(RedoxAbstractModel):

    AttemptID: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)


class VisitPushMetaMessage(RedoxAbstractModel):

    ID: Union[Number, None] = Field(None)


class VisitPushMetaSource(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushMetaTransmission(RedoxAbstractModel):

    ID: Union[Number, None] = Field(None)


class VisitPushNoteSection(RedoxAbstractModel):

    AltCodes: List["VisitPushNoteSectionAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Notes: List["VisitPushNoteSectionNote"] = Field(None)
    Text: Union[str, None] = Field(None)
    Title: Union[str, None] = Field(None)


class VisitPushNoteSectionAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushNoteSectionNote(RedoxAbstractModel):

    AltCodes: List["VisitPushNoteSectionNoteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    ContentType: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Encounter: "VisitPushNoteSectionNoteEncounter" = Field(None)
    FileContents: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushNoteSectionNoteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushNoteSectionNoteEncounter(RedoxAbstractModel):

    DateTime: Union[str, None] = Field(None)
    EndDateTime: Union[str, None] = Field(None)
    Identifiers: List["VisitPushNoteSectionNoteEncounterIdentifier"] = Field(None)
    Type: "VisitPushNoteSectionNoteEncounterType" = Field(None)


class VisitPushNoteSectionNoteEncounterIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushNoteSectionNoteEncounterType(RedoxAbstractModel):

    AltCodes: List["VisitPushNoteSectionNoteEncounterTypeAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushNoteSectionNoteEncounterTypeAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCare(RedoxAbstractModel):

    Encounters: List["VisitPushPlanOfCareEncounter"] = Field(None)
    MedicationAdministration: List[
        "VisitPushPlanOfCareMedicationAdministration"
    ] = Field(None)
    Orders: List["VisitPushPlanOfCareOrder"] = Field(None)
    Procedures: List["VisitPushPlanOfCareProcedure"] = Field(None)
    Services: List["VisitPushPlanOfCareService"] = Field(None)
    Supplies: List["VisitPushPlanOfCareSupply"] = Field(None)


class VisitPushPlanOfCareEncounter(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareEncounterAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Identifiers: List["VisitPushPlanOfCareEncounterIdentifier"] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareEncounterAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareEncounterIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministration(RedoxAbstractModel):

    Dose: "VisitPushPlanOfCareMedicationAdministrationDose" = Field(None)
    EndDate: Union[str, None] = Field(None)
    Frequency: "VisitPushPlanOfCareMedicationAdministrationFrequency" = Field(None)
    Product: "VisitPushPlanOfCareMedicationAdministrationProduct" = Field(None)
    Rate: "VisitPushPlanOfCareMedicationAdministrationRate" = Field(None)
    Route: "VisitPushPlanOfCareMedicationAdministrationRoute" = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationDose(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationFrequency(RedoxAbstractModel):

    Period: Union[str, None] = Field(None)
    Unit: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationProduct(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareMedicationAdministrationProductAltCode"] = Field(
        None
    )
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationProductAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationRate(RedoxAbstractModel):

    Quantity: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationRoute(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareMedicationAdministrationRouteAltCode"] = Field(
        None
    )
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareMedicationAdministrationRouteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareOrder(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareOrderAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareOrderAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareProcedure(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareProcedureAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareProcedureAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareService(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareServiceAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareServiceAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushPlanOfCareSupply(RedoxAbstractModel):

    AltCodes: List["VisitPushPlanOfCareSupplyAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushPlanOfCareSupplyAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblem(RedoxAbstractModel):

    AltCodes: List["VisitPushProblemAltCode"] = Field(None)
    Category: "VisitPushProblemCategory" = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Comment: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    HealthStatus: "VisitPushProblemHealthStatus" = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: "VisitPushProblemStatus" = Field(None)


class VisitPushProblemAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblemCategory(RedoxAbstractModel):

    AltCodes: List["VisitPushProblemCategoryAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblemCategoryAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblemHealthStatus(RedoxAbstractModel):

    AltCodes: List["VisitPushProblemHealthStatusAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblemHealthStatusAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProblemStatus(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProcedures(RedoxAbstractModel):

    Observations: List["VisitPushProceduresObservation"] = Field(None)
    Procedures: List["VisitPushProceduresProcedure"] = Field(None)
    Services: List["VisitPushProceduresService"] = Field(None)


class VisitPushProceduresObservation(RedoxAbstractModel):

    AltCodes: List["VisitPushProceduresObservationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)
    TargetSite: "VisitPushProceduresObservationTargetSite" = Field(None)


class VisitPushProceduresObservationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresObservationTargetSite(RedoxAbstractModel):

    AltCodes: List["VisitPushProceduresObservationTargetSiteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresObservationTargetSiteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresProcedure(RedoxAbstractModel):

    AltCodes: List["VisitPushProceduresProcedureAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)
    TargetSite: "VisitPushProceduresProcedureTargetSite" = Field(None)


class VisitPushProceduresProcedureAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresProcedureTargetSite(RedoxAbstractModel):

    AltCodes: List["VisitPushProceduresProcedureTargetSiteAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresProcedureTargetSiteAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushProceduresService(RedoxAbstractModel):

    AltCodes: List["VisitPushProceduresServiceAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushProceduresServiceAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushReasonForVisit(RedoxAbstractModel):

    AltCodes: List["VisitPushReasonForVisitAltCode"] = Field(None)
    Category: "VisitPushReasonForVisitCategory" = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushReasonForVisitAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushReasonForVisitCategory(RedoxAbstractModel):

    AltCodes: List["VisitPushReasonForVisitCategoryAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushReasonForVisitCategoryAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResolvedProblem(RedoxAbstractModel):

    AltCodes: List["VisitPushResolvedProblemAltCode"] = Field(None)
    Category: "VisitPushResolvedProblemCategory" = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Comment: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Status: "VisitPushResolvedProblemStatus" = Field(None)


class VisitPushResolvedProblemAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResolvedProblemCategory(RedoxAbstractModel):

    AltCodes: List["VisitPushResolvedProblemCategoryAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResolvedProblemCategoryAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResolvedProblemStatus(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResult(RedoxAbstractModel):

    AltCodes: List["VisitPushResultAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Observations: List["VisitPushResultObservation"] = Field(None)
    Producer: "VisitPushResultProducer" = Field(None)
    Status: Union[str, None] = Field(None)


class VisitPushResultAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResultObservation(RedoxAbstractModel):

    AltCodes: List["VisitPushResultObservationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodedValue: "VisitPushResultObservationCodedValue" = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Interpretation: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    ReferenceRange: "VisitPushResultObservationReferenceRange" = Field(None)
    Status: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)
    Value: Union[str, None] = Field(None)
    ValueType: Union[str, None] = Field(None)


class VisitPushResultObservationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResultObservationCodedValue(RedoxAbstractModel):

    AltCodes: List["VisitPushResultObservationCodedValueAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResultObservationCodedValueAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResultObservationReferenceRange(RedoxAbstractModel):

    High: Union[str, None] = Field(None)
    Low: Union[str, None] = Field(None)
    Text: Union[str, None] = Field(None)


class VisitPushResultProducer(RedoxAbstractModel):

    Address: "VisitPushResultProducerAddress" = Field(None)
    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushResultProducerAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class VisitPushSocialHistory(RedoxAbstractModel):

    Observations: List["VisitPushSocialHistoryObservation"] = Field(None)
    Pregnancy: List["VisitPushSocialHistoryPregnancy"] = Field(None)
    TobaccoUse: List["VisitPushSocialHistoryTobaccoUse"] = Field(None)


class VisitPushSocialHistoryObservation(RedoxAbstractModel):

    AltCodes: List["VisitPushSocialHistoryObservationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)
    Value: "VisitPushSocialHistoryObservationValue" = Field(None)
    ValueText: Union[str, None] = Field(None)


class VisitPushSocialHistoryObservationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushSocialHistoryObservationValue(RedoxAbstractModel):

    AltCodes: List["VisitPushSocialHistoryObservationValueAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushSocialHistoryObservationValueAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushSocialHistoryPregnancy(RedoxAbstractModel):

    EndDate: Union[str, None] = Field(None)
    EstimatedDelivery: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)


class VisitPushSocialHistoryTobaccoUse(RedoxAbstractModel):

    AltCodes: List["VisitPushSocialHistoryTobaccoUseAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    IsSmokingStatus: Union[bool, None] = Field(None)
    Name: Union[str, None] = Field(None)
    StartDate: Union[str, None] = Field(None)


class VisitPushSocialHistoryTobaccoUseAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class VisitPushVitalSign(RedoxAbstractModel):

    DateTime: Union[str, None] = Field(None)
    Observations: List["VisitPushVitalSignObservation"] = Field(None)


class VisitPushVitalSignObservation(RedoxAbstractModel):

    AltCodes: List["VisitPushVitalSignObservationAltCode"] = Field(None)
    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    DateTime: Union[str, None] = Field(None)
    Interpretation: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Status: Union[str, None] = Field(None)
    Units: Union[str, None] = Field(None)
    Value: Union[str, None] = Field(None)


class VisitPushVitalSignObservationAltCode(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    CodeSystem: Union[str, None] = Field(None)
    CodeSystemName: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


VisitPush.update_forward_refs()
VisitPushAdmissionDiagnosis.update_forward_refs()
VisitPushAdvanceDirective.update_forward_refs()
VisitPushAdvanceDirectiveCustodian.update_forward_refs()
VisitPushAdvanceDirectiveType.update_forward_refs()
VisitPushAllergy.update_forward_refs()
VisitPushAllergyReaction.update_forward_refs()
VisitPushAllergySubstance.update_forward_refs()
VisitPushAllergyType.update_forward_refs()
VisitPushAssessment.update_forward_refs()
VisitPushAssessmentDiagnosis.update_forward_refs()
VisitPushDischargeDiagnosis.update_forward_refs()
VisitPushDischargeMedication.update_forward_refs()
VisitPushDischargeMedicationIndication.update_forward_refs()
VisitPushDischargeMedicationProduct.update_forward_refs()
VisitPushDischargeMedicationRoute.update_forward_refs()
VisitPushEncounter.update_forward_refs()
VisitPushEncounterDiagnosis.update_forward_refs()
VisitPushEncounterLocation.update_forward_refs()
VisitPushEncounterLocationType.update_forward_refs()
VisitPushEncounterProvider.update_forward_refs()
VisitPushEncounterProviderRole.update_forward_refs()
VisitPushEncounterReasonForVisit.update_forward_refs()
VisitPushEncounterType.update_forward_refs()
VisitPushFamilyHistory.update_forward_refs()
VisitPushFamilyHistoryProblem.update_forward_refs()
VisitPushFamilyHistoryRelation.update_forward_refs()
VisitPushFunctionalStatus.update_forward_refs()
VisitPushFunctionalStatusObservation.update_forward_refs()
VisitPushFunctionalStatusObservationCodedValue.update_forward_refs()
VisitPushFunctionalStatusSupply.update_forward_refs()
VisitPushGoal.update_forward_refs()
VisitPushGoalCodedValue.update_forward_refs()
VisitPushGoalMilestone.update_forward_refs()
VisitPushGoalMilestoneCodedValue.update_forward_refs()
VisitPushHeader.update_forward_refs()
VisitPushHeaderDocument.update_forward_refs()
VisitPushHeaderDocumentAuthor.update_forward_refs()
VisitPushHeaderDocumentCustodian.update_forward_refs()
VisitPushHeaderDocumentCustodianType.update_forward_refs()
VisitPushHeaderDocumentVisit.update_forward_refs()
VisitPushHeaderDocumentVisitType.update_forward_refs()
VisitPushHeaderPatient.update_forward_refs()
VisitPushHeaderPatientDemographics.update_forward_refs()
VisitPushHeaderPatientOrganization.update_forward_refs()
VisitPushHeaderPatientOrganizationType.update_forward_refs()
VisitPushHeaderPCP.update_forward_refs()
VisitPushHealthConcern.update_forward_refs()
VisitPushImmunization.update_forward_refs()
VisitPushImmunizationProduct.update_forward_refs()
VisitPushImmunizationRoute.update_forward_refs()
VisitPushInsurance.update_forward_refs()
VisitPushInsuranceCompany.update_forward_refs()
VisitPushInsuranceInsured.update_forward_refs()
VisitPushMedicalEquipment.update_forward_refs()
VisitPushMedicalEquipmentProduct.update_forward_refs()
VisitPushMedication.update_forward_refs()
VisitPushMedicationIndication.update_forward_refs()
VisitPushMedicationProduct.update_forward_refs()
VisitPushMedicationRoute.update_forward_refs()
VisitPushMedicationsAdministered.update_forward_refs()
VisitPushMedicationsAdministeredProduct.update_forward_refs()
VisitPushMedicationsAdministeredRoute.update_forward_refs()
VisitPushMeta.update_forward_refs()
VisitPushNoteSection.update_forward_refs()
VisitPushNoteSectionNote.update_forward_refs()
VisitPushNoteSectionNoteEncounter.update_forward_refs()
VisitPushNoteSectionNoteEncounterType.update_forward_refs()
VisitPushPlanOfCare.update_forward_refs()
VisitPushPlanOfCareEncounter.update_forward_refs()
VisitPushPlanOfCareMedicationAdministration.update_forward_refs()
VisitPushPlanOfCareMedicationAdministrationProduct.update_forward_refs()
VisitPushPlanOfCareMedicationAdministrationRoute.update_forward_refs()
VisitPushPlanOfCareOrder.update_forward_refs()
VisitPushPlanOfCareProcedure.update_forward_refs()
VisitPushPlanOfCareService.update_forward_refs()
VisitPushPlanOfCareSupply.update_forward_refs()
VisitPushProblem.update_forward_refs()
VisitPushProblemCategory.update_forward_refs()
VisitPushProblemHealthStatus.update_forward_refs()
VisitPushProcedures.update_forward_refs()
VisitPushProceduresObservation.update_forward_refs()
VisitPushProceduresObservationTargetSite.update_forward_refs()
VisitPushProceduresProcedure.update_forward_refs()
VisitPushProceduresProcedureTargetSite.update_forward_refs()
VisitPushProceduresService.update_forward_refs()
VisitPushReasonForVisit.update_forward_refs()
VisitPushReasonForVisitCategory.update_forward_refs()
VisitPushResolvedProblem.update_forward_refs()
VisitPushResolvedProblemCategory.update_forward_refs()
VisitPushResult.update_forward_refs()
VisitPushResultObservation.update_forward_refs()
VisitPushResultObservationCodedValue.update_forward_refs()
VisitPushResultProducer.update_forward_refs()
VisitPushSocialHistory.update_forward_refs()
VisitPushSocialHistoryObservation.update_forward_refs()
VisitPushSocialHistoryObservationValue.update_forward_refs()
VisitPushSocialHistoryTobaccoUse.update_forward_refs()
VisitPushVitalSign.update_forward_refs()
VisitPushVitalSignObservation.update_forward_refs()
