OneAquaHealth Project
0.1.0-ci-build - ci-build 150

OneAquaHealth Project, published by OneAquaHealth Project. This guide is not an authorized publication; it is the continuous build for version 0.1.0-ci-build built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/hl7-eu/oah/ and changes regularly. See the Directory of published versions

Resource Profile: Specimen: OAH Indicators

Official URL: http://hl7.eu/fhir/ig/oah/StructureDefinition/specimen-oah Version: 0.1.0-ci-build
Draft as of 2026-10-27 Computable Name: SpecimenOah

It defines the rules to be applied to the Specimen for the purpose of the OneAquaHealth project.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Specimen.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Specimen.identifier This element is included in summaries. 0..* Identifier Specimen identifier
Specimen.status This element is a modifier element. This element is included in summaries. 0..1 code available | unavailable | unsatisfactory | entered-in-error
Binding: SpecimenStatus (required): Codes providing the status/availability of a specimen.
Specimen.type This element is included in summaries. 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject This element is included in summaries. 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.collection 1..1 BackboneElement Collection details
Specimen.collection.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.collection.collector This element is included in summaries. 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] This element is included in summaries. 1..1 dateTime Collection time
Specimen.collection.quantity C 0..1 SimpleQuantity(4.0.1) Specimen quantity
Constraints: sqty-1

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Specimen.status Base required SpecimenStatus 📍4.0.1 FHIR Std.
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error Specimen If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Specimen If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Specimen If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Specimen If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Specimen A resource should have narrative for robust management text.`div`.exists()
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()
sqty-1 error Specimen.collection.quantity The comparator is not used on a SimpleQuantity comparator.empty()

This structure is derived from Specimen

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.identifier 0..* Identifier Specimen identifier
Specimen.type 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.collection.collector 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] 1..1 dateTime Collection time
Specimen.collection.quantity 0..1 SimpleQuantity(4.0.1) Specimen quantity
Specimen.collection.bodySite 0..0 Anatomical collection site

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.id This element is included in summaries. 0..1 id Logical id of this artifact
Specimen.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Specimen.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Specimen.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Specimen.text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
Specimen.contained 0..* Resource Contained, inline Resources
Specimen.extension 0..* Extension Additional content defined by implementations
Specimen.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Specimen.identifier This element is included in summaries. 0..* Identifier Specimen identifier
Specimen.accessionIdentifier This element is included in summaries. 0..1 Identifier Identifier assigned by the lab
Specimen.status This element is a modifier element. This element is included in summaries. 0..1 code available | unavailable | unsatisfactory | entered-in-error
Binding: SpecimenStatus (required): Codes providing the status/availability of a specimen.
Specimen.type This element is included in summaries. 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject This element is included in summaries. 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.receivedTime This element is included in summaries. 0..1 dateTime The time when specimen was received for processing
Specimen.parent 0..* Reference(Specimen) Specimen from which this specimen originated
Specimen.request 0..* Reference(ServiceRequest) Why the specimen was collected
Specimen.collection 1..1 BackboneElement Collection details
Specimen.collection.id 0..1 string Unique id for inter-element referencing
Specimen.collection.extension 0..* Extension Additional content defined by implementations
Specimen.collection.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.collection.collector This element is included in summaries. 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] This element is included in summaries. 1..1 dateTime Collection time
Specimen.collection.duration This element is included in summaries. 0..1 Duration How long it took to collect specimen
Specimen.collection.quantity C 0..1 SimpleQuantity(4.0.1) Specimen quantity
Constraints: sqty-1
Specimen.collection.method 0..1 CodeableConcept Technique used to perform collection
Binding: FHIRSpecimenCollectionMethod (example): The technique that is used to perform the procedure.
Specimen.collection.fastingStatus[x] This element is included in summaries. 0..1 Whether or how long patient abstained from food and/or drink
Binding: hl7VS-relevantClincialInformation (extensible): Codes describing the fasting status of the patient.
Specimen.collection.fastingStatus[x].fastingStatusCodeableConcept CodeableConcept
Specimen.collection.fastingStatus[x].fastingStatusDuration Duration
Specimen.processing 0..* BackboneElement Processing and processing step details
Specimen.processing.id 0..1 string Unique id for inter-element referencing
Specimen.processing.extension 0..* Extension Additional content defined by implementations
Specimen.processing.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.processing.description 0..1 string Textual description of procedure
Specimen.processing.procedure 0..1 CodeableConcept Indicates the treatment step applied to the specimen
Binding: SpecimenProcessingProcedure (example): Type indicating the technique used to process the specimen.
Specimen.processing.additive 0..* Reference(Substance) Material used in the processing step
Specimen.processing.time[x] 0..1 Date and time of specimen processing
Specimen.processing.time[x].timeDateTime dateTime
Specimen.processing.time[x].timePeriod Period
Specimen.container 0..* BackboneElement Direct container of specimen (tube/slide, etc.)
Specimen.container.id 0..1 string Unique id for inter-element referencing
Specimen.container.extension 0..* Extension Additional content defined by implementations
Specimen.container.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.container.identifier This element is included in summaries. 0..* Identifier Id for the container
Specimen.container.description 0..1 string Textual description of the container
Specimen.container.type 0..1 CodeableConcept Kind of container directly associated with specimen
Binding: SpecimenContainerType (example): Type of specimen container.
Specimen.container.capacity C 0..1 SimpleQuantity(4.0.1) Container volume or size
Constraints: sqty-1
Specimen.container.specimenQuantity C 0..1 SimpleQuantity(4.0.1) Quantity of specimen within container
Constraints: sqty-1
Specimen.container.additive[x] 0..1 Additive associated with container
Binding: hl7VS-additivePreservative (example): Substance added to specimen container.
Specimen.container.additive[x].additiveCodeableConcept CodeableConcept
Specimen.container.additive[x].additiveReference Reference(Substance)
Specimen.condition This element is included in summaries. 0..* CodeableConcept State of the specimen
Binding: hl7VS-specimenCondition (extensible): Codes describing the state of the specimen.
Specimen.note 0..* Annotation Comments

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Specimen.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Specimen.status Base required SpecimenStatus 📍4.0.1 FHIR Std.
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG
Specimen.collection.​method Base example FHIR Specimen Collection Method 📍4.0.1 FHIR Std.
Specimen.collection.​fastingStatus[x] Base extensible hl7VS-relevantClincialInformation 📦3.0.0 THO v7.5
Specimen.processing.​procedure Base example Specimen processing procedure 📍4.0.1 FHIR Std.
Specimen.container.type Base example Specimen Container Type 📍4.0.1 FHIR Std.
Specimen.container.additive[x] Base example hl7VS-additivePreservative 📦3.0.0 THO v7.5
Specimen.condition Base extensible hl7VS-specimenCondition 📦3.0.0 THO v7.5

