QI-Core Implementation Guide
6.0.0-ballot - ballot United States of America flag

This page is part of the Quality Improvement Core Framework (v6.0.0-ballot: STU6 (v6.0.0) Ballot 1) based on FHIR R4. The current version which supercedes this version is 5.0.0. For a full list of available versions, see the Directory of published versions

Resource Profile: QICore ServiceRequest

Official URL: http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest Version: 6.0.0-ballot
Active as of 2018-08-22 Computable Name: QICoreServiceRequest

Profile of ServiceRequest for decision support/quality metrics. Defines the core set of elements and extensions for quality rule and measure authors.

Guidance

Reference Guidance for use of the Service Request profile can be found here.

  • See the Social Determinants of Health (SDOH) Guidance Page for more information when exchanging Social Determinants of Health (SDOH) Service Requests.
  • The ServiceRequest.category binding must support at a minimum the US Core ServiceRequest Category Codes. However, this valueset can be treated as extensible and other category codes can be used instead.
  • The ServiceRequest.code valueset is broad to accommodate a wide variety of use cases and should be constrained to a subset for a particular use case or domain. (for example, LOINC for laboratory orders.)
  • The ServiceRequest.subject is Must Support with Must Support reference to QI Core Patient

Usage

To create an expression specifically requesting information that a ServiceRequest intentionally did not occur for a medical, patient or system reason, use the profile QICore-Servicenotrequested.

The following example illustrates the use of the ServiceRequest profile:

define "Intermittent Pneumatic Compression Devices Ordered":
  ["ServiceRequest": "Application of intermittent pneumatic compression devices (IPC)"] DeviceOrdered
    where DeviceOrdered.status in { 'active', 'completed', 'on-hold' }

See the patterns page for implementation and usage patterns.

Examples

Request for Appendectomy Example
Request for Myringotomy Procedure Example

Usage:

Formal Views of Profile Content

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

This structure is derived from USCoreServiceRequestProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest 0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... status S1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
... doNotPerform S0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... subject S1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... authoredOn S1..1dateTime(USCDI) Date request signed
... requester 0..1Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore Patient | QICore RelatedPerson | QICore Device | US Core Implantable Device Profile)(USCDI) Who/what is requesting service
... reasonCode S0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis S | QICore Condition Problems Health Concerns S)Explanation/Justification for service or service

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
dom-7errorServiceRequestif doNotPerform is present, it SHALL be false
: doNotPerform.empty() or doNotPerform=false
NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest C0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!SΣ1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of a service order.

... Slices for category SΣ0..*CodeableConcept(USCDI) Classification of service
Slice: Unordered, Open by pattern:$this
Binding: ServiceRequestCategoryCodes (example): Classification of the requested service.


.... category:us-core SΣ0..*CodeableConcept(USCDI) Classification of service
Binding: US Core ServiceRequest Category Codes (required): Note that other codes are permitted, see Required Bindings When Slicing by Value Sets


... doNotPerform ?!SΣ0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... code SΣ1..1CodeableConcept(USCDI) What is being requested/ordered
Binding: US Core Procedure Codes (extensible)
... subject SΣ1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... occurrence[x] SΣ0..1Period(USCDI) When service should occur
... authoredOn SΣ1..1dateTime(USCDI) Date request signed
... requester SΣ0..1Reference(QICore PractitionerRole | QICore Patient | QICore RelatedPerson)(USCDI) Who/what is requesting service
... reasonCode SΣ0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
Binding: US Core Condition Codes (extensible)
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis | QICore Condition Problems Health Concerns)Explanation/Justification for service or service

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ServiceRequest.statusrequiredRequestStatus
ServiceRequest.intentrequiredRequestIntent
ServiceRequest.categoryexampleServiceRequestCategoryCodes
ServiceRequest.category:us-corerequiredUSCoreServiceRequestCategoryCodes
ServiceRequest.codeextensibleUSCoreProcedureCodes
ServiceRequest.reasonCodeextensibleUSCoreConditionCodes

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorServiceRequestIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorServiceRequestIf 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-4errorServiceRequestIf 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-5errorServiceRequestIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceServiceRequestA resource should have narrative for robust management
: text.`div`.exists()
dom-7errorServiceRequestif doNotPerform is present, it SHALL be false
: doNotPerform.empty() or doNotPerform=false
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
prr-1errorServiceRequestorderDetail SHALL only be present if code is present
: orderDetail.empty() or code.exists()
NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest C0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierIdentifiers assigned to this order
... instantiatesCanonical Σ0..*canonical(ActivityDefinition | PlanDefinition)Instantiates FHIR protocol or definition
... instantiatesUri Σ0..*uriInstantiates external protocol or definition
... basedOn Σ0..*Reference(CarePlan | ServiceRequest | MedicationRequest)What request fulfills
... replaces Σ0..*Reference(ServiceRequest)What request replaces
... requisition Σ0..1IdentifierComposite Request ID
... status ?!SΣ1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of a service order.

