<filename>spark_auto_mapper_fhir/resources/document_reference.py
from __future__ import annotations
from typing import Optional, TYPE_CHECKING, Union

# noinspection PyPackageRequirements
from pyspark.sql.types import StructType, DataType
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.complex_types.meta import Meta
from spark_auto_mapper_fhir.extensions.extension_base import ExtensionBase
from spark_auto_mapper_fhir.fhir_types.id import FhirId
from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.base_types.fhir_resource_base import FhirResourceBase
from spark_fhir_schemas.r4.resources.documentreference import DocumentReferenceSchema

if TYPE_CHECKING:
    pass
    # id_ (id)
    # meta (Meta)
    # implicitRules (uri)
    # language (CommonLanguages)
    from spark_auto_mapper_fhir.value_sets.common_languages import CommonLanguagesCode

    # text (Narrative)
    from spark_auto_mapper_fhir.complex_types.narrative import Narrative

    # contained (ResourceContainer)
    from spark_auto_mapper_fhir.complex_types.resource_container import (
        ResourceContainer,
    )

    # extension (Extension)
    # modifierExtension (Extension)
    # masterIdentifier (Identifier)
    from spark_auto_mapper_fhir.complex_types.identifier import Identifier

    # identifier (Identifier)
    # status (DocumentReferenceStatus)
    from spark_auto_mapper_fhir.value_sets.document_reference_status import (
        DocumentReferenceStatusCode,
    )

    # docStatus (CompositionStatus)
    from spark_auto_mapper_fhir.value_sets.composition_status import (
        CompositionStatusCode,
    )

    # type_ (CodeableConcept)
    from spark_auto_mapper_fhir.complex_types.codeable_concept import CodeableConcept

    # Import for CodeableConcept for type_
    from spark_auto_mapper_fhir.value_sets.document_type_value_set import (
        DocumentTypeValueSetCode,
    )

    # End Import for CodeableConcept for type_
    # category (CodeableConcept)
    # Import for CodeableConcept for category
    from spark_auto_mapper_fhir.value_sets.document_class_value_set import (
        DocumentClassValueSetCode,
    )

    # End Import for CodeableConcept for category
    # subject (Reference)
    from spark_auto_mapper_fhir.complex_types.reference import Reference

    # Imports for References for subject
    from spark_auto_mapper_fhir.resources.patient import Patient
    from spark_auto_mapper_fhir.resources.practitioner import Practitioner
    from spark_auto_mapper_fhir.resources.group import Group
    from spark_auto_mapper_fhir.resources.device import Device

    # date (instant)
    from spark_auto_mapper_fhir.fhir_types.instant import FhirInstant

    # author (Reference)
    # Imports for References for author
    from spark_auto_mapper_fhir.resources.practitioner_role import PractitionerRole
    from spark_auto_mapper_fhir.resources.organization import Organization
    from spark_auto_mapper_fhir.resources.related_person import RelatedPerson

    # authenticator (Reference)
    # Imports for References for authenticator
    # custodian (Reference)
    # Imports for References for custodian
    # relatesTo (DocumentReference.RelatesTo)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_relates_to import (
        DocumentReferenceRelatesTo,
    )

    # description (string)
    # securityLabel (CodeableConcept)
    # Import for CodeableConcept for securityLabel
    from spark_auto_mapper_fhir.value_sets.all_security_labels import (
        AllSecurityLabelsCode,
    )

    # End Import for CodeableConcept for securityLabel
    # content (DocumentReference.Content)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_content import (
        DocumentReferenceContent,
    )

    # context (DocumentReference.Context)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_context import (
        DocumentReferenceContext,
    )


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class DocumentReference(FhirResourceBase):
    """
    DocumentReference
    documentreference.xsd
        A reference to a document of any kind for any purpose. Provides metadata about
    the document so that the document can be discovered and managed. The scope of
    a document is any seralized object with a mime-type, so includes formal
    patient centric documents (CDA), cliical notes, scanned paper, and non-patient
    specific documents like policy text.
        If the element is present, it must have either a @value, an @id, or extensions
    """

    # noinspection PyPep8Naming
    def __init__(
        self,
        *,
        id_: Optional[FhirId] = None,
        meta: Optional[Meta] = None,
        implicitRules: Optional[FhirUri] = None,
        language: Optional[CommonLanguagesCode] = None,
        text: Optional[Narrative] = None,
        contained: Optional[FhirList[ResourceContainer]] = None,
        extension: Optional[FhirList[ExtensionBase]] = None,
        modifierExtension: Optional[FhirList[ExtensionBase]] = None,
        masterIdentifier: Optional[Identifier] = None,
        identifier: Optional[FhirList[Identifier]] = None,
        status: DocumentReferenceStatusCode,
        docStatus: Optional[CompositionStatusCode] = None,
        type_: Optional[CodeableConcept[DocumentTypeValueSetCode]] = None,
        category: Optional[FhirList[CodeableConcept[DocumentClassValueSetCode]]] = None,
        subject: Optional[
            Reference[Union[Patient, Practitioner, Group, Device]]
        ] = None,
        date: Optional[FhirInstant] = None,
        author: Optional[
            FhirList[
                Reference[
                    Union[
                        Practitioner,
                        PractitionerRole,
                        Organization,
                        Device,
                        Patient,
                        RelatedPerson,
                    ]
                ]
            ]
        ] = None,
        authenticator: Optional[
            Reference[Union[Practitioner, PractitionerRole, Organization]]
        ] = None,
        custodian: Optional[Reference[Organization]] = None,
        relatesTo: Optional[FhirList[DocumentReferenceRelatesTo]] = None,
        description: Optional[FhirString] = None,
        securityLabel: Optional[
            FhirList[CodeableConcept[AllSecurityLabelsCode]]
        ] = None,
        content: FhirList[DocumentReferenceContent],
        context: Optional[DocumentReferenceContext] = None,
    ) -> None:
        """
            A reference to a document of any kind for any purpose. Provides metadata about
        the document so that the document can be discovered and managed. The scope of
        a document is any seralized object with a mime-type, so includes formal
        patient centric documents (CDA), cliical notes, scanned paper, and non-patient
        specific documents like policy text.
            If the element is present, it must have either a @value, an @id, or extensions

            :param id_: The logical id of the resource, as used in the URL for the resource. Once
        assigned, this value never changes.
            :param meta: The metadata about the resource. This is content that is maintained by the
        infrastructure. Changes to the content might not always be associated with
        version changes to the resource.
            :param implicitRules: A reference to a set of rules that were followed when the resource was
        constructed, and which must be understood when processing the content. Often,
        this is a reference to an implementation guide that defines the special rules
        along with other profiles etc.
            :param language: The base language in which the resource is written.
            :param text: A human-readable narrative that contains a summary of the resource and can be
        used to represent the content of the resource to a human. The narrative need
        not encode all the structured data, but is required to contain sufficient
        detail to make it "clinically safe" for a human to just read the narrative.
        Resource definitions may define what content should be represented in the
        narrative to ensure clinical safety.
            :param contained: These resources do not have an independent existence apart from the resource
        that contains them - they cannot be identified independently, and nor can they
        have their own independent transaction scope.
            :param extension: May be used to represent additional information that is not part of the basic
        definition of the resource. 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 resource and that modifies the understanding of the element
        that contains it 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 is allowed to 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 masterIdentifier: Document identifier as assigned by the source of the document. This identifier
        is specific to this version of the document. This unique identifier may be
        used elsewhere to identify this version of the document.
            :param identifier: Other identifiers associated with the document, including version independent
        identifiers.
            :param status: The status of this document reference.
            :param docStatus: The status of the underlying document.
            :param type_: Specifies the particular kind of document referenced  (e.g. History and
        Physical, Discharge Summary, Progress Note). This usually equates to the
        purpose of making the document referenced.
            :param category: A categorization for the type of document referenced - helps for indexing and
        searching. This may be implied by or derived from the code specified in the
        DocumentReference.type.
            :param subject: Who or what the document is about. The document can be about a person,
        (patient or healthcare practitioner), a device (e.g. a machine) or even a
        group of subjects (such as a document about a herd of farm animals, or a set
        of patients that share a common exposure).
            :param date: When the document reference was created.
            :param author: Identifies who is responsible for adding the information to the document.
            :param authenticator: Which person or organization authenticates that this document is valid.
            :param custodian: Identifies the organization or group who is responsible for ongoing
        maintenance of and access to the document.
            :param relatesTo: Relationships that this document has with other document references that
        already exist.
            :param description: Human-readable description of the source document.
            :param securityLabel: A set of Security-Tag codes specifying the level of privacy/security of the
        Document. Note that DocumentReference.meta.security contains the security
        labels of the "reference" to the document, while
        DocumentReference.securityLabel contains a snapshot of the security labels on
        the document the reference refers to.
            :param content: The document and format referenced. There may be multiple content element
        repetitions, each with a different format.
            :param context: The clinical context in which the document was prepared.
        """
        super().__init__(
            resourceType="DocumentReference",
            id_=id_,
            meta=meta,
            implicitRules=implicitRules,
            language=language,
            text=text,
            contained=contained,
            extension=extension,
            modifierExtension=modifierExtension,
            masterIdentifier=masterIdentifier,
            identifier=identifier,
            status=status,
            docStatus=docStatus,
            type_=type_,
            category=category,
            subject=subject,
            date=date,
            author=author,
            authenticator=authenticator,
            custodian=custodian,
            relatesTo=relatesTo,
            description=description,
            securityLabel=securityLabel,
            content=content,
            context=context,
        )

    def get_schema(
        self, include_extension: bool
    ) -> Optional[Union[StructType, DataType]]:
        return DocumentReferenceSchema.get_schema(include_extension=include_extension)

