text: from __future__ import annotations
  from typing import Optional, TYPE_CHECKING, Union
  
  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.base_types.fhir_backbone_element_base import (
      FhirBackboneElementBase,
  )
  
  if TYPE_CHECKING:
      pass
      # id_ (string)
      # extension (Extension)
      # modifierExtension (Extension)
      # condition (Reference)
      from spark_auto_mapper_fhir.complex_types.reference import Reference
  
      # Imports for References for condition
      from spark_auto_mapper_fhir.resources.condition import Condition
      from spark_auto_mapper_fhir.resources.procedure import Procedure
  
      # use (CodeableConcept)
      from spark_auto_mapper_fhir.complex_types.codeable_concept import CodeableConcept
  
      # End Import for References for use
      # Import for CodeableConcept for use
      from spark_auto_mapper_fhir.value_sets.diagnosis_role import DiagnosisRoleCode
  
      # End Import for CodeableConcept for use
      # rank (positiveInt)
      from spark_auto_mapper_fhir.fhir_types.positive_int import FhirPositiveInt
  
  
  # This file is auto-generated by generate_classes so do not edit manually
  # noinspection PyPep8Naming
  class EncounterDiagnosis(FhirBackboneElementBase):
      """
      Encounter.Diagnosis
          An interaction between a patient and healthcare provider(s) for the purpose of providing healthcare service(s) or assessing the health status of a patient.
      """
  
      # noinspection PyPep8Naming
      def __init__(
          self,
          *,
          id_: Optional[FhirString] = None,
          extension: Optional[FhirList[ExtensionBase]] = None,
          modifierExtension: Optional[FhirList[ExtensionBase]] = None,
          condition: Reference[Union[Condition, Procedure]],
          use: Optional[CodeableConcept[DiagnosisRoleCode]] = None,
          rank: Optional[FhirPositiveInt] = None,
      ) -> None:
          """
              An interaction between a patient and healthcare provider(s) for the purpose of
          providing healthcare service(s) or assessing the health status of a patient.
  
              :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 condition: Reason the encounter takes place, as specified using information from another
          resource. For admissions, this is the admission diagnosis. The indication will
          typically be a Condition (with other resources referenced in the
          evidence.detail), or a Procedure.
              :param use: Role that this diagnosis has within the encounter (e.g. admission, billing,
          discharge …).
              :param rank: Ranking of the diagnosis (for each role type).
          """
          super().__init__(
              id_=id_,
              extension=extension,
              modifierExtension=modifierExtension,
              condition=condition,
              use=use,
              rank=rank,
          )
  