... intent ?!SΣ1..1code(USCDI) proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required): The kind of service request.

... Slices for category SΣ0..*CodeableConcept(USCDI) Classification of service
Slice: Unordered, Open by pattern:$this
Binding: ServiceRequestCategoryCodes (example): Classification of the requested service.


.... category:us-core SΣ0..*CodeableConcept(USCDI) Classification of service
Binding: US Core ServiceRequest Category Codes (required): Note that other codes are permitted, see Required Bindings When Slicing by Value Sets


... priority Σ0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.

... doNotPerform ?!SΣ0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... code SΣ1..1CodeableConcept(USCDI) What is being requested/ordered
Binding: US Core Procedure Codes (extensible)
... orderDetail ΣC0..*CodeableConceptAdditional order information
Binding: ServiceRequestOrderDetailsCodes (example): Codified order entry details which are based on order context.


... quantity[x] Σ0..1Service amount
.... quantityQuantityQuantity
.... quantityRatioRatio
.... quantityRangeRange
... subject SΣ1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... encounter Σ0..1Reference(Encounter)Encounter in which the request was created
... occurrence[x] SΣ0..1Period S(USCDI) When service should occur
... asNeeded[x] Σ0..1Preconditions for service
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the pre-condition that should hold prior to performing a procedure. For example "pain", "on flare-up", etc.

.... asNeededBooleanboolean
.... asNeededCodeableConceptCodeableConcept
... authoredOn SΣ1..1dateTime(USCDI) Date request signed
... requester SΣ0..1Reference(QICore Practitioner | QICore PractitionerRole S | QICore Organization | QICore Patient S | QICore RelatedPerson S | QICore Device | US Core Implantable Device Profile)(USCDI) Who/what is requesting service
... performerType Σ0..1CodeableConceptPerformer role
Binding: ParticipantRoles (example): Indicates specific responsibility of an individual within the care team, such as "Primary physician", "Team coordinator", "Caregiver", etc.

... performer Σ0..*Reference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson)Requested performer
... locationCode Σ0..*CodeableConceptRequested location
Binding: ServiceDeliveryLocationRoleType (example): A location type where services are delivered.


... locationReference Σ0..*Reference(Location)Requested location
... reasonCode SΣ0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
Binding: US Core Condition Codes (extensible)
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis S | QICore Condition Problems Health Concerns S)Explanation/Justification for service or service
... insurance 0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... supportingInfo 0..*Reference(Resource)Additional clinical information
... specimen Σ0..*Reference(Specimen)Procedure Samples
... bodySite Σ0..*CodeableConceptLocation on Body
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.


... note 0..*AnnotationComments
... patientInstruction Σ0..1stringPatient or consumer-oriented instructions
... relevantHistory 0..*Reference(Provenance)Request provenance

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ServiceRequest.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
ServiceRequest.statusrequiredRequestStatus
ServiceRequest.intentrequiredRequestIntent
ServiceRequest.categoryexampleServiceRequestCategoryCodes
ServiceRequest.category:us-corerequiredUSCoreServiceRequestCategoryCodes
ServiceRequest.priorityrequiredRequestPriority
ServiceRequest.codeextensibleUSCoreProcedureCodes
ServiceRequest.orderDetailexampleServiceRequestOrderDetailsCodes
ServiceRequest.asNeeded[x]exampleSNOMEDCTMedicationAsNeededReasonCodes
ServiceRequest.performerTypeexampleParticipantRoles
ServiceRequest.locationCodeexampleServiceDeliveryLocationRoleType
ServiceRequest.reasonCodeextensibleUSCoreConditionCodes
ServiceRequest.bodySiteexampleSNOMEDCTBodyStructures

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

Differential View

This structure is derived from USCoreServiceRequestProfile

NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest 0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... status S1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
... doNotPerform S0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... subject S1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... authoredOn S1..1dateTime(USCDI) Date request signed
... requester 0..1Reference(QICore Practitioner | QICore PractitionerRole | QICore Organization | QICore Patient | QICore RelatedPerson | QICore Device | US Core Implantable Device Profile)(USCDI) Who/what is requesting service
... reasonCode S0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis S | QICore Condition Problems Health Concerns S)Explanation/Justification for service or service

doco Documentation for this format

Constraints

IdGradePath(s)DetailsRequirements
dom-7errorServiceRequestif doNotPerform is present, it SHALL be false
: doNotPerform.empty() or doNotPerform=false

Key Elements View

NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest C0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... status ?!SΣ1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of a service order.

... Slices for category SΣ0..*CodeableConcept(USCDI) Classification of service
Slice: Unordered, Open by pattern:$this
Binding: ServiceRequestCategoryCodes (example): Classification of the requested service.


.... category:us-core SΣ0..*CodeableConcept(USCDI) Classification of service
Binding: US Core ServiceRequest Category Codes (required): Note that other codes are permitted, see Required Bindings When Slicing by Value Sets


... doNotPerform ?!SΣ0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... code SΣ1..1CodeableConcept(USCDI) What is being requested/ordered
Binding: US Core Procedure Codes (extensible)
... subject SΣ1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... occurrence[x] SΣ0..1Period(USCDI) When service should occur
... authoredOn SΣ1..1dateTime(USCDI) Date request signed
... requester SΣ0..1Reference(QICore PractitionerRole | QICore Patient | QICore RelatedPerson)(USCDI) Who/what is requesting service
... reasonCode SΣ0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
Binding: US Core Condition Codes (extensible)
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis | QICore Condition Problems Health Concerns)Explanation/Justification for service or service

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ServiceRequest.statusrequiredRequestStatus
ServiceRequest.intentrequiredRequestIntent
ServiceRequest.categoryexampleServiceRequestCategoryCodes
ServiceRequest.category:us-corerequiredUSCoreServiceRequestCategoryCodes
ServiceRequest.codeextensibleUSCoreProcedureCodes
ServiceRequest.reasonCodeextensibleUSCoreConditionCodes

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorServiceRequestIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorServiceRequestIf 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-4errorServiceRequestIf 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-5errorServiceRequestIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceServiceRequestA resource should have narrative for robust management
: text.`div`.exists()
dom-7errorServiceRequestif doNotPerform is present, it SHALL be false
: doNotPerform.empty() or doNotPerform=false
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()
prr-1errorServiceRequestorderDetail SHALL only be present if code is present
: orderDetail.empty() or code.exists()

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. ServiceRequest C0..*USCoreServiceRequestProfileA request for a service to be performed
dom-7: if doNotPerform is present, it SHALL be false
... id Σ0..1idLogical id of this artifact
... meta Σ0..1MetaMetadata about the resource
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: CommonLanguages (preferred): A human language.

Additional BindingsPurpose
AllLanguagesMax Binding
... text 0..1NarrativeText summary of the resource, for human interpretation
... contained 0..*ResourceContained, inline Resources
... extension 0..*ExtensionAdditional content defined by implementations
... modifierExtension ?!0..*ExtensionExtensions that cannot be ignored
... identifier Σ0..*IdentifierIdentifiers assigned to this order
... instantiatesCanonical Σ0..*canonical(ActivityDefinition | PlanDefinition)Instantiates FHIR protocol or definition
... instantiatesUri Σ0..*uriInstantiates external protocol or definition
... basedOn Σ0..*Reference(CarePlan | ServiceRequest | MedicationRequest)What request fulfills
... replaces Σ0..*Reference(ServiceRequest)What request replaces
... requisition Σ0..1IdentifierComposite Request ID
... status ?!SΣ1..1code(USCDI) draft | active | on-hold | revoked | completed | entered-in-error | unknown
Binding: RequestStatus (required): The status of a service order.

... intent ?!SΣ1..1code(USCDI) proposal | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
Binding: RequestIntent (required): The kind of service request.

... Slices for category SΣ0..*CodeableConcept(USCDI) Classification of service
Slice: Unordered, Open by pattern:$this
Binding: ServiceRequestCategoryCodes (example): Classification of the requested service.