<filename>spark_auto_mapper_fhir/resources/document_reference.py
from __future__ import annotations
from typing import Optional, TYPE_CHECKING, Union

# noinspection PyPackageRequirements
from pyspark.sql.types import StructType, DataType
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.complex_types.meta import Meta
from spark_auto_mapper_fhir.extensions.extension_base import ExtensionBase
from spark_auto_mapper_fhir.fhir_types.id import FhirId
from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.base_types.fhir_resource_base import FhirResourceBase
from spark_fhir_schemas.r4.resources.documentreference import DocumentReferenceSchema

if TYPE_CHECKING:
    pass
    # id_ (id)
    # meta (Meta)
    # implicitRules (uri)
    # language (CommonLanguages)
    from spark_auto_mapper_fhir.value_sets.common_languages import CommonLanguagesCode

    # text (Narrative)
    from spark_auto_mapper_fhir.complex_types.narrative import Narrative

    # contained (ResourceContainer)
    from spark_auto_mapper_fhir.complex_types.resource_container import (
        ResourceContainer,
    )

    # extension (Extension)
    # modifierExtension (Extension)
    # masterIdentifier (Identifier)
    from spark_auto_mapper_fhir.complex_types.identifier import Identifier

    # identifier (Identifier)
    # status (DocumentReferenceStatus)
    from spark_auto_mapper_fhir.value_sets.document_reference_status import (
        DocumentReferenceStatusCode,
    )

    # docStatus (CompositionStatus)
    from spark_auto_mapper_fhir.value_sets.composition_status import (
        CompositionStatusCode,
    )

    # type_ (CodeableConcept)
    from spark_auto_mapper_fhir.complex_types.codeable_concept import CodeableConcept

    # Import for CodeableConcept for type_
    from spark_auto_mapper_fhir.value_sets.document_type_value_set import (
        DocumentTypeValueSetCode,
    )

    # End Import for CodeableConcept for type_
    # category (CodeableConcept)
    # Import for CodeableConcept for category
    from spark_auto_mapper_fhir.value_sets.document_class_value_set import (
        DocumentClassValueSetCode,
    )

    # End Import for CodeableConcept for category
    # subject (Reference)
    from spark_auto_mapper_fhir.complex_types.reference import Reference

    # Imports for References for subject
    from spark_auto_mapper_fhir.resources.patient import Patient
    from spark_auto_mapper_fhir.resources.practitioner import Practitioner
    from spark_auto_mapper_fhir.resources.group import Group
    from spark_auto_mapper_fhir.resources.device import Device

    # date (instant)
    from spark_auto_mapper_fhir.fhir_types.instant import FhirInstant

    # author (Reference)
    # Imports for References for author
    from spark_auto_mapper_fhir.resources.practitioner_role import PractitionerRole
    from spark_auto_mapper_fhir.resources.organization import Organization
    from spark_auto_mapper_fhir.resources.related_person import RelatedPerson

    # authenticator (Reference)
    # Imports for References for authenticator
    # custodian (Reference)
    # Imports for References for custodian
    # relatesTo (DocumentReference.RelatesTo)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_relates_to import (
        DocumentReferenceRelatesTo,
    )

    # description (string)
    # securityLabel (CodeableConcept)
    # Import for CodeableConcept for securityLabel
    from spark_auto_mapper_fhir.value_sets.all_security_labels import (
        AllSecurityLabelsCode,
    )

    # End Import for CodeableConcept for securityLabel
    # content (DocumentReference.Content)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_content import (
        DocumentReferenceContent,
    )

    # context (DocumentReference.Context)
    from spark_auto_mapper_fhir.backbone_elements.document_reference_context import (
        DocumentReferenceContext,
    )


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class DocumentReference(FhirResourceBase):
    """
    DocumentReference
    documentreference.xsd
        A reference to a document of any kind for any purpose. Provides metadata about
    the document so that the document can be discovered and managed. The scope of
    a document is any seralized object with a mime-type, so includes formal
    patient centric documents (CDA), cliical notes, scanned paper, and non-patient
    specific documents like policy text.
        If the element is present, it must have either a @value, an @id, or extensions
    """

    # noinspection PyPep8Naming
    def __init__(
        self,
        *,
        id_: Optional[FhirId] = None,
        meta: Optional[Meta] = None,
        implicitRules: Optional[FhirUri] = None,
        language: Optional[CommonLanguagesCode] = None,
        text: Optional[Narrative] = None,
        contained: Optional[FhirList[ResourceContainer]] = None,
        extension: Optional[FhirList[ExtensionBase]] = None,
        modifierExtension: Optional[FhirList[ExtensionBase]] = None,
        masterIdentifier: Optional[Identifier] = None,
        identifier: Optional[FhirList[Identifier]] = None,
        status: DocumentReferenceStatusCode,
        docStatus: Optional[CompositionStatusCode] = None,
        type_: Optional[CodeableConcept[DocumentTypeValueSetCode]] = None,
        category: Optional[FhirList[CodeableConcept[DocumentClassValueSetCode]]] = None,
        subject: Optional[
            Reference[Union[Patient, Practitioner, Group, Device]]
        ] = None,
        date: Optional[FhirInstant] = None,
        author: Optional[
            FhirList[
                Reference[
                    Union[
                        Practitioner,
                        PractitionerRole,
                        Organization,
                        Device,
                        Patient,
                        RelatedPerson,
                    ]
                ]
            ]
        ] = None,
        authenticator: Optional[
            Reference[Union[Practitioner, PractitionerRole, Organization]]
        ] = None,
        custodian: Optional[Reference[Organization]] = None,
        relatesTo: Optional[FhirList[DocumentReferenceRelatesTo]] = None,
        description: Optional[FhirString] = None,
        securityLabel: Optional[
            FhirList[CodeableConcept[AllSecurityLabelsCode]]
        ] = None,
        content: FhirList[DocumentReferenceContent],
        context: Optional[DocumentReferenceContext] = None,
    ) -> None:
        """
            A reference to a document of any kind for any purpose. Provides metadata about
        the document so that the document can be discovered and managed. The scope of
        a document is any seralized object with a mime-type, so includes formal
        patient centric documents (CDA), cliical notes, scanned paper, and non-patient
        specific documents like policy text.
            If the element is present, it must have either a @value, an @id, or extensions

            :param id_: The logical id of the resource, as used in the URL for the resource. Once
        assigned, this value never changes.
            :param meta: The metadata about the resource. This is content that is maintained by the
        infrastructure. Changes to the content might not always be associated with
        version changes to the resource.
            :param implicitRules: A reference to a set of rules that were followed when the resource was
        constructed, and which must be understood when processing the content. Often,
        this is a reference to an implementation guide that defines the special rules
        along with other profiles etc.
            :param language: The base language in which the resource is written.
            :param text: A human-readable narrative that contains a summary of the resource and can be
        used to represent the content of the resource to a human. The narrative need
        not encode all the structured data, but is required to contain sufficient
        detail to make it "clinically safe" for a human to just read the narrative.
        Resource definitions may define what content should be represented in the
        narrative to ensure clinical safety.
            :param contained: These resources do not have an independent existence apart from the resource
        that contains them - they cannot be identified independently, and nor can they
        have their own independent transaction scope.
            :param extension: May be used to represent additional information that is not part of the basic
        definition of the resource. 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 resource and that modifies the understanding of the element
        that contains it 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 is allowed to 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 masterIdentifier: Document identifier as assigned by the source of the document. This identifier
        is specific to this version of the document. This unique identifier may be
        used elsewhere to identify this version of the document.
            :param identifier: Other identifiers associated with the document, including version independent
        identifiers.
            :param status: The status of this document reference.
            :param docStatus: The status of the underlying document.
            :param type_: Specifies the particular kind of document referenced  (e.g. History and
        Physical, Discharge Summary, Progress Note). This usually equates to the
        purpose of making the document referenced.
            :param category: A categorization for the type of document referenced - helps for indexing and
        searching. This may be implied by or derived from the code specified in the
        DocumentReference.type.
            :param subject: Who or what the document is about. The document can be about a person,
        (patient or healthcare practitioner), a device (e.g. a machine) or even a
        group of subjects (such as a document about a herd of farm animals, or a set
        of patients that share a common exposure).
            :param date: When the document reference was created.
            :param author: Identifies who is responsible for adding the information to the document.
            :param authenticator: Which person or organization authenticates that this document is valid.
            :param custodian: Identifies the organization or group who is responsible for ongoing
        maintenance of and access to the document.
            :param relatesTo: Relationships that this document has with other document references that
        already exist.
            :param description: Human-readable description of the source document.
            :param securityLabel: A set of Security-Tag codes specifying the level of privacy/security of the
        Document. Note that DocumentReference.meta.security contains the security
        labels of the "reference" to the document, while
        DocumentReference.securityLabel contains a snapshot of the security labels on
        the document the reference refers to.
            :param content: The document and format referenced. There may be multiple content element
        repetitions, each with a different format.
            :param context: The clinical context in which the document was prepared.
        """
        super().__init__(
            resourceType="DocumentReference",
            id_=id_,
            meta=meta,
            implicitRules=implicitRules,
            language=language,
            text=text,
            contained=contained,
            extension=extension,
            modifierExtension=modifierExtension,
            masterIdentifier=masterIdentifier,
            identifier=identifier,
            status=status,
            docStatus=docStatus,
            type_=type_,
            category=category,
            subject=subject,
            date=date,
            author=author,
            authenticator=authenticator,
            custodian=custodian,
            relatesTo=relatesTo,
            description=description,
            securityLabel=securityLabel,
            content=content,
            context=context,
        )

    def get_schema(
        self, include_extension: bool
    ) -> Optional[Union[StructType, DataType]]:
        return DocumentReferenceSchema.get_schema(include_extension=include_extension)

