Precondition2
type: StructureDefinition
node role: treeRoot
id:
  v: Precondition2
text:
  status:
    v: generated
  div: The sdtc:precondition2 extension allows a more flexible set of skip conditions on a set of criteria. Without this extension the skip condition is restricted to all criteria true. The extension allows a choice of the following logical operation extensions sdtc:allTrue, sdtc:allFalse, sdtc:atLeastOneTrue, sdtc:atLeastOneFalse, sdtc:onlyOneFalse, and sdtc:onlyOneTrue to be placed upon the encapsulated criteria or a criterion. The logical operation extensions nest a [0 .. *] sdtc:precondition2 extension allowing for a complex specification of nested skip conditions if needed.
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/logical-target
  value: boolean
    extension:
      url:
        v: http://hl7.org/fhir/StructureDefinition/data-absent-reason
      value: code
        v: not-applicable
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-name
  value: string
    v: precondition
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/logical-container
  value: uri
    v: http://hl7.org/cda/stds/core/StructureDefinition/ClinicalDocument
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/type-profile-style
  value: code
    v: cda
url:
  v: http://hl7.org/cda/stds/core/StructureDefinition/Precondition2
version:
  v: 1.0.1
name:
  v: Precondition2
title:
  v: Precondition2 (CDA Class)
status:
  v: active
experimental:
  v: false
date:
  v: 2025-10-10T09:58:30+10:00
publisher:
  v: HL7
description:
  v: The sdtc:precondition2 extension allows a more flexible set of skip conditions on a set of criteria. Without this extension the skip condition is restricted to all criteria true. The extension allows a choice of the following logical operation extensions sdtc:allTrue, sdtc:allFalse, sdtc:atLeastOneTrue, sdtc:atLeastOneFalse, sdtc:onlyOneFalse, and sdtc:onlyOneTrue to be placed upon the encapsulated criteria or a criterion. The logical operation extensions nest a [0 .. *] sdtc:precondition2 extension allowing for a complex specification of nested skip conditions if needed.
fhir version:
  v: 5.0.0
mapping:
  identity:
    v: rim
  uri:
    v: http://hl7.org/v3
  name:
    v: RIM Mapping
kind:
  v: logical
abstract:
  v: false
type:
  v: http://hl7.org/cda/stds/core/StructureDefinition/Precondition2
base definition:
  v: http://hl7.org/cda/stds/core/StructureDefinition/InfrastructureRoot
  link: http://hl7.org/cda/stds/core/StructureDefinition/InfrastructureRoot
derivation:
  v: specialization
snapshot:
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/snapshot-base-version
    value: string
      v: 1.0.1
  element:
    id:
      v: Precondition2
    path:
      v: Precondition2
    short:
      v: Base for all types and resources
    definition:
      v: Defines the basic properties of every data value. This is an abstract type, meaning that no value can be just a data value without belonging to any concrete type. Every concrete type is a specialization of this general abstract DataValue type.
    min:
      v: 1
    max:
      v: 1
    base:
      path:
        v: Base
      min:
        v: 0
      max:
        v: *
    constraint:
      key:
        v: precondition2-only-one
      severity:
        v: error
      human:
        v: SHALL have only one of allTrue, allFalse, atLeastOneTrue, atLeastOneFalse, onlyOneTrue, onlyOneFalse, or criterion
      expression:
        v: (allTrue | allFalse | atLeastOneTrue | atLeastOneFalse | onlyOneTrue | onlyOneFalse | criterion).count() = 1
    is modifier:
      v: false
    mapping:
      identity:
        v: rim
      map:
        v: n/a
  element:
    id:
      v: Precondition2.nullFlavor
    path:
      v: Precondition2.nullFlavor
    representation:
      v: xmlAttr
    label:
      v: Exceptional Value Detail
    definition:
      v: If a value is an exceptional value (NULL-value), this specifies in what way and why proper information is missing.
    min:
      v: 0
    max:
      v: 1
    base:
      path:
        v: ANY.nullFlavor
      min:
        v: 0
      max:
        v: 1
    type:
      code:
        v: code
      profile:
        v: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
        link: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
    binding:
      strength:
        v: required
      value set:
        v: http://hl7.org/cda/stds/core/ValueSet/CDANullFlavor
        link: http://hl7.org/cda/stds/core/ValueSet/CDANullFlavor
  element:
    id:
      v: Precondition2.realmCode
    path:
      v: Precondition2.realmCode
    definition:
      v: When valued in an instance, this attribute signals the imposition of realm-specific constraints. The value of this attribute identifies the realm in question
    min:
      v: 0
    max:
      v: *
    base:
      path:
        v: InfrastructureRoot.realmCode
      min:
        v: 0
      max:
        v: *
    type:
      code:
        v: http://hl7.org/cda/stds/core/StructureDefinition/CS
  element:
    id:
      v: Precondition2.typeId
    path:
      v: Precondition2.typeId
    definition:
      v: When valued in an instance, this attribute signals the imposition of constraints defined in an HL7-specified message type. This might be a common type (also known as CMET in the messaging communication environment), or content included within a wrapper. The value of this attribute provides a unique identifier for the type in question.
    min:
      v: 0
    max:
      v: 1
    base:
      path:
        v: InfrastructureRoot.typeId
      min:
        v: 0
      max:
        v: 1
    type:
      code:
        v: http://hl7.org/cda/stds/core/StructureDefinition/II
    constraint:
      key:
        v: II-1
      severity:
        v: error
      human:
        v: An II instance must have either a root or an nullFlavor.
      expression:
        v: root.exists() or nullFlavor.exists()
      source:
        v: http://hl7.org/cda/stds/core/StructureDefinition/InfrastructureRoot
        link: http://hl7.org/cda/stds/core/StructureDefinition/InfrastructureRoot

