Scalable Consent Management
0.1.0 - ci-build United States of America flag

Scalable Consent Management, published by HL7 International / Community Based Collaborative Care. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-consent-management/ and changes regularly. See the Directory of published versions

Resource Profile: FASTSubscription

Official URL: http://hl7.org/fhir/us/consent-management/StructureDefinition/FASTSubscription Version: 0.1.0
Standards status: Trial-use Maturity Level: 1 Computable Name: FASTSubscription

A profile for FAST subscriptions.

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: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 1..1 code requested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.
Required Pattern: active
... criteria SΣ 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
.... Slices for extension Content/Rules for all slices
..... extension:filterCriteria SΣ 0..* string Filtering critiera applied to events
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria
... channel Σ 1..1 BackboneElement The channel on which to report matches to the criteria
.... Slices for extension Content/Rules for all slices
..... extension:heartbeatPeriod 0..1 unsignedInt Interval in seconds to send 'heartbeat' notification
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period
..... extension:timeout 0..1 unsignedInt Timeout in seconds to attempt notification delivery
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-timeout
..... extension:maxCount 0..1 positiveInt Maximum number of triggering resources included in notification bundles
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type Σ 1..1 code rest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.
Required Pattern: rest-hook
..... Slices for extension Content/Rules for all slices
...... extension:customChannelType SΣ 0..1 Coding Extended channel type for notifications
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type
.... payload Σ 1..1 code MIME type to send, or omit for no payload
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)
..... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:content SΣ 1..1 code Notification content level
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content
Binding: Backported R5 Subscription Content Value Set (required)

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.statusrequiredPattern Value: active
http://hl7.org/fhir/ValueSet/subscription-status|4.0.0
From the FHIR Standard
Subscription.channel.typerequiredPattern Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.0
From the FHIR Standard
Subscription.channel.payloadrequiredMime Types(a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.0
From the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf 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.exists() and ('#'+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(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf 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-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
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()

This structure is derived from BackportSubscription

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... status 1..1 code requested | active | error | off
Required Pattern: active
... criteria 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
... channel
.... type 1..1 code rest-hook | websocket | email | sms | message
Required Pattern: rest-hook

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... 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
... contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 1..1 code requested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.
Required Pattern: active
... contact Σ 0..* ContactPoint Contact details for source (e.g. troubleshooting)
... end Σ 0..1 instant When to automatically delete the subscription
... reason Σ 1..1 string Description of why this subscription was created
... criteria SΣ 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
.... id 0..1 string xml:id (or equivalent in JSON)
.... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:filterCriteria SΣ 0..* string Filtering critiera applied to events
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria
.... value 0..1 string Primitive value for string
Max Length:1048576
... error Σ 0..1 string Latest error note
... channel Σ 1..1 BackboneElement The channel on which to report matches to the criteria
.... id 0..1 string Unique id for inter-element referencing
.... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:heartbeatPeriod 0..1 unsignedInt Interval in seconds to send 'heartbeat' notification
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period
..... extension:timeout 0..1 unsignedInt Timeout in seconds to attempt notification delivery
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-timeout
..... extension:maxCount 0..1 positiveInt Maximum number of triggering resources included in notification bundles
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type Σ 1..1 code rest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.
Required Pattern: rest-hook
..... id 0..1 string xml:id (or equivalent in JSON)
..... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:customChannelType SΣ 0..1 Coding Extended channel type for notifications
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type
..... value 0..1 code Primitive value for code
.... endpoint Σ 0..1 url Where the channel points to
.... payload Σ 1..1 code MIME type to send, or omit for no payload
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)
..... id 0..1 string xml:id (or equivalent in JSON)
..... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:content SΣ 1..1 code Notification content level
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content
Binding: Backported R5 Subscription Content Value Set (required)
..... value 0..1 code Primitive value for code
.... header Σ 0..* string Usage depends on the channel type

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.languagepreferredCommonLanguages
http://hl7.org/fhir/ValueSet/languages
From the FHIR Standard
Additional Bindings Purpose
AllLanguages Max Binding
Subscription.statusrequiredPattern Value: active
http://hl7.org/fhir/ValueSet/subscription-status|4.0.0
From the FHIR Standard
Subscription.channel.typerequiredPattern Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.0
From the FHIR Standard
Subscription.channel.payloadrequiredMime Types(a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.0
From the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf 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.exists() and ('#'+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(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf 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-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
dom-r4bwarningSubscription.containedContaining new R4B resources within R4 resources may cause interoperability issues if instances are shared with R4 systems
: ($this is Citation or $this is Evidence or $this is EvidenceReport or $this is EvidenceVariable or $this is MedicinalProductDefinition or $this is PackagedProductDefinition or $this is AdministrableProductDefinition or $this is Ingredient or $this is ClinicalUseDefinition or $this is RegulatedAuthorization or $this is SubstanceDefinition or $this is SubscriptionStatus or $this is SubscriptionTopic) implies (%resource is Citation or %resource is Evidence or %resource is EvidenceReport or %resource is EvidenceVariable or %resource is MedicinalProductDefinition or %resource is PackagedProductDefinition or %resource is AdministrableProductDefinition or %resource is Ingredient or %resource is ClinicalUseDefinition or %resource is RegulatedAuthorization or %resource is SubstanceDefinition or %resource is SubscriptionStatus or %resource is SubscriptionTopic)
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()

This structure is derived from BackportSubscription

Summary

Maturity: 1

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 1..1 code requested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.
Required Pattern: active
... criteria SΣ 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
.... Slices for extension Content/Rules for all slices
..... extension:filterCriteria SΣ 0..* string Filtering critiera applied to events
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria
... channel Σ 1..1 BackboneElement The channel on which to report matches to the criteria
.... Slices for extension Content/Rules for all slices
..... extension:heartbeatPeriod 0..1 unsignedInt Interval in seconds to send 'heartbeat' notification
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period
..... extension:timeout 0..1 unsignedInt Timeout in seconds to attempt notification delivery
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-timeout
..... extension:maxCount 0..1 positiveInt Maximum number of triggering resources included in notification bundles
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type Σ 1..1 code rest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.
Required Pattern: rest-hook
..... Slices for extension Content/Rules for all slices
...... extension:customChannelType SΣ 0..1 Coding Extended channel type for notifications
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type
.... payload Σ 1..1 code MIME type to send, or omit for no payload
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)
..... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:content SΣ 1..1 code Notification content level
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content
Binding: Backported R5 Subscription Content Value Set (required)

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.statusrequiredPattern Value: active
http://hl7.org/fhir/ValueSet/subscription-status|4.0.0
From the FHIR Standard
Subscription.channel.typerequiredPattern Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.0
From the FHIR Standard
Subscription.channel.payloadrequiredMime Types(a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.0
From the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf 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.exists() and ('#'+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(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf 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-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
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 BackportSubscription

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... status 1..1 code requested | active | error | off
Required Pattern: active
... criteria 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
... channel
.... type 1..1 code rest-hook | websocket | email | sms | message
Required Pattern: rest-hook

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Subscription 0..* BackportSubscription Server push subscription criteria
... id Σ 0..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... 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
... contained 0..* Resource Contained, inline Resources
Constraints: dom-r4b
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 1..1 code requested | active | error | off
Binding: SubscriptionStatus (required): The status of a subscription.
Required Pattern: active
... contact Σ 0..* ContactPoint Contact details for source (e.g. troubleshooting)
... end Σ 0..1 instant When to automatically delete the subscription
... reason Σ 1..1 string Description of why this subscription was created
... criteria SΣ 1..1 string Canonical URL for the topic used to generate events
Required Pattern: http://hl7.org/fhir/us/consent-management/SubscriptionTopic/FASTConsentSubscriptionTopic
.... id 0..1 string xml:id (or equivalent in JSON)
.... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:filterCriteria SΣ 0..* string Filtering critiera applied to events
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-filter-criteria
.... value 0..1 string Primitive value for string
Max Length:1048576
... error Σ 0..1 string Latest error note
... channel Σ 1..1 BackboneElement The channel on which to report matches to the criteria
.... id 0..1 string Unique id for inter-element referencing
.... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
..... extension:heartbeatPeriod 0..1 unsignedInt Interval in seconds to send 'heartbeat' notification
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-heartbeat-period
..... extension:timeout 0..1 unsignedInt Timeout in seconds to attempt notification delivery
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-timeout
..... extension:maxCount 0..1 positiveInt Maximum number of triggering resources included in notification bundles
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-max-count
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... type Σ 1..1 code rest-hook | websocket | email | sms | message
Binding: SubscriptionChannelType (required): The type of method used to execute a subscription.
Required Pattern: rest-hook
..... id 0..1 string xml:id (or equivalent in JSON)
..... Slices for extension 0..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:customChannelType SΣ 0..1 Coding Extended channel type for notifications
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-channel-type
..... value 0..1 code Primitive value for code
.... endpoint Σ 0..1 url Where the channel points to
.... payload Σ 1..1 code MIME type to send, or omit for no payload
Binding: Mime Types (required): BCP 13 (RFCs 2045, 2046, 2047, 4288, 4289 and 2049)
..... id 0..1 string xml:id (or equivalent in JSON)
..... Slices for extension 1..* Extension Extension
Slice: Unordered, Open by value:url
...... extension:content SΣ 1..1 code Notification content level
URL: http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content
Binding: Backported R5 Subscription Content Value Set (required)
..... value 0..1 code Primitive value for code
.... header Σ 0..* string Usage depends on the channel type

doco Documentation for this format

Terminology Bindings

PathConformanceValueSet / CodeURI
Subscription.languagepreferredCommonLanguages
http://hl7.org/fhir/ValueSet/languages
From the FHIR Standard
Additional Bindings Purpose
AllLanguages Max Binding
Subscription.statusrequiredPattern Value: active
http://hl7.org/fhir/ValueSet/subscription-status|4.0.0
From the FHIR Standard
Subscription.channel.typerequiredPattern Value: rest-hook
http://hl7.org/fhir/ValueSet/subscription-channel-type|4.0.0
From the FHIR Standard
Subscription.channel.payloadrequiredMime Types(a valid code from urn:ietf:bcp:13)
http://hl7.org/fhir/ValueSet/mimetypes|4.0.0
From the FHIR Standard

Constraints

IdGradePath(s)DetailsRequirements
dom-2errorSubscriptionIf the resource is contained in another resource, it SHALL NOT contain nested Resources
: contained.contained.empty()
dom-3errorSubscriptionIf 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.exists() and ('#'+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(uri) = '#').exists()).not()).trace('unmatched', id).empty()
dom-4errorSubscriptionIf 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-5errorSubscriptionIf a resource is contained in another resource, it SHALL NOT have a security label
: contained.meta.security.empty()
dom-6best practiceSubscriptionA resource should have narrative for robust management
: text.`div`.exists()
dom-r4bwarningSubscription.containedContaining new R4B resources within R4 resources may cause interoperability issues if instances are shared with R4 systems
: ($this is Citation or $this is Evidence or $this is EvidenceReport or $this is EvidenceVariable or $this is MedicinalProductDefinition or $this is PackagedProductDefinition or $this is AdministrableProductDefinition or $this is Ingredient or $this is ClinicalUseDefinition or $this is RegulatedAuthorization or $this is SubstanceDefinition or $this is SubscriptionStatus or $this is SubscriptionTopic) implies (%resource is Citation or %resource is Evidence or %resource is EvidenceReport or %resource is EvidenceVariable or %resource is MedicinalProductDefinition or %resource is PackagedProductDefinition or %resource is AdministrableProductDefinition or %resource is Ingredient or %resource is ClinicalUseDefinition or %resource is RegulatedAuthorization or %resource is SubstanceDefinition or %resource is SubscriptionStatus or %resource is SubscriptionTopic)
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()

This structure is derived from BackportSubscription

Summary

Maturity: 1

 

Other representations of profile: CSV, Excel, Schematron