Constraints

Id Grade Path(s) Description Expression
dom-2 error Specimen If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Specimen If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Specimen If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Specimen If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Specimen A resource should have narrative for robust management text.`div`.exists()
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()
sqty-1 error Specimen.collection.quantity, Specimen.container.capacity, Specimen.container.specimenQuantity The comparator is not used on a SimpleQuantity comparator.empty()

This structure is derived from Specimen

Summary

Mandatory: 4 elements
Prohibited: 1 element

Structures

This structure refers to these other structures:

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Specimen.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Specimen.identifier This element is included in summaries. 0..* Identifier Specimen identifier
Specimen.status This element is a modifier element. This element is included in summaries. 0..1 code available | unavailable | unsatisfactory | entered-in-error
Binding: SpecimenStatus (required): Codes providing the status/availability of a specimen.
Specimen.type This element is included in summaries. 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject This element is included in summaries. 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.collection 1..1 BackboneElement Collection details
Specimen.collection.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.collection.collector This element is included in summaries. 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] This element is included in summaries. 1..1 dateTime Collection time
Specimen.collection.quantity C 0..1 SimpleQuantity(4.0.1) Specimen quantity
Constraints: sqty-1

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Specimen.status Base required SpecimenStatus 📍4.0.1 FHIR Std.
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG

Constraints

Id Grade Path(s) Description Expression
dom-2 error Specimen If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Specimen If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Specimen If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Specimen If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Specimen A resource should have narrative for robust management text.`div`.exists()
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()
sqty-1 error Specimen.collection.quantity The comparator is not used on a SimpleQuantity comparator.empty()

Differential View

