from __future__ import annotations
from typing import Optional, TYPE_CHECKING

from spark_auto_mapper_fhir.fhir_types.list import FhirList
from spark_auto_mapper_fhir.fhir_types.string import FhirString
from spark_auto_mapper_fhir.extensions.extension_base import ExtensionBase
from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.base_types.fhir_backbone_element_base import (
    FhirBackboneElementBase,
)

if TYPE_CHECKING:
    pass
    # id_ (string)
    # extension (Extension)
    # modifierExtension (Extension)
    # deviceIdentifier (string)
    # issuer (uri)
    # jurisdiction (uri)
    # carrierAIDC (base64Binary)
    from spark_auto_mapper_fhir.fhir_types.base64_binary import FhirBase64Binary

    # carrierHRF (string)
    # entryType (UDIEntryType)
    from spark_auto_mapper_fhir.value_sets.udi_entry_type import UDIEntryTypeCode


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class DeviceUdiCarrier(FhirBackboneElementBase):
    """
    Device.UdiCarrier
        A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.
    """

    # noinspection PyPep8Naming
    def __init__(
        self,
        *,
        id_: Optional[FhirString] = None,
        extension: Optional[FhirList[ExtensionBase]] = None,
        modifierExtension: Optional[FhirList[ExtensionBase]] = None,
        deviceIdentifier: Optional[FhirString] = None,
        issuer: Optional[FhirUri] = None,
        jurisdiction: Optional[FhirUri] = None,
        carrierAIDC: Optional[FhirBase64Binary] = None,
        carrierHRF: Optional[FhirString] = None,
        entryType: Optional[UDIEntryTypeCode] = None,
    ) -> None:
        """
            A type of a manufactured item that is used in the provision of healthcare
        without being substantially changed through that activity. The device may be a
        medical or non-medical device.

            :param id_: None
            :param extension: May be used to represent additional information that is not part of the basic
        definition of the element. To make the use of extensions safe and manageable,
        there is a strict set of governance  applied to the definition and use of
        extensions. Though any implementer can define an extension, there is a set of
        requirements that SHALL be met as part of the definition of the extension.
            :param modifierExtension: May be used to represent additional information that is not part of the basic
        definition of the element and that modifies the understanding of the element
        in which it is contained and/or the understanding of the containing element's
        descendants. Usually modifier elements provide negation or qualification. To
        make the use of extensions safe and manageable, there is a strict set of
        governance applied to the definition and use of extensions. Though any
        implementer can define an extension, there is a set of requirements that SHALL
        be met as part of the definition of the extension. Applications processing a
        resource are required to check for modifier extensions.

        Modifier extensions SHALL NOT change the meaning of any elements on Resource
        or DomainResource (including cannot change the meaning of modifierExtension
        itself).
            :param deviceIdentifier: The device identifier (DI) is a mandatory, fixed portion of a UDI that
        identifies the labeler and the specific version or model of a device.
            :param issuer: Organization that is charged with issuing UDIs for devices.  For example, the
        US FDA issuers include :
        1) GS1:
        http://hl7.org/fhir/NamingSystem/gs1-di,
        2) HIBCC:
        http://hl7.org/fhir/NamingSystem/hibcc-dI,
        3) ICCBBA for blood containers:
        http://hl7.org/fhir/NamingSystem/iccbba-blood-di,
        4) ICCBA for other devices:
        http://hl7.org/fhir/NamingSystem/iccbba-other-di.
            :param jurisdiction: The identity of the authoritative source for UDI generation within a
        jurisdiction.  All UDIs are globally unique within a single namespace with the
        appropriate repository uri as the system.  For example,  UDIs of devices
        managed in the U.S. by the FDA, the value is
        http://hl7.org/fhir/NamingSystem/fda-udi.
            :param carrierAIDC: The full UDI carrier of the Automatic Identification and Data Capture (AIDC)
        technology representation of the barcode string as printed on the packaging of
        the device - e.g., a barcode or RFID.   Because of limitations on character
        sets in XML and the need to round-trip JSON data through XML, AIDC Formats
        *SHALL* be base64 encoded.
            :param carrierHRF: The full UDI carrier as the human readable form (HRF) representation of the
        barcode string as printed on the packaging of the device.
            :param entryType: A coded entry to indicate how the data was entered.
        """
        super().__init__(
            id_=id_,
            extension=extension,
            modifierExtension=modifierExtension,
            deviceIdentifier=deviceIdentifier,
            issuer=issuer,
            jurisdiction=jurisdiction,
            carrierAIDC=carrierAIDC,
            carrierHRF=carrierHRF,
            entryType=entryType,
        )