# noinspection PyPackageRequirements # id_ (id) # meta (Meta) # implicitRules (uri) # language (CommonLanguages) # text (Narrative) # contained (ResourceContainer) # extension (Extension) # modifierExtension (Extension) # masterIdentifier (Identifier) # identifier (Identifier) # status (DocumentReferenceStatus) # docStatus (CompositionStatus) # type_ (CodeableConcept) # Import for CodeableConcept for type_ # End Import for CodeableConcept for type_ # category (CodeableConcept) # Import for CodeableConcept for category # End Import for CodeableConcept for category # subject (Reference) # Imports for References for subject # date (instant) # author (Reference) # Imports for References for author # authenticator (Reference) # Imports for References for authenticator # custodian (Reference) # Imports for References for custodian # relatesTo (DocumentReference.RelatesTo) # description (string) # securityLabel (CodeableConcept) # Import for CodeableConcept for securityLabel # End Import for CodeableConcept for securityLabel # content (DocumentReference.Content) # context (DocumentReference.Context) # This file is auto-generated by generate_classes so do not edit manually # noinspection PyPep8Naming DocumentReference     documentreference.xsd         A reference to a document of any kind for any purpose. Provides metadata about     the document so that the document can be discovered and managed. The scope of     a document is any seralized object with a mime-type, so includes formal     patient centric documents (CDA), cliical notes, scanned paper, and non-patient     specific documents like policy text.         If the element is present, it must have either a @value, an @id, or extensions # noinspection PyPep8Naming A reference to a document of any kind for any purpose. Provides metadata about         the document so that the document can be discovered and managed. The scope of         a document is any seralized object with a mime-type, so includes formal         patient centric documents (CDA), cliical notes, scanned paper, and non-patient         specific documents like policy text.             If the element is present, it must have either a @value, an @id, or extensions              :param id_: The logical id of the resource, as used in the URL for the resource. Once         assigned, this value never changes.             :param meta: The metadata about the resource. This is content that is maintained by the         infrastructure. Changes to the content might not always be associated with         version changes to the resource.             :param implicitRules: A reference to a set of rules that were followed when the resource was         constructed, and which must be understood when processing the content. Often,         this is a reference to an implementation guide that defines the special rules         along with other profiles etc.             :param language: The base language in which the resource is written.             :param text: A human-readable narrative that contains a summary of the resource and can be         used to represent the content of the resource to a human. The narrative need         not encode all the structured data, but is required to contain sufficient         detail to make it "clinically safe" for a human to just read the narrative.         Resource definitions may define what content should be represented in the         narrative to ensure clinical safety.             :param contained: These resources do not have an independent existence apart from the resource         that contains them - they cannot be identified independently, and nor can they         have their own independent transaction scope.             :param extension: May be used to represent additional information that is not part of the basic         definition of the resource. 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 resource and that modifies the understanding of the element         that contains it 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 is allowed to 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 masterIdentifier: Document identifier as assigned by the source of the document. This identifier         is specific to this version of the document. This unique identifier may be         used elsewhere to identify this version of the document.             :param identifier: Other identifiers associated with the document, including version independent         identifiers.             :param status: The status of this document reference.             :param docStatus: The status of the underlying document.             :param type_: Specifies the particular kind of document referenced  (e.g. History and         Physical, Discharge Summary, Progress Note). This usually equates to the         purpose of making the document referenced.             :param category: A categorization for the type of document referenced - helps for indexing and         searching. This may be implied by or derived from the code specified in the         DocumentReference.type.             :param subject: Who or what the document is about. The document can be about a person,         (patient or healthcare practitioner), a device (e.g. a machine) or even a         group of subjects (such as a document about a herd of farm animals, or a set         of patients that share a common exposure).             :param date: When the document reference was created.             :param author: Identifies who is responsible for adding the information to the document.             :param authenticator: Which person or organization authenticates that this document is valid.             :param custodian: Identifies the organization or group who is responsible for ongoing         maintenance of and access to the document.             :param relatesTo: Relationships that this document has with other document references that         already exist.             :param description: Human-readable description of the source document.             :param securityLabel: A set of Security-Tag codes specifying the level of privacy/security of the         Document. Note that DocumentReference.meta.security contains the security         labels of the "reference" to the document, while         DocumentReference.securityLabel contains a snapshot of the security labels on         the document the reference refers to.             :param content: The document and format referenced. There may be multiple content element         repetitions, each with a different format.             :param context: The clinical context in which the document was prepared.