0.1.0 - ci-build
collabreefhirdocumentation - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://fhir.collabree.com/fhir/StructureDefinition/collabree-adherence-observation | Version: 0.1.0 | |||
| Draft as of 2025-11-04 | Computable Name: CollabreeAdherenceObservation | |||
Profile for medication adherence observations in the Collabree system, tracking daily adherence scores, streaks, and balance rewards. Each component represents adherence data for exactly one day - there should be one component per day with no duplicates.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, snapshot-status-final, final-observation-has-end-date |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 1..1 | Reference(CarePlan) | Fulfills plan, proposal or order |
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) |
![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 |
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions |
![]() ![]() |
Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about |
![]() ![]() |
Σ | 1..1 | Timing | Clinically relevant time/time-period for observation |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
ΣC | 1..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() ![]() |
Σ | 1..1 | Period | Length/Range of lengths, or (Start and/or end) limits |
![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | dateTime | Starting time with inclusive boundary |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). Required Pattern: d |
![]() ![]() |
Σ | 0..* | BackboneElement | Daily adherence data components |
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak Constraints: integer-not-negative |
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak Constraints: integer-not-negative |
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
![]() ![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations |
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) |
![]() ![]() ![]() |
Σ | 1..1 | dateTime | Date of adherence measurement (one component per day) |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| decimal-normalized | error | Observation.component.extension:dailyAdherenceScore, Observation.component.extension:totalAdherenceScore, Observation.component.extension:bestAdherenceScore | Decimal values must be normalized between 0 and 1 (0% to 100%) when present |
valueDecimal.exists() implies (valueDecimal >= 0 and valueDecimal <= 1)
|
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| integer-not-negative | error | Observation.component.extension:dailyStreak, Observation.component.extension:bestStreak | Integer values must be non-negative (>= 0) when present |
valueInteger.exists() implies valueInteger >= 0
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
| tim-1 | error | Observation.effective[x].repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Observation.effective[x].repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Observation.effective[x].repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Observation.effective[x].repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Observation.effective[x].repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Observation.effective[x].repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Observation.effective[x].repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Observation.effective[x].repeat | If there's an offset, there must be a when (and not C, CM, CD, CV) |
offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
|
| tim-10 | error | Observation.effective[x].repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Observation
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: snapshot-status-final, final-observation-has-end-date |
![]() ![]() |
1..1 | Reference(CarePlan) | Fulfills plan, proposal or order | |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation | |
![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type | |
![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) | |
![]() ![]() |
||||
![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org | |
![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 | |
![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions | |
![]() ![]() |
1..1 | Reference(Patient) | Who and/or what the observation is about | |
![]() ![]() |
1..1 | Timing | Clinically relevant time/time-period for observation | |
![]() ![]() ![]() |
1..1 | Element | When the event is to occur | |
![]() ![]() ![]() ![]() |
1..1 | Period | Length/Range of lengths, or (Start and/or end) limits | |
![]() ![]() ![]() ![]() ![]() |
1..1 | dateTime | Starting time with inclusive boundary | |
![]() ![]() ![]() ![]() |
1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Required Pattern: d | |
![]() ![]() |
0..* | BackboneElement | Daily adherence data components | |
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak | |
![]() ![]() ![]() ![]() |
1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak | |
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |
![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() ![]() |
0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) | |
![]() ![]() ![]() |
1..1 | dateTime | Date of adherence measurement (one component per day) | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, snapshot-status-final, final-observation-has-end-date | ||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business Identifier for observation | ||||
![]() ![]() |
Σ | 1..1 | Reference(CarePlan) | Fulfills plan, proposal or order | ||||
![]() ![]() |
Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event | ||||
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. | ||||
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() |
Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about | ||||
![]() ![]() |
Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record | ||||
![]() ![]() |
Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made | ||||
![]() ![]() |
Σ | 1..1 | Timing | Clinically relevant time/time-period for observation | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..* | dateTime | When the event occurs | ||||
![]() ![]() ![]() |
ΣC | 1..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | Period | Length/Range of lengths, or (Start and/or end) limits | ||||
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | dateTime | Starting time with inclusive boundary | ||||
![]() ![]() ![]() ![]() ![]() |
ΣC | 0..1 | dateTime | End time with inclusive boundary, if not ongoing | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Number of times to repeat | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Maximum number of times to repeat | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | How long when it happens | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | How long when it happens (Max) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Event occurs frequency times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Event occurs up to frequencyMax times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Event occurs frequency times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Upper limit of period (3-4 hours) | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). Required Pattern: d | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | time | Time of day for action | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | code | Code for time period of occurrence Binding: EventTiming (required): Real world event relating to the schedule. | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | unsignedInt | Minutes from event (before or after) | ||||
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | ||||
![]() ![]() |
Σ | 0..1 | instant | Date/Time this version was made available | ||||
![]() ![]() |
Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation | ||||
![]() ![]() |
ΣC | 0..1 | Actual result | |||||
![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() |
integer | |||||||
![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() |
Ratio | |||||||
![]() ![]() ![]() |
SampledData | |||||||
![]() ![]() ![]() |
time | |||||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
Period | |||||||
![]() ![]() |
C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() |
0..* | Annotation | Comments about the observation | |||||
![]() ![]() |
0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality. | |||||
![]() ![]() |
0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations. | |||||
![]() ![]() |
0..1 | Reference(Specimen) | Specimen used for this observation | |||||
![]() ![]() |
0..1 | Reference(Device | DeviceMetric) | (Measurement) Device | |||||
![]() ![]() |
C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3 | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range. | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
![]() ![]() ![]() |
0..1 | Range | Applicable age range, if relevant | |||||
![]() ![]() ![]() |
0..1 | string | Text based reference range in an observation | |||||
![]() ![]() |
Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group | ||||
![]() ![]() |
Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from | ||||
![]() ![]() |
Σ | 0..* | BackboneElement | Daily adherence data components | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak Constraints: integer-not-negative | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak Constraints: integer-not-negative | ||||
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() ![]() |
Σ | 1..1 | dateTime | Date of adherence measurement (one component per day) | ||||
![]() ![]() ![]() |
C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() ![]() |
0..* | See referenceRange (Observation) | Provides guide for interpretation of component result | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.durationUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.dayOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.when | Base | required | EventTiming | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Observation.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std. |
| Observation.method | Base | example | Observation Methods | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.type | Base | preferred | Observation Reference Range Meaning Codes | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Observation.component.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.component.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| decimal-normalized | error | Observation.component.extension:dailyAdherenceScore, Observation.component.extension:totalAdherenceScore, Observation.component.extension:bestAdherenceScore | Decimal values must be normalized between 0 and 1 (0% to 100%) when present |
valueDecimal.exists() implies (valueDecimal >= 0 and valueDecimal <= 1)
|
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| integer-not-negative | error | Observation.component.extension:dailyStreak, Observation.component.extension:bestStreak | Integer values must be non-negative (>= 0) when present |
valueInteger.exists() implies valueInteger >= 0
|
| obs-3 | error | Observation.referenceRange | Must have at least a low or a high or text |
low.exists() or high.exists() or text.exists()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
| tim-1 | error | Observation.effective[x].repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Observation.effective[x].repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Observation.effective[x].repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Observation.effective[x].repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Observation.effective[x].repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Observation.effective[x].repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Observation.effective[x].repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Observation.effective[x].repeat | If there's an offset, there must be a when (and not C, CM, CD, CV) |
offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
|
| tim-10 | error | Observation.effective[x].repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Observation
Summary
Mandatory: 14 elements(9 nested mandatory elements)
Extensions
This structure refers to these extensions:
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, snapshot-status-final, final-observation-has-end-date |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 1..1 | Reference(CarePlan) | Fulfills plan, proposal or order |
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) |
![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 |
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions |
![]() ![]() |
Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about |
![]() ![]() |
Σ | 1..1 | Timing | Clinically relevant time/time-period for observation |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
ΣC | 1..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 |
![]() ![]() ![]() ![]() |
Σ | 1..1 | Period | Length/Range of lengths, or (Start and/or end) limits |
![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | dateTime | Starting time with inclusive boundary |
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). Required Pattern: d |
![]() ![]() |
Σ | 0..* | BackboneElement | Daily adherence data components |
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score Constraints: decimal-normalized |
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak Constraints: integer-not-negative |
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak Constraints: integer-not-negative |
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized |
![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. |
![]() ![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system |
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations |
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) |
![]() ![]() ![]() |
Σ | 1..1 | dateTime | Date of adherence measurement (one component per day) |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| decimal-normalized | error | Observation.component.extension:dailyAdherenceScore, Observation.component.extension:totalAdherenceScore, Observation.component.extension:bestAdherenceScore | Decimal values must be normalized between 0 and 1 (0% to 100%) when present |
valueDecimal.exists() implies (valueDecimal >= 0 and valueDecimal <= 1)
|
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| integer-not-negative | error | Observation.component.extension:dailyStreak, Observation.component.extension:bestStreak | Integer values must be non-negative (>= 0) when present |
valueInteger.exists() implies valueInteger >= 0
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
| tim-1 | error | Observation.effective[x].repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Observation.effective[x].repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Observation.effective[x].repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Observation.effective[x].repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Observation.effective[x].repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Observation.effective[x].repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Observation.effective[x].repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Observation.effective[x].repeat | If there's an offset, there must be a when (and not C, CM, CD, CV) |
offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
|
| tim-10 | error | Observation.effective[x].repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
Differential View
This structure is derived from Observation
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: snapshot-status-final, final-observation-has-end-date |
![]() ![]() |
1..1 | Reference(CarePlan) | Fulfills plan, proposal or order | |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation | |
![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type | |
![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) | |
![]() ![]() |
||||
![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() |
1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org | |
![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 | |
![]() ![]() ![]() ![]() |
0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions | |
![]() ![]() |
1..1 | Reference(Patient) | Who and/or what the observation is about | |
![]() ![]() |
1..1 | Timing | Clinically relevant time/time-period for observation | |
![]() ![]() ![]() |
1..1 | Element | When the event is to occur | |
![]() ![]() ![]() ![]() |
1..1 | Period | Length/Range of lengths, or (Start and/or end) limits | |
![]() ![]() ![]() ![]() ![]() |
1..1 | dateTime | Starting time with inclusive boundary | |
![]() ![]() ![]() ![]() |
1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Required Pattern: d | |
![]() ![]() |
0..* | BackboneElement | Daily adherence data components | |
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score | |
![]() ![]() ![]() ![]() |
1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak | |
![]() ![]() ![]() ![]() |
1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak | |
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |
![]() ![]() ![]() |
||||
![]() ![]() ![]() ![]() |
1..1 | Coding | Code defined by a terminology system | |
![]() ![]() ![]() ![]() ![]() |
0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations | |
![]() ![]() ![]() ![]() ![]() |
1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) | |
![]() ![]() ![]() |
1..1 | dateTime | Date of adherence measurement (one component per day) | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7, snapshot-status-final, final-observation-has-end-date | ||||
![]() ![]() |
Σ | 0..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
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 | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business Identifier for observation | ||||
![]() ![]() |
Σ | 1..1 | Reference(CarePlan) | Fulfills plan, proposal or order | ||||
![]() ![]() |
Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event | ||||
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. | ||||
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/ValueSet/observation-version-type | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Observation Version Type Value Set (required) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | uri | Identity of the terminology system Required Pattern: http://loinc.org | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Required Pattern: 71799-1 | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system Required Pattern: Adherence to prescribed medication instructions | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() |
Σ | 1..1 | Reference(Patient) | Who and/or what the observation is about | ||||
![]() ![]() |
Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record | ||||
![]() ![]() |
Σ | 0..1 | Reference(Encounter) | Healthcare event during which this observation is made | ||||
![]() ![]() |
Σ | 1..1 | Timing | Clinically relevant time/time-period for observation | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 0..* | dateTime | When the event occurs | ||||
![]() ![]() ![]() |
ΣC | 1..1 | Element | When the event is to occur Constraints: tim-1, tim-2, tim-4, tim-5, tim-6, tim-7, tim-8, tim-9, tim-10 | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | Period | Length/Range of lengths, or (Start and/or end) limits | ||||
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() ![]() |
ΣC | 1..1 | dateTime | Starting time with inclusive boundary | ||||
![]() ![]() ![]() ![]() ![]() |
ΣC | 0..1 | dateTime | End time with inclusive boundary, if not ongoing | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Number of times to repeat | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Maximum number of times to repeat | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | How long when it happens | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | How long when it happens (Max) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Event occurs frequency times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | positiveInt | Event occurs up to frequencyMax times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Event occurs frequency times per period | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | decimal | Upper limit of period (3-4 hours) | ||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | code | s | min | h | d | wk | mo | a - unit of time (UCUM) Binding: UnitsOfTime (required): A unit of time (units from UCUM). Required Pattern: d | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | code | mon | tue | wed | thu | fri | sat | sun Binding: DaysOfWeek (required) | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | time | Time of day for action | ||||
![]() ![]() ![]() ![]() |
Σ | 0..* | code | Code for time period of occurrence Binding: EventTiming (required): Real world event relating to the schedule. | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | unsignedInt | Minutes from event (before or after) | ||||
![]() ![]() ![]() |
Σ | 0..1 | CodeableConcept | BID | TID | QID | AM | PM | QD | QOD | + Binding: TimingAbbreviation (preferred): Code for a known / defined timing pattern. | ||||
![]() ![]() |
Σ | 0..1 | instant | Date/Time this version was made available | ||||
![]() ![]() |
Σ | 0..* | Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson) | Who is responsible for the observation | ||||
![]() ![]() |
ΣC | 0..1 | Actual result | |||||
![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() |
integer | |||||||
![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() |
Ratio | |||||||
![]() ![]() ![]() |
SampledData | |||||||
![]() ![]() ![]() |
time | |||||||
![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() |
Period | |||||||
![]() ![]() |
C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() |
0..* | Annotation | Comments about the observation | |||||
![]() ![]() |
0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality. | |||||
![]() ![]() |
0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations. | |||||
![]() ![]() |
0..1 | Reference(Specimen) | Specimen used for this observation | |||||
![]() ![]() |
0..1 | Reference(Device | DeviceMetric) | (Measurement) Device | |||||
![]() ![]() |
C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3 | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range. | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
![]() ![]() ![]() |
0..1 | Range | Applicable age range, if relevant | |||||
![]() ![]() ![]() |
0..1 | string | Text based reference range in an observation | |||||
![]() ![]() |
Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group | ||||
![]() ![]() |
Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from | ||||
![]() ![]() |
Σ | 0..* | BackboneElement | Daily adherence data components | ||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
6..* | Extension | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Daily Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/daily-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Total Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/total-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | decimal | Best Adherence Score Calculation URL: https://fhir.collabree.com/Extensions/best-adherence-score Constraints: decimal-normalized | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Daily Streak Calculation URL: https://fhir.collabree.com/Extensions/daily-streak Constraints: integer-not-negative | ||||
![]() ![]() ![]() ![]() |
C | 1..1 | integer | Best Streak Calculation URL: https://fhir.collabree.com/Extensions/best-streak Constraints: integer-not-negative | ||||
![]() ![]() ![]() ![]() |
1..1 | Money | Balance Calculation URL: https://fhir.collabree.com/fhir/Extensions/balance | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
Σ | 1..1 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() |
Σ | 1..1 | Coding | Code defined by a terminology system | ||||
![]() ![]() ![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | uri | Identity of the terminology system Required Pattern: https://fhir.collabree.com/fhir/Coding/medication-intake-calculations | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Version of the system - if relevant | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 1..1 | code | Symbol in syntax defined by the system Binding: Medication Intake Calculations Value Set (required) | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Representation defined by the system | ||||
![]() ![]() ![]() ![]() ![]() |
Σ | 0..1 | boolean | If this coding was chosen directly by the user | ||||
![]() ![]() ![]() ![]() |
Σ | 0..1 | string | Plain text representation of the concept | ||||
![]() ![]() ![]() |
Σ | 1..1 | dateTime | Date of adherence measurement (one component per day) | ||||
![]() ![]() ![]() |
C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() ![]() |
0..* | See referenceRange (Observation) | Provides guide for interpretation of component result | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.category.coding.code | Base | required | Observation Version Type Value Set | 📦0.1.0 | This IG |
| Observation.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.durationUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.periodUnit | Base | required | UnitsOfTime | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.dayOfWeek | Base | required | DaysOfWeek | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].repeat.when | Base | required | EventTiming | 📍4.0.1 | FHIR Std. |
| Observation.effective[x].code | Base | preferred | TimingAbbreviation | 📍4.0.1 | FHIR Std. |
| Observation.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std. |
| Observation.method | Base | example | Observation Methods | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.type | Base | preferred | Observation Reference Range Meaning Codes | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code.coding.code | Base | required | Medication Intake Calculations Value Set | 📦0.1.0 | This IG |
| Observation.component.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.component.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| decimal-normalized | error | Observation.component.extension:dailyAdherenceScore, Observation.component.extension:totalAdherenceScore, Observation.component.extension:bestAdherenceScore | Decimal values must be normalized between 0 and 1 (0% to 100%) when present |
valueDecimal.exists() implies (valueDecimal >= 0 and valueDecimal <= 1)
|
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| final-observation-has-end-date | error | Observation | If observation status is final, the effective timing period must have an end date |
status = 'final' implies effectiveTiming.repeat.boundsPeriod.end.exists()
|
| integer-not-negative | error | Observation.component.extension:dailyStreak, Observation.component.extension:bestStreak | Integer values must be non-negative (>= 0) when present |
valueInteger.exists() implies valueInteger >= 0
|
| obs-3 | error | Observation.referenceRange | Must have at least a low or a high or text |
low.exists() or high.exists() or text.exists()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
| snapshot-status-final | error | Observation | If category is snapshot, status must be final. If category is original, any status is allowed. |
category.coding.where(code='snapshot').exists() implies status='final'
|
| tim-1 | error | Observation.effective[x].repeat | if there's a duration, there needs to be duration units |
duration.empty() or durationUnit.exists()
|
| tim-2 | error | Observation.effective[x].repeat | if there's a period, there needs to be period units |
period.empty() or periodUnit.exists()
|
| tim-4 | error | Observation.effective[x].repeat | duration SHALL be a non-negative value |
duration.exists() implies duration >= 0
|
| tim-5 | error | Observation.effective[x].repeat | period SHALL be a non-negative value |
period.exists() implies period >= 0
|
| tim-6 | error | Observation.effective[x].repeat | If there's a periodMax, there must be a period |
periodMax.empty() or period.exists()
|
| tim-7 | error | Observation.effective[x].repeat | If there's a durationMax, there must be a duration |
durationMax.empty() or duration.exists()
|
| tim-8 | error | Observation.effective[x].repeat | If there's a countMax, there must be a count |
countMax.empty() or count.exists()
|
| tim-9 | error | Observation.effective[x].repeat | If there's an offset, there must be a when (and not C, CM, CD, CV) |
offset.empty() or (when.exists() and ((when in ('C' | 'CM' | 'CD' | 'CV')).not()))
|
| tim-10 | error | Observation.effective[x].repeat | If there's a timeOfDay, there cannot be a when, or vice versa |
timeOfDay.empty() or when.empty()
|
This structure is derived from Observation
Summary
Mandatory: 14 elements(9 nested mandatory elements)
Extensions
This structure refers to these extensions:
Other representations of profile: CSV, Excel, Schematron