from __future__ import annotations
from typing import Optional, TYPE_CHECKING

from spark_auto_mapper_fhir.fhir_types.list import FhirList
from spark_auto_mapper_fhir.fhir_types.string import FhirString
from spark_auto_mapper_fhir.extensions.extension_base import ExtensionBase
from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.base_types.fhir_backbone_element_base import (
    FhirBackboneElementBase,
)

if TYPE_CHECKING:
    pass
    # id_ (string)
    # extension (Extension)
    # modifierExtension (Extension)
    # deviceIdentifier (string)
    # issuer (uri)
    # jurisdiction (uri)
    # carrierAIDC (base64Binary)
    from spark_auto_mapper_fhir.fhir_types.base64_binary import FhirBase64Binary

    # carrierHRF (string)
    # entryType (UDIEntryType)
    from spark_auto_mapper_fhir.value_sets.udi_entry_type import UDIEntryTypeCode


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class DeviceUdiCarrier(FhirBackboneElementBase):
    """
    Device.UdiCarrier
        A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device.
    """

    # noinspection PyPep8Naming
    def __init__(
        self,
        *,
        id_: Optional[FhirString] = None,
        extension: Optional[FhirList[ExtensionBase]] = None,
        modifierExtension: Optional[FhirList[ExtensionBase]] = None,
        deviceIdentifier: Optional[FhirString] = None,
        issuer: Optional[FhirUri] = None,
        jurisdiction: Optional[FhirUri] = None,
        carrierAIDC: Optional[FhirBase64Binary] = None,
        carrierHRF: Optional[FhirString] = None,
        entryType: Optional[UDIEntryTypeCode] = None,
    ) -> None:
        """
            A type of a manufactured item that is used in the provision of healthcare
        without being substantially changed through that activity. The device may be a
        medical or non-medical device.

            :param id_: None
            :param extension: May be used to represent additional information that is not part of the basic
        definition of the element. To make the use of extensions safe and manageable,
        there is a strict set of governance  applied to the definition and use of
        extensions. Though any implementer can define an extension, there is a set of
        requirements that SHALL be met as part of the definition of the extension.
            :param modifierExtension: May be used to represent additional information that is not part of the basic
        definition of the element and that modifies the understanding of the element
        in which it is contained and/or the understanding of the containing element's
        descendants. Usually modifier elements provide negation or qualification. To
        make the use of extensions safe and manageable, there is a strict set of
        governance applied to the definition and use of extensions. Though any
        implementer can define an extension, there is a set of requirements that SHALL
        be met as part of the definition of the extension. Applications processing a
        resource are required to check for modifier extensions.

        Modifier extensions SHALL NOT change the meaning of any elements on Resource
        or DomainResource (including cannot change the meaning of modifierExtension
        itself).
            :param deviceIdentifier: The device identifier (DI) is a mandatory, fixed portion of a UDI that
        identifies the labeler and the specific version or model of a device.
            :param issuer: Organization that is charged with issuing UDIs for devices.  For example, the
        US FDA issuers include :
        1) GS1:
        http://hl7.org/fhir/NamingSystem/gs1-di,
        2) HIBCC:
        http://hl7.org/fhir/NamingSystem/hibcc-dI,
        3) ICCBBA for blood containers:
        http://hl7.org/fhir/NamingSystem/iccbba-blood-di,
        4) ICCBA for other devices:
        http://hl7.org/fhir/NamingSystem/iccbba-other-di.
            :param jurisdiction: The identity of the authoritative source for UDI generation within a
        jurisdiction.  All UDIs are globally unique within a single namespace with the
        appropriate repository uri as the system.  For example,  UDIs of devices
        managed in the U.S. by the FDA, the value is
        http://hl7.org/fhir/NamingSystem/fda-udi.
            :param carrierAIDC: The full UDI carrier of the Automatic Identification and Data Capture (AIDC)
        technology representation of the barcode string as printed on the packaging of
        the device - e.g., a barcode or RFID.   Because of limitations on character
        sets in XML and the need to round-trip JSON data through XML, AIDC Formats
        *SHALL* be base64 encoded.
            :param carrierHRF: The full UDI carrier as the human readable form (HRF) representation of the
        barcode string as printed on the packaging of the device.
            :param entryType: A coded entry to indicate how the data was entered.
        """
        super().__init__(
            id_=id_,
            extension=extension,
            modifierExtension=modifierExtension,
            deviceIdentifier=deviceIdentifier,
            issuer=issuer,
            jurisdiction=jurisdiction,
            carrierAIDC=carrierAIDC,
            carrierHRF=carrierHRF,
            entryType=entryType,
        )

