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)
      # code (generic_type)
      from spark_auto_mapper_fhir.value_sets.generic_type import GenericTypeCode
  
      # display (string)
      # designation (ValueSet.Designation)
      from spark_auto_mapper_fhir.backbone_elements.value_set_designation import (
          ValueSetDesignation,
      )
  
  
  # This file is auto-generated by generate_classes so do not edit manually
  # noinspection PyPep8Naming
  class ValueSetConcept(FhirBackboneElementBase):
      """
      ValueSet.Concept
          A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).
      """
  
      # noinspection PyPep8Naming
      def __init__(
          self,
          *,
          id_: Optional[FhirString] = None,
          extension: Optional[FhirList[ExtensionBase]] = None,
          modifierExtension: Optional[FhirList[ExtensionBase]] = None,
          code: GenericTypeCode,
          display: Optional[FhirString] = None,
          designation: Optional[FhirList[ValueSetDesignation]] = None,
      ) -> None:
          """
              A ValueSet resource instance specifies a set of codes drawn from one or more
          code systems, intended for use in a particular context. Value sets link
          between [[[CodeSystem]]] definitions and their use in [coded
          elements](terminologies.html).
  
              :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 code: Specifies a code for the concept to be included or excluded.
              :param display: The text to display to the user for this concept in the context of this
          valueset. If no display is provided, then applications using the value set use
          the display specified for the code by the system.
              :param designation: Additional representations for this concept when used in this value set -
          other languages, aliases, specialized purposes, used for particular purposes,
          etc.
          """
          super().__init__(
              id_=id_,
              extension=extension,
              modifierExtension=modifierExtension,
              code=code,
              display=display,
              designation=designation,
          )
  