This structure is derived from Specimen

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.identifier 0..* Identifier Specimen identifier
Specimen.type 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.collection 1..1 BackboneElement Collection details
Specimen.collection.collector 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] 1..1 dateTime Collection time
Specimen.collection.quantity 0..1 SimpleQuantity(4.0.1) Specimen quantity
Specimen.collection.bodySite 0..0 Anatomical collection site

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Specimen 0..* Specimen Sample for analysis
Specimen.id This element is included in summaries. 0..1 id Logical id of this artifact
Specimen.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Specimen.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Specimen.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Specimen.text 0..1 Narrative Text summary of the resource, for human interpretation
This profile does not constrain the narrative in regard to content, language, or traceability to data elements
Specimen.contained 0..* Resource Contained, inline Resources
Specimen.extension 0..* Extension Additional content defined by implementations
Specimen.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Specimen.identifier This element is included in summaries. 0..* Identifier Specimen identifier
Specimen.accessionIdentifier This element is included in summaries. 0..1 Identifier Identifier assigned by the lab
Specimen.status This element is a modifier element. This element is included in summaries. 0..1 code available | unavailable | unsatisfactory | entered-in-error
Binding: SpecimenStatus (required): Codes providing the status/availability of a specimen.
Specimen.type This element is included in summaries. 0..1 CodeableConcept Specimen type
Binding: OAH Specimen Type (extensible)
Specimen.subject This element is included in summaries. 1..1 Reference(Location: OAH Indicators) Where the specimen came from. This may be from patient(s), from a location (e.g., the source of an environmental sample), or a sampling of a substance or a device
Specimen.receivedTime This element is included in summaries. 0..1 dateTime The time when specimen was received for processing
Specimen.parent 0..* Reference(Specimen) Specimen from which this specimen originated
Specimen.request 0..* Reference(ServiceRequest) Why the specimen was collected
Specimen.collection 1..1 BackboneElement Collection details
Specimen.collection.id 0..1 string Unique id for inter-element referencing
Specimen.collection.extension 0..* Extension Additional content defined by implementations
Specimen.collection.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.collection.collector This element is included in summaries. 1..1 Reference(PractitionerRole) Collector of the specimen
Specimen.collection.collected[x] This element is included in summaries. 1..1 dateTime Collection time
Specimen.collection.duration This element is included in summaries. 0..1 Duration How long it took to collect specimen
Specimen.collection.quantity C 0..1 SimpleQuantity(4.0.1) Specimen quantity
Constraints: sqty-1
Specimen.collection.method 0..1 CodeableConcept Technique used to perform collection
Binding: FHIRSpecimenCollectionMethod (example): The technique that is used to perform the procedure.
Specimen.collection.fastingStatus[x] This element is included in summaries. 0..1 Whether or how long patient abstained from food and/or drink
Binding: hl7VS-relevantClincialInformation (extensible): Codes describing the fasting status of the patient.
Specimen.collection.fastingStatus[x].fastingStatusCodeableConcept CodeableConcept
Specimen.collection.fastingStatus[x].fastingStatusDuration Duration
Specimen.processing 0..* BackboneElement Processing and processing step details
Specimen.processing.id 0..1 string Unique id for inter-element referencing
Specimen.processing.extension 0..* Extension Additional content defined by implementations
Specimen.processing.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.processing.description 0..1 string Textual description of procedure
Specimen.processing.procedure 0..1 CodeableConcept Indicates the treatment step applied to the specimen
Binding: SpecimenProcessingProcedure (example): Type indicating the technique used to process the specimen.
Specimen.processing.additive 0..* Reference(Substance) Material used in the processing step
Specimen.processing.time[x] 0..1 Date and time of specimen processing
Specimen.processing.time[x].timeDateTime dateTime
Specimen.processing.time[x].timePeriod Period
Specimen.container 0..* BackboneElement Direct container of specimen (tube/slide, etc.)
Specimen.container.id 0..1 string Unique id for inter-element referencing
Specimen.container.extension 0..* Extension Additional content defined by implementations
Specimen.container.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Specimen.container.identifier This element is included in summaries. 0..* Identifier Id for the container
Specimen.container.description 0..1 string Textual description of the container
Specimen.container.type 0..1 CodeableConcept Kind of container directly associated with specimen
Binding: SpecimenContainerType (example): Type of specimen container.
Specimen.container.capacity C 0..1 SimpleQuantity(4.0.1) Container volume or size
Constraints: sqty-1
Specimen.container.specimenQuantity C 0..1 SimpleQuantity(4.0.1) Quantity of specimen within container
Constraints: sqty-1
Specimen.container.additive[x] 0..1 Additive associated with container
Binding: hl7VS-additivePreservative (example): Substance added to specimen container.
Specimen.container.additive[x].additiveCodeableConcept CodeableConcept
Specimen.container.additive[x].additiveReference Reference(Substance)
Specimen.condition This element is included in summaries. 0..* CodeableConcept State of the specimen
Binding: hl7VS-specimenCondition (extensible): Codes describing the state of the specimen.
Specimen.note 0..* Annotation Comments

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Specimen.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Specimen.status Base required SpecimenStatus 📍4.0.1 FHIR Std.
Specimen.type Base extensible OAH Specimen Type 📦0.1.0-ci-build This IG
Specimen.collection.​method Base example FHIR Specimen Collection Method 📍4.0.1 FHIR Std.
Specimen.collection.​fastingStatus[x] Base extensible hl7VS-relevantClincialInformation 📦3.0.0 THO v7.5
Specimen.processing.​procedure Base example Specimen processing procedure 📍4.0.1 FHIR Std.
Specimen.container.type Base example Specimen Container Type 📍4.0.1 FHIR Std.
Specimen.container.additive[x] Base example hl7VS-additivePreservative 📦3.0.0 THO v7.5
Specimen.condition Base extensible hl7VS-specimenCondition 📦3.0.0 THO v7.5

Constraints

Id Grade Path(s) Description Expression
dom-2 error Specimen If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error Specimen If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4 error Specimen If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
dom-5 error Specimen If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice Specimen A resource should have narrative for robust management text.`div`.exists()
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()
sqty-1 error Specimen.collection.quantity, Specimen.container.capacity, Specimen.container.specimenQuantity The comparator is not used on a SimpleQuantity comparator.empty()

This structure is derived from Specimen

Summary

Mandatory: 4 elements
Prohibited: 1 element

Structures

This structure refers to these other structures:

 

Other representations of profile: CSV, Excel, Schematron