This page is part of the CCDA: Consolidated CDA Release (v2.1.0-draft1: CCDA 2.1 Draft) based on FHIR v5.0.0. . For a full list of available versions, see the Directory of published versions
Official URL: http://hl7.org/cda/us/ccda/StructureDefinition/2.16.840.1.113883.10.20.22.2.7.1 | Version: 2.1.0-draft1 | |||
Active as of 2023-01-16 | Computable Name: ProceduresSectionentriesrequired | |||
Other Identifiers: id: urn:hl7ii:2.16.840.1.113883.10.20.22.2.7.1:2014-06-09 |
This section describes all interventional, surgical, diagnostic, or therapeutic procedures or treatments pertinent to the patient historically at the time the document is generated. The section should include notable procedures, but can contain all procedures for the period of time being summarized. The common notion of “procedure” is broader than that specified by the HL7 Version 3 Reference Information Model (RIM), therefore this section contains procedure templates represented with three RIM classes: Act. Observation, and Procedure. Procedure act is for procedures that alter the physical condition of a patient (e.g., splenectomy). Observation act is for procedures that result in new information about a patient but do not cause physical alteration (e.g., EEG). Act is for all other types of procedures (e.g., dressing change).
Usage:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
This structure is derived from ProceduresSectionEntriesOptional
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
nullFlavor | 0..1 | code | Required Pattern: NI | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:secondary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
code | 1..1 | CE | ||
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
title | 1..1 | ED | ||
text | 1..1 | xhtml | ||
entry | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) | |
Documentation for this format |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
nullFlavor | 0..1 | code | Binding: NullFlavor (required) Required Pattern: NI | |
classCode | 1..1 | code | Binding: ActClassRecordOrganizer (required) Fixed Value: DOCSECT | |
moodCode | 1..1 | code | Binding: ActMood (required) Fixed Value: EVN | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:primary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
templateId:secondary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
code | 1..1 | CE | Binding: DocumentSectionType (extensible) | |
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
title | 1..1 | ED | ||
text | S | 1..1 | xhtml | |
Slices for entry | C | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) Slice: Unordered, Open by profile:observation |
entry:entryProcedure | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
procedure | 1..1 | ProcedureActivityProcedure | Base for all types and resources | |
entry:entryAct | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
act | 1..1 | ProcedureActivityAct | Base for all types and resources | |
entry:entryObservation | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
observation | 1..1 | ProcedureActivityObservation | Base for all types and resources | |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Section.nullFlavor | required | Pattern: NI |
Section.classCode | required | Fixed Value: DOCSECT |
Section.moodCode | required | Fixed Value: EVN |
Section.code | extensible | DocumentSectionType |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
only-one-statement | error | Section.entry, Section.entry:entryProcedure, Section.entry:entryAct, Section.entry:entryObservation | SHALL have no more than one of observation, regionOfInterest, observationMedia, substanceAdministration, supply, procedure, encounter, organizer or act. : (observation | regionOfInterest | observationMedia | substanceAdministration | supply | procedure | encounter | organizer | act).count() = 1 |
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
ID | 0..1 | string | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) Required Pattern: NI | |
classCode | 1..1 | code | Binding: ActClassRecordOrganizer (required) Fixed Value: DOCSECT | |
moodCode | 1..1 | code | Binding: ActMood (required) Fixed Value: EVN | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:primary | 1..1 | II | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
assigningAuthorityName | 0..1 | string | ||
displayable | 0..1 | boolean | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
templateId:secondary | 1..1 | II | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
assigningAuthorityName | 0..1 | string | ||
displayable | 0..1 | boolean | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
id | 0..1 | II | ||
code | 1..1 | CE | Binding: DocumentSectionType (extensible) | |
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
codeSystemName | 0..1 | string | ||
codeSystemVersion | 0..1 | string | ||
displayName | 0..1 | string | ||
sdtcValueSet | 0..1 | string | XML: valueSet (urn:hl7-org:sdtc) | |
sdtcValueSetVersion | 0..1 | string | XML: valueSetVersion (urn:hl7-org:sdtc) | |
originalText | 0..1 | ED | ||
translation | 0..* | CD | ||
title | 1..1 | ED | ||
text | S | 1..1 | xhtml | |
confidentialityCode | 0..1 | CE | ||
languageCode | 0..1 | CS | Binding: HumanLanguage (required) | |
subject | 0..1 | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Binding: ParticipationTargetSubject (required) Fixed Value: SBJ | |
contextControlCode | 1..1 | code | Binding: ContextControl (required) Fixed Value: OP | |
awarenessCode | 0..1 | CE | Binding: TargetAwareness (extensible) | |
relatedSubject | 1..1 | RelatedSubject | ||
author | 0..* | Author | ||
informant | 0..* | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Binding: ParticipationInformationGenerator (required) Fixed Value: INF | |
contextControlCode | 1..1 | code | Binding: ContextControl (required) Fixed Value: OP | |
assignedEntity | 0..1 | AssignedEntity | ||
relatedEntity | 0..1 | RelatedEntity | ||
Slices for entry | C | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) Slice: Unordered, Open by profile:observation |
entry:entryProcedure | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
procedure | 1..1 | ProcedureActivityProcedure | Base for all types and resources | |
entry:entryAct | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
act | 1..1 | ProcedureActivityAct | Base for all types and resources | |
entry:entryObservation | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
observation | 1..1 | ProcedureActivityObservation | Base for all types and resources | |
component | 0..* | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Fixed Value: COMP | |
contextConductionInd | 1..1 | boolean | ||
section | 1..1 | Section | ||
Documentation for this format |
Path | Conformance | ValueSet / Code |
Section.nullFlavor | required | Pattern: NI |
Section.classCode | required | Fixed Value: DOCSECT |
Section.moodCode | required | Fixed Value: EVN |
Section.templateId:primary.nullFlavor | required | NullFlavor |
Section.templateId:secondary.nullFlavor | required | NullFlavor |
Section.code | extensible | DocumentSectionType |
Section.code.nullFlavor | required | NullFlavor |
Section.languageCode | required | HumanLanguage (a valid code from http://terminology.hl7.org/CodeSystem/ietf3066 ) |
Section.subject.typeCode | required | Fixed Value: SBJ |
Section.subject.contextControlCode | required | Fixed Value: OP |
Section.subject.awarenessCode | extensible | TargetAwareness |
Section.informant.typeCode | required | Fixed Value: INF |
Section.informant.contextControlCode | required | Fixed Value: OP |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
only-one-statement | error | Section.entry, Section.entry:entryProcedure, Section.entry:entryAct, Section.entry:entryObservation | SHALL have no more than one of observation, regionOfInterest, observationMedia, substanceAdministration, supply, procedure, encounter, organizer or act. : (observation | regionOfInterest | observationMedia | substanceAdministration | supply | procedure | encounter | organizer | act).count() = 1 |
This structure is derived from ProceduresSectionEntriesOptional
Summary
Mandatory: 9 elements
Slices
This structure defines the following Slices:
Differential View
This structure is derived from ProceduresSectionEntriesOptional
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
nullFlavor | 0..1 | code | Required Pattern: NI | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:secondary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
code | 1..1 | CE | ||
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
title | 1..1 | ED | ||
text | 1..1 | xhtml | ||
entry | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) | |
Documentation for this format |
Key Elements View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
nullFlavor | 0..1 | code | Binding: NullFlavor (required) Required Pattern: NI | |
classCode | 1..1 | code | Binding: ActClassRecordOrganizer (required) Fixed Value: DOCSECT | |
moodCode | 1..1 | code | Binding: ActMood (required) Fixed Value: EVN | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:primary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
templateId:secondary | 1..1 | II | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
code | 1..1 | CE | Binding: DocumentSectionType (extensible) | |
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
title | 1..1 | ED | ||
text | S | 1..1 | xhtml | |
Slices for entry | C | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) Slice: Unordered, Open by profile:observation |
entry:entryProcedure | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
procedure | 1..1 | ProcedureActivityProcedure | Base for all types and resources | |
entry:entryAct | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
act | 1..1 | ProcedureActivityAct | Base for all types and resources | |
entry:entryObservation | C | 0..* | Element | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
observation | 1..1 | ProcedureActivityObservation | Base for all types and resources | |
Documentation for this format |
Path | Conformance | ValueSet / Code |
Section.nullFlavor | required | Pattern: NI |
Section.classCode | required | Fixed Value: DOCSECT |
Section.moodCode | required | Fixed Value: EVN |
Section.code | extensible | DocumentSectionType |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
only-one-statement | error | Section.entry, Section.entry:entryProcedure, Section.entry:entryAct, Section.entry:entryObservation | SHALL have no more than one of observation, regionOfInterest, observationMedia, substanceAdministration, supply, procedure, encounter, organizer or act. : (observation | regionOfInterest | observationMedia | substanceAdministration | supply | procedure | encounter | organizer | act).count() = 1 |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints |
---|---|---|---|---|
Section | 1..1 | ProceduresSectionEntriesOptional | Base for all types and resources | |
ID | 0..1 | string | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) Required Pattern: NI | |
classCode | 1..1 | code | Binding: ActClassRecordOrganizer (required) Fixed Value: DOCSECT | |
moodCode | 1..1 | code | Binding: ActMood (required) Fixed Value: EVN | |
Slices for templateId | 0..* | II | Slice: Unordered, Open by value:root, value:extension | |
templateId:primary | 1..1 | II | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
assigningAuthorityName | 0..1 | string | ||
displayable | 0..1 | boolean | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
templateId:secondary | 1..1 | II | ||
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
assigningAuthorityName | 0..1 | string | ||
displayable | 0..1 | boolean | ||
root | 1..1 | string | Required Pattern: 2.16.840.1.113883.10.20.22.2.7.1 | |
extension | 1..1 | string | Required Pattern: 2014-06-09 | |
id | 0..1 | II | ||
code | 1..1 | CE | Binding: DocumentSectionType (extensible) | |
nullFlavor | 0..1 | code | Binding: NullFlavor (required) | |
code | 1..1 | string | Required Pattern: 47519-4 | |
codeSystem | 1..1 | string | Required Pattern: 2.16.840.1.113883.6.1 | |
codeSystemName | 0..1 | string | ||
codeSystemVersion | 0..1 | string | ||
displayName | 0..1 | string | ||
sdtcValueSet | 0..1 | string | XML: valueSet (urn:hl7-org:sdtc) | |
sdtcValueSetVersion | 0..1 | string | XML: valueSetVersion (urn:hl7-org:sdtc) | |
originalText | 0..1 | ED | ||
translation | 0..* | CD | ||
title | 1..1 | ED | ||
text | S | 1..1 | xhtml | |
confidentialityCode | 0..1 | CE | ||
languageCode | 0..1 | CS | Binding: HumanLanguage (required) | |
subject | 0..1 | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Binding: ParticipationTargetSubject (required) Fixed Value: SBJ | |
contextControlCode | 1..1 | code | Binding: ContextControl (required) Fixed Value: OP | |
awarenessCode | 0..1 | CE | Binding: TargetAwareness (extensible) | |
relatedSubject | 1..1 | RelatedSubject | ||
author | 0..* | Author | ||
informant | 0..* | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Binding: ParticipationInformationGenerator (required) Fixed Value: INF | |
contextControlCode | 1..1 | code | Binding: ContextControl (required) Fixed Value: OP | |
assignedEntity | 0..1 | AssignedEntity | ||
relatedEntity | 0..1 | RelatedEntity | ||
Slices for entry | C | 1..* | Element | If section/@nullFlavor is not present there SHALL be at least one entry conformant to Procedure Activity Act (V2) (templateId 2.16.840.1.113883.10.20.22.4.12:2014-06-09) OR Procedure Activity Observation (V2) (templateId: 2.16.840.1.113883.10.20.22.4.13:2014-06-09) OR Procedure Activity Procedure (V2) (templateId: 2.16.840.1.113883.10.20.22.4.14:2014-06-09) Slice: Unordered, Open by profile:observation |
entry:entryProcedure | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
procedure | 1..1 | ProcedureActivityProcedure | Base for all types and resources | |
entry:entryAct | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
act | 1..1 | ProcedureActivityAct | Base for all types and resources | |
entry:entryObservation | C | 0..* | Element | |
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | ||
contextConductionInd | 1..1 | boolean | ||
observation | 1..1 | ProcedureActivityObservation | Base for all types and resources | |
component | 0..* | Element | ||
id | 0..1 | string | Unique id for inter-element referencing | |
extension | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |
typeCode | 1..1 | code | Fixed Value: COMP | |
contextConductionInd | 1..1 | boolean | ||
section | 1..1 | Section | ||
Documentation for this format |
Path | Conformance | ValueSet / Code |
Section.nullFlavor | required | Pattern: NI |
Section.classCode | required | Fixed Value: DOCSECT |
Section.moodCode | required | Fixed Value: EVN |
Section.templateId:primary.nullFlavor | required | NullFlavor |
Section.templateId:secondary.nullFlavor | required | NullFlavor |
Section.code | extensible | DocumentSectionType |
Section.code.nullFlavor | required | NullFlavor |
Section.languageCode | required | HumanLanguage (a valid code from http://terminology.hl7.org/CodeSystem/ietf3066 ) |
Section.subject.typeCode | required | Fixed Value: SBJ |
Section.subject.contextControlCode | required | Fixed Value: OP |
Section.subject.awarenessCode | extensible | TargetAwareness |
Section.informant.typeCode | required | Fixed Value: INF |
Section.informant.contextControlCode | required | Fixed Value: OP |
Id | Grade | Path(s) | Details | Requirements |
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children : hasValue() or (children().count() > id.count()) | |
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both : extension.exists() != value.exists() | |
only-one-statement | error | Section.entry, Section.entry:entryProcedure, Section.entry:entryAct, Section.entry:entryObservation | SHALL have no more than one of observation, regionOfInterest, observationMedia, substanceAdministration, supply, procedure, encounter, organizer or act. : (observation | regionOfInterest | observationMedia | substanceAdministration | supply | procedure | encounter | organizer | act).count() = 1 |
This structure is derived from ProceduresSectionEntriesOptional
Summary
Mandatory: 9 elements
Slices
This structure defines the following Slices:
Other representations of profile: CSV, Excel, Schematron