from __future__ import annotations

from spark_auto_mapper_fhir.fhir_types.uri import FhirUri

from spark_auto_mapper_fhir.value_sets.generic_type import GenericTypeCode
from spark_auto_mapper.type_definitions.defined_types import AutoMapperTextInputType


# This file is auto-generated by generate_classes so do not edit manually
# noinspection PyPep8Naming
class PlanDefinitionTypeCode(GenericTypeCode):
    """
    PlanDefinitionType
    From: http://terminology.hl7.org/CodeSystem/plan-definition-type in valuesets.xml
        The type of PlanDefinition.
    """

    def __init__(self, value: AutoMapperTextInputType):
        super().__init__(value=value)

    """
    http://terminology.hl7.org/CodeSystem/plan-definition-type
    """
    codeset: FhirUri = "http://terminology.hl7.org/CodeSystem/plan-definition-type"


class PlanDefinitionTypeCodeValues:
    """
    A pre-defined and approved group of orders related to a particular clinical
    condition (e.g. hypertension treatment and monitoring) or stage of care (e.g.
    hospital admission to Coronary Care Unit). An order set is used as a checklist
    for the clinician when managing a patient with a specific condition. It is a
    structured collection of orders relevant to that condition and presented to
    the clinician in a computerized provider order entry (CPOE) system.
    From: http://terminology.hl7.org/CodeSystem/plan-definition-type in valuesets.xml
    """

    OrderSet = PlanDefinitionTypeCode("order-set")
    """
    Defines a desired/typical sequence of clinical activities including
    preconditions, triggers and temporal relationships.
    From: http://terminology.hl7.org/CodeSystem/plan-definition-type in valuesets.xml
    """
    ClinicalProtocol = PlanDefinitionTypeCode("clinical-protocol")
    """
    A decision support rule of the form [on Event] if Condition then Action. It is
    intended to be a shareable, computable definition of actions that should be
    taken whenever some condition is met in response to a particular event or
    events.
    From: http://terminology.hl7.org/CodeSystem/plan-definition-type in valuesets.xml
    """
    ECARule = PlanDefinitionTypeCode("eca-rule")
    """
    Defines the steps for a group of one or more systems in an event flow process
    along with the step constraints, sequence, pre-conditions and decision points
    to complete a particular objective.
    From: http://terminology.hl7.org/CodeSystem/plan-definition-type in valuesets.xml
    """
    WorkflowDefinition = PlanDefinitionTypeCode("workflow-definition")