id:
  v: Precondition2.typeId.nullFlavor
path:
  v: Precondition2.typeId.nullFlavor
representation:
  v: xmlAttr
label:
  v: Exceptional Value Detail
definition:
  v: If a value is an exceptional value (NULL-value), this specifies in what way and why proper information is missing.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: ANY.nullFlavor
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: code
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
binding:
  strength:
    v: required
  value set:
    v: http://hl7.org/cda/stds/core/ValueSet/CDANullFlavor
    link: http://hl7.org/cda/stds/core/ValueSet/CDANullFlavor

id:
  v: Precondition2.typeId.assigningAuthorityName
path:
  v: Precondition2.typeId.assigningAuthorityName
representation:
  v: xmlAttr
label:
  v: Assigning Authority Name
definition:
  v: A human readable name or mnemonic for the assigning authority. The Assigning Authority Name has no computational value. The purpose of a Assigning Authority Name is to assist an unaided human interpreter of an II value to interpret the authority. Note: no automated processing must depend on the assigning authority name to be present in any form.
min:
  v: 0
max:
  v: 1
base:
  path:
    v: II.assigningAuthorityName
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: string
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/st-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/st-simple

id:
  v: Precondition2.typeId.displayable
path:
  v: Precondition2.typeId.displayable
representation:
  v: xmlAttr
label:
  v: Displayable
definition:
  v: Specifies if the identifier is intended for human display and data entry (displayable = true) as opposed to pure machine interoperation (displayable = false).
min:
  v: 0
max:
  v: 1
base:
  path:
    v: II.displayable
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: boolean
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple

id:
  v: Precondition2.typeId.root
path:
  v: Precondition2.typeId.root
representation:
  v: xmlAttr
label:
  v: Root
definition:
  v: Identifies the type as an HL7 Registered model
min:
  v: 1
max:
  v: 1
base:
  path:
    v: II.root
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: string
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/oid
    link: http://hl7.org/cda/stds/core/StructureDefinition/oid
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/uuid
    link: http://hl7.org/cda/stds/core/StructureDefinition/uuid
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/ruid
    link: http://hl7.org/cda/stds/core/StructureDefinition/ruid
fixed: string
  v: 2.16.840.1.113883.1.3

id:
  v: Precondition2.typeId.extension
path:
  v: Precondition2.typeId.extension
representation:
  v: xmlAttr
label:
  v: Extension
definition:
  v: A character string as a unique identifier within the scope of the identifier root.
min:
  v: 1
max:
  v: 1
base:
  path:
    v: II.extension
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: string
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/st-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/st-simple

id:
  v: Precondition2.templateId
path:
  v: Precondition2.templateId
definition:
  v: When valued in an instance, this attribute signals the imposition of a set of template-defined constraints. The value of this attribute provides a unique identifier for the templates in question
min:
  v: 0
max:
  v: *
base:
  path:
    v: InfrastructureRoot.templateId
  min:
    v: 0
  max:
    v: *
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/II

id:
  v: Precondition2.typeCode
path:
  v: Precondition2.typeCode
representation:
  v: xmlAttr
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.typeCode
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: code
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
fixed: code
  v: PRCN
binding:
  strength:
    v: required
  value set:
    v: http://hl7.org/cda/stds/core/ValueSet/CDAActRelationshipType
    link: http://hl7.org/cda/stds/core/ValueSet/CDAActRelationshipType

id:
  v: Precondition2.negationInd
path:
  v: Precondition2.negationInd
representation:
  v: xmlAttr
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.negationInd
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: boolean
  profile:
    v: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple
    link: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple

