IHE / supplement-template

IHE Supplement Template
Creative Commons Attribution 4.0 International
7 stars 0 forks source link

comprehensive MustSupport definition #21

Open JohnMoehrke opened 2 years ago

JohnMoehrke commented 2 years ago

A very comprehensive way of explaining MustSupport as found in Canadian specifications http://build.fhir.org/ig/HL7-Canada/ca-baseline/branches/master/general-guidance.html#cardinality-and-mustsupport-definitions

Must Support

Base or baseline specifications are specifications that other implementation guides build on top of. When applying constraints, this guide does so with the understanding that any profiling constraints (must support, cardinality, invariants, slicing, etc.) will be inherited into any profiles that derive from them.

Must support constraints are particularly challenging for baseline specifications because the FHIR Standard has enforced that every implementation guide declares the meaning and expectations for a must support flag in their guide. Much like other derived constraints, a must support flag that is inherited into a derived profile can not have a looser definition from the profile the flag originates from. The definition in the derived profile can keep or tighten the definition for must support.

Therefore, the CA Baseline has developed a lightweight must support definition that does not impede or prescribe what a client or server does with the data, so as not to impede each implementation's ability to tighten and define expectations for use under their own business rules, regulations, policies, etc.

Must Support Definition: Vendors in Canada have the base capability to support the elements, with the expectation that business rules, regulations, etc. can determine what of these elements is used and how.

Given the challenge that comes from inheritance of must support flags into implementation guides that have strict definitions for must support (e.g., must be able to display this value to an end user), the CA Baseline has only applied must support flags on the elements that would be expected to be flagged as must support across the majority of Canadian Implementation Guides.

Must Support Expectations: Backbone & Child Elements Occasionally, Must Support flags are applied to elements that fall under a backbone element that is not considered Must Support. This profiling is intended to communicate conditional expectations IF the implementation uses/supports the backbone element.

It is not intended to incur the expectation that systems have to support the backbone element and the child elements noted underneath if they would have otherwise not included them in their profile. This modeling will continue to be evaluated for impacts for derived profiles.

Should Support Expectations: This specification may also identify elements that are "should support" using usage notes. These are elements that may not reasonably meet the rule above of being in the majority of Canadian Implementation Guide, but that the CA Baseline is encouraging further proliferation of.

Cardinality and MustSupport Definitions

MustSupport Cardinality Query Scenario
(Server)
Query Scenario
(Client)
Create / Update Scenario
(Client)
Create / Update Scenario
(Server)
A No 0..1, 0..* MAY send/relay data corresponding to this element (not required)

SHOULD NOT send element if the data is not available (not collected or null value)
SHOULD NOT assume this element will be received 1, 2 MAY send/relay data corresponding to this element (not required)

SHOULD NOT send element if the data is not available (not collected or null value)
MAY ignore data received in the element 1
B No 1..1, 1..* SHALL send/relay the data element populated with a value

MAY use a fixed value or rule to populate element with an appropriate value
SHOULD assume this element will be received and may be a fixed value 1, 2 SHALL send/relay the data element populated with a value

MAY use a fixed value or rule to populate element with an appropriate value
MAY ignore data received in the element 1
C Yes 0..1, 0..* SHALL send/relay the data element populated with a value (if available and appropriate)

SHOULD NOT send element if the value is null
SHOULD assume this element will be received if data is available 1, 2

SHOULD assume that a missing data element in response means that a value for that data element was not available1, 2
SHALL be capable of sending/relaying the data element to the server

SHOULD NOT send element if the value is null
SHALL be capable of receiving/relaying/storing the data for this element 1
D Yes 1..1, 1..* SHALL send/relay the data element populated with a value SHOULD assume a value for this data element will be received 1, 2 SHALL send/relay the data element populated with a value to the server SHALL be capable of receiving/relaying/storing the data for this element 1

1 Business rules, regulations, policies, additional implementation guides should determine what the server will do with the data it receives (i.e., store, persist, etc.)

2 Scope of the CA Baseline Profiles does not include prescriptive constraints on what a Client or Server has to do with the data it receives (i.e., ignore, display, store, persist, etc.).*

Client = Requestor, Server = Responder

Conformance Language:

Verb Definition
SHALL an absolute requirement for all implementations
SHALL NOT an absolute prohibition against inclusion for all implementations
SHOULD / SHOULD NOT A best practice or recommendation to be considered by implementers within the context of their particular implementation; there may be valid reasons to ignore an item, but the full implications must be understood and carefully weighed before choosing a different course
MAY This is truly optional language for an implementation; can be included or omitted as the implementer decides with no implications
JohnMoehrke commented 2 years ago

useful to see, not sure this is worthy of taking on fully in IHE.

JohnMoehrke commented 2 years ago

Grahame is driving for a totally new MustSupport mechanism https://confluence.hl7.org/display/FHIR/Must+Support+replacement+proposal