from __future__ import annotations

from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.value_sets.generic_type import GenericTypeCode
from spark_auto_mapper.type_definitions.defined_types import AutoMapperTextInputType


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class OrganizationTypeCode(GenericTypeCode):
    """
    OrganizationType
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
        This example value set defines a set of codes that can be used to indicate a
    type of organization.
    """

    def __init__(self, value: AutoMapperTextInputType):
        super().__init__(value=value)

    """
    http://terminology.hl7.org/CodeSystem/organization-type
    """
    codeset: FhirUri = "http://terminology.hl7.org/CodeSystem/organization-type"


class OrganizationTypeCodeValues:
    """
    An organization that provides healthcare services.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """

    HealthcareProvider = OrganizationTypeCode("prov")
    """
    A department or ward within a hospital (Generally is not applicable to top
    level organizations)
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    HospitalDepartment = OrganizationTypeCode("dept")
    """
    An organizational team is usually a grouping of practitioners that perform a
    specific function within an organization (which could be a top level
    organization, or a department).
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    OrganizationalTeam = OrganizationTypeCode("team")
    """
    A political body, often used when including organization records for
    government bodies such as a Federal Government, State or Local Government.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    Government = OrganizationTypeCode("govt")
    """
    A company that provides insurance to its subscribers that may include
    healthcare related policies.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    InsuranceCompany = OrganizationTypeCode("ins")
    """
    A company, charity, or governmental organization, which processes claims
    and/or issues payments to providers on behalf of patients or groups of
    patients.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    Payer = OrganizationTypeCode("pay")
    """
    An educational institution that provides education or research facilities.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    EducationalInstitute = OrganizationTypeCode("edu")
    """
    An organization that is identified as a part of a religious institution.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    ReligiousInstitution = OrganizationTypeCode("reli")
    """
    An organization that is identified as a Pharmaceutical/Clinical Research
    Sponsor.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    ClinicalResearchSponsor = OrganizationTypeCode("crs")
    """
    An un-incorporated community group.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    CommunityGroup = OrganizationTypeCode("cg")
    """
    An organization that is a registered business or corporation but not
    identified by other types.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    Non_HealthcareBusinessOrCorporation = OrganizationTypeCode("bus")
    """
    Other type of organization not already specified.
    From: http://terminology.hl7.org/CodeSystem/organization-type in valuesets.xml
    """
    Other = OrganizationTypeCode("other")