id:
  v: Precondition2.conjunctionCode
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.conjunctionCode
definition:
  v: A code specifying the logical conjunction of the criteria among all the condition-links of Acts (e.g., and, or, exclusive-or). All AND criteria must be true. If OR and AND criteria occur together, one criterion out of the OR-group must be true and all AND criteria must be true also. If XOR criteria occur together with OR and AND criteria, exactly one of the XOR criteria must be true, and at least one of the OR criteria and all AND criteria must be true. In other words, the sets of AND, OR, and XOR criteria are in turn combined by a logical AND operator (all AND criteria and at least one OR criterion and exactly one XOR criterion).
min:
  v: 1
max:
  v: 1
base:
  path:
    v: Precondition2.conjunctionCode
  min:
    v: 1
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/CS
binding:
  strength:
    v: required
  value set:
    v: http://terminology.hl7.org/ValueSet/v3-RelationshipConjunction|2.0.0
    link: 2.0
    link: .0

id:
  v: Precondition2.allTrue
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.allTrue
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.allTrue
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.allFalse
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.allFalse
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.allFalse
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.atLeastOneTrue
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.atLeastOneTrue
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.atLeastOneTrue
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.atLeastOneFalse
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.atLeastOneFalse
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.atLeastOneFalse
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.onlyOneTrue
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.onlyOneTrue
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.onlyOneTrue
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.onlyOneFalse
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.onlyOneFalse
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.onlyOneFalse
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase

id:
  v: Precondition2.criterion
extension:
  url:
    v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
  value: uri
    v: urn:hl7-org:sdtc
path:
  v: Precondition2.criterion
min:
  v: 0
max:
  v: 1
base:
  path:
    v: Precondition2.criterion
  min:
    v: 0
  max:
    v: 1
type:
  code:
    v: http://hl7.org/cda/stds/core/StructureDefinition/Criterion

element:
  id:
    v: Precondition2
  path:
    v: Precondition2
  min:
    v: 1
  max:
    v: 1
  constraint:
    key:
      v: precondition2-only-one
    severity:
      v: error
    human:
      v: SHALL have only one of allTrue, allFalse, atLeastOneTrue, atLeastOneFalse, onlyOneTrue, onlyOneFalse, or criterion
    expression:
      v: (allTrue | allFalse | atLeastOneTrue | atLeastOneFalse | onlyOneTrue | onlyOneFalse | criterion).count() = 1
element:
  id:
    v: Precondition2.typeCode
  path:
    v: Precondition2.typeCode
  representation:
    v: xmlAttr
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: code
    profile:
      v: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
      link: http://hl7.org/cda/stds/core/StructureDefinition/cs-simple
  fixed: code
    v: PRCN
  binding:
    strength:
      v: required
    value set:
      v: http://hl7.org/cda/stds/core/ValueSet/CDAActRelationshipType
      link: http://hl7.org/cda/stds/core/ValueSet/CDAActRelationshipType
element:
  id:
    v: Precondition2.negationInd
  path:
    v: Precondition2.negationInd
  representation:
    v: xmlAttr
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: boolean
    profile:
      v: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple
      link: http://hl7.org/cda/stds/core/StructureDefinition/bl-simple
element:
  id:
    v: Precondition2.conjunctionCode
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.conjunctionCode
  definition:
    v: A code specifying the logical conjunction of the criteria among all the condition-links of Acts (e.g., and, or, exclusive-or). All AND criteria must be true. If OR and AND criteria occur together, one criterion out of the OR-group must be true and all AND criteria must be true also. If XOR criteria occur together with OR and AND criteria, exactly one of the XOR criteria must be true, and at least one of the OR criteria and all AND criteria must be true. In other words, the sets of AND, OR, and XOR criteria are in turn combined by a logical AND operator (all AND criteria and at least one OR criterion and exactly one XOR criterion).
  min:
    v: 1
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/CS
  binding:
    strength:
      v: required
    value set:
      v: http://terminology.hl7.org/ValueSet/v3-RelationshipConjunction|2.0.0
      link: 2.0
      link: .0
element:
  id:
    v: Precondition2.allTrue
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.allTrue
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.allFalse
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.allFalse
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.atLeastOneTrue
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.atLeastOneTrue
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.atLeastOneFalse
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.atLeastOneFalse
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.onlyOneTrue
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.onlyOneTrue
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.onlyOneFalse
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.onlyOneFalse
  min:
    v: 0
  max:
    v: 1
  type:
    code:
      v: http://hl7.org/cda/stds/core/StructureDefinition/PreconditionBase
element:
  id:
    v: Precondition2.criterion
  extension:
    url:
      v: http://hl7.org/fhir/tools/StructureDefinition/xml-namespace
    value: uri
      v: urn:hl7-org:sdtc
  path:
    v: Precondition2.criterion
  min:
    v: 0
  max:
    v: 1