# id_ (string) # extension (Extension) # modifierExtension (Extension) # deviceIdentifier (string) # issuer (uri) # jurisdiction (uri) # carrierAIDC (base64Binary) # carrierHRF (string) # entryType (UDIEntryType) # This file is auto-generated by generate_classes so do not edit manually # noinspection PyPep8Naming Device.UdiCarrier         A type of a manufactured item that is used in the provision of healthcare without being substantially changed through that activity. The device may be a medical or non-medical device. # noinspection PyPep8Naming A type of a manufactured item that is used in the provision of healthcare         without being substantially changed through that activity. The device may be a         medical or non-medical device.              :param id_: None             :param extension: May be used to represent additional information that is not part of the basic         definition of the element. To make the use of extensions safe and manageable,         there is a strict set of governance  applied to the definition and use of         extensions. Though any implementer can define an extension, there is a set of         requirements that SHALL be met as part of the definition of the extension.             :param modifierExtension: May be used to represent additional information that is not part of the basic         definition of the element and that modifies the understanding of the element         in which it is contained and/or the understanding of the containing element's         descendants. Usually modifier elements provide negation or qualification. To         make the use of extensions safe and manageable, there is a strict set of         governance applied to the definition and use of extensions. Though any         implementer can define an extension, there is a set of requirements that SHALL         be met as part of the definition of the extension. Applications processing a         resource are required to check for modifier extensions.          Modifier extensions SHALL NOT change the meaning of any elements on Resource         or DomainResource (including cannot change the meaning of modifierExtension         itself).             :param deviceIdentifier: The device identifier (DI) is a mandatory, fixed portion of a UDI that         identifies the labeler and the specific version or model of a device.             :param issuer: Organization that is charged with issuing UDIs for devices.  For example, the         US FDA issuers include :         1) GS1:         http://hl7.org/fhir/NamingSystem/gs1-di,         2) HIBCC:         http://hl7.org/fhir/NamingSystem/hibcc-dI,         3) ICCBBA for blood containers:         http://hl7.org/fhir/NamingSystem/iccbba-blood-di,         4) ICCBA for other devices:         http://hl7.org/fhir/NamingSystem/iccbba-other-di.             :param jurisdiction: The identity of the authoritative source for UDI generation within a         jurisdiction.  All UDIs are globally unique within a single namespace with the         appropriate repository uri as the system.  For example,  UDIs of devices         managed in the U.S. by the FDA, the value is         http://hl7.org/fhir/NamingSystem/fda-udi.             :param carrierAIDC: The full UDI carrier of the Automatic Identification and Data Capture (AIDC)         technology representation of the barcode string as printed on the packaging of         the device - e.g., a barcode or RFID.   Because of limitations on character         sets in XML and the need to round-trip JSON data through XML, AIDC Formats         *SHALL* be base64 encoded.             :param carrierHRF: The full UDI carrier as the human readable form (HRF) representation of the         barcode string as printed on the packaging of the device.             :param entryType: A coded entry to indicate how the data was entered.