.... category:us-core SΣ0..*CodeableConcept(USCDI) Classification of service
Binding: US Core ServiceRequest Category Codes (required): Note that other codes are permitted, see Required Bindings When Slicing by Value Sets


... priority Σ0..1coderoutine | urgent | asap | stat
Binding: RequestPriority (required): Identifies the level of importance to be assigned to actioning the request.

... doNotPerform ?!SΣ0..1booleanTrue if service/procedure should not be performed
Fixed Value: false
... code SΣ1..1CodeableConcept(USCDI) What is being requested/ordered
Binding: US Core Procedure Codes (extensible)
... orderDetail ΣC0..*CodeableConceptAdditional order information
Binding: ServiceRequestOrderDetailsCodes (example): Codified order entry details which are based on order context.


... quantity[x] Σ0..1Service amount
.... quantityQuantityQuantity
.... quantityRatioRatio
.... quantityRangeRange
... subject SΣ1..1Reference(QICore Patient)(USCDI) Individual or Entity the service is ordered for
... encounter Σ0..1Reference(Encounter)Encounter in which the request was created
... occurrence[x] SΣ0..1Period S(USCDI) When service should occur
... asNeeded[x] Σ0..1Preconditions for service
Binding: SNOMEDCTMedicationAsNeededReasonCodes (example): A coded concept identifying the pre-condition that should hold prior to performing a procedure. For example "pain", "on flare-up", etc.

.... asNeededBooleanboolean
.... asNeededCodeableConceptCodeableConcept
... authoredOn SΣ1..1dateTime(USCDI) Date request signed
... requester SΣ0..1Reference(QICore Practitioner | QICore PractitionerRole S | QICore Organization | QICore Patient S | QICore RelatedPerson S | QICore Device | US Core Implantable Device Profile)(USCDI) Who/what is requesting service
... performerType Σ0..1CodeableConceptPerformer role
Binding: ParticipantRoles (example): Indicates specific responsibility of an individual within the care team, such as "Primary physician", "Team coordinator", "Caregiver", etc.

... performer Σ0..*Reference(Practitioner | PractitionerRole | Organization | CareTeam | HealthcareService | Patient | Device | RelatedPerson)Requested performer
... locationCode Σ0..*CodeableConceptRequested location
Binding: ServiceDeliveryLocationRoleType (example): A location type where services are delivered.


... locationReference Σ0..*Reference(Location)Requested location
... reasonCode SΣ0..*CodeableConcept(USCDI) Explanation/Justification for procedure or service
Binding: US Core Condition Codes (extensible)
... reasonReference SΣ0..*Reference(QICore Condition Encounter Diagnosis S | QICore Condition Problems Health Concerns S)Explanation/Justification for service or service
... insurance 0..*Reference(Coverage | ClaimResponse)Associated insurance coverage
... supportingInfo 0..*Reference(Resource)Additional clinical information
... specimen Σ0..*Reference(Specimen)Procedure Samples
... bodySite Σ0..*CodeableConceptLocation on Body
Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality.


... note 0..*AnnotationComments
... patientInstruction Σ0..1stringPatient or consumer-oriented instructions
... relevantHistory 0..*Reference(Provenance)Request provenance

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet
ServiceRequest.languagepreferredCommonLanguages
Additional Bindings Purpose
AllLanguages Max Binding
ServiceRequest.statusrequiredRequestStatus
ServiceRequest.intentrequiredRequestIntent
ServiceRequest.categoryexampleServiceRequestCategoryCodes
ServiceRequest.category:us-corerequiredUSCoreServiceRequestCategoryCodes
ServiceRequest.priorityrequiredRequestPriority
ServiceRequest.codeextensibleUSCoreProcedureCodes
ServiceRequest.orderDetailexampleServiceRequestOrderDetailsCodes
ServiceRequest.asNeeded[x]exampleSNOMEDCTMedicationAsNeededReasonCodes
ServiceRequest.performerTypeexampleParticipantRoles
ServiceRequest.locationCodeexampleServiceDeliveryLocationRoleType
ServiceRequest.reasonCodeextensibleUSCoreConditionCodes
ServiceRequest.bodySiteexampleSNOMEDCTBodyStructures

Constraints

IdGradePath(s)DetailsRequirements
ele-1error**ALL** elementsAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1error**ALL** extensionsMust have either extensions or value[x], not both
: extension.exists() != value.exists()

 

Other representations of profile: CSV, Excel, Schematron