text: 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.base_types.fhir_backbone_element_base import (
      FhirBackboneElementBase,
  )
  
  if TYPE_CHECKING:
      pass
      # id_ (string)
      # extension (Extension)
      # modifierExtension (Extension)
      # status (EpisodeOfCareStatus)
      from spark_auto_mapper_fhir.value_sets.episode_of_care_status import (
          EpisodeOfCareStatusCode,
      )
  
      # period (Period)
      from spark_auto_mapper_fhir.complex_types.period import Period
  
  
  # This file is auto-generated by generate_classes so do not edit manually
  # noinspection PyPep8Naming
  class EpisodeOfCareStatusHistory(FhirBackboneElementBase):
      """
      EpisodeOfCare.StatusHistory
          An association between a patient and an organization / healthcare provider(s) during which time encounters may occur. The managing organization assumes a level of responsibility for the patient during this time.
      """
  
      # noinspection PyPep8Naming
      def __init__(
          self,
          *,
          id_: Optional[FhirString] = None,
          extension: Optional[FhirList[ExtensionBase]] = None,
          modifierExtension: Optional[FhirList[ExtensionBase]] = None,
          status: EpisodeOfCareStatusCode,
          period: Period,
      ) -> None:
          """
              An association between a patient and an organization / healthcare provider(s)
          during which time encounters may occur. The managing organization assumes a
          level of responsibility for the patient during this time.
  
              :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 status: planned | waitlist | active | onhold | finished | cancelled.
              :param period: The period during this EpisodeOfCare that the specific status applied.
          """
          super().__init__(
              id_=id_,
              extension=extension,
              modifierExtension=modifierExtension,
              status=status,
              period=period,
          )
  