[qoc] Updated indicatorset schema based on IAMIT and HealthConnected feedback

EH/population-statistics-authorisation
Reinier Zwitserloot 3 years ago
parent 11c28bbf75
commit a546385a8c
No known key found for this signature in database
GPG Key ID: DADEDCAA42950296

@ -5,7 +5,7 @@
"chapters": [ "chapters": [
{ {
"title": "Opbouw DM ketenzorg patiënten", "title": "Opbouw DM ketenzorg patiënten",
"indicators": [ "indicatorGroups": [
[ [
{ {
"key": "ZOO-dm-prevalentie-1", "key": "ZOO-dm-prevalentie-1",
@ -13,37 +13,25 @@
"index": 1, "index": 1,
"xMin": 0, "xMin": 0,
"xMax": 10.5, "xMax": 10.5,
"xLow": { "markers": [2.0, 8.2],
"pos": 2.0,
"legend": "2.0%",
"kind": "deviation"
},
"xHigh": {
"pos": 8.2,
"legend": "8.2%",
"kind": "deviation"
},
"style": "met", "style": "met",
"counts": [232, 2268],
"bars": [ "bars": [
{ {
"legend": "Praktijk 2023Q3", "legend": "Praktijk 2023Q3",
"value": 2818, "segments": [
"parts": [
{ {
"style": "concern", "style": "measured",
"width": 9.297374, "value": 9.28
"value": 262
} }
] ]
}, },
{ {
"legend": "ZEL 2023Q3", "legend": "ZEL 2023Q3",
"value": 325123, "segments": [
"parts": [
{ {
"style": "good", "style": "measured",
"width": 4.919984, "value": 4.919984
"value": 15996
} }
] ]
} }
@ -65,56 +53,47 @@
"problem1": "Beide", "problem1": "Beide",
"problem2": "Onbekend" "problem2": "Onbekend"
}, },
"counts": [25, 199, 8, 0],
"bars": [ "bars": [
{ {
"legend": "Praktijk 2023Q3", "legend": "Praktijk 2023Q3",
"value": 262, "segments": [
"parts": [
{ {
"style": "cat1", "style": "cat1",
"width": 11.068702, "value": 10.775862
"value": 29
}, },
{ {
"style": "cat2", "style": "cat2",
"width": 86.64122137, "value": 85.775862
"value": 227
}, },
{ {
"style": "problem1", "style": "problem1",
"width": 2.29007634, "value": 3.448276
"value": 6
}, },
{ {
"style": "problem2", "style": "problem2",
"width": 0,
"value": 0 "value": 0
} }
] ]
}, },
{ {
"legend": "ZEL 2023Q3", "legend": "ZEL 2023Q3",
"value": 15996, "segments": [
"parts": [
{ {
"style": "cat1", "style": "cat1",
"width": 9.00225056, "value": 9.00225056
"value": 1440
}, },
{ {
"style": "cat2", "style": "cat2",
"width": 86.996749, "value": 86.996749
"value": 13916
}, },
{ {
"style": "problem1", "style": "problem1",
"width": 2.313078, "value": 2.313078
"value": 370
}, },
{ {
"style": "problem2", "style": "problem2",
"width": 1.68792198, "value": 1.68792198
"value": 270
} }
] ]
} }

@ -9,7 +9,7 @@ get:
required: true required: true
schema: schema:
type: string type: string
example: ZEL-dm2 example: ZEL-dm
- name: refDate - name: refDate
in: query in: query
description: |- description: |-

@ -1,5 +1,3 @@
description: |-
A single ratio or flat number; should be shown as one box with a chart (generally, a single fixed-size bar with each ratio element rendered on this bar). The numbers in this object are on some axis, generally, percentage.
type: object type: object
properties: properties:
key: key:
@ -40,51 +38,16 @@ properties:
type: number type: number
example: 20.0 example: 20.0
default: 100.0 default: 100.0
xLow: markers:
description: |-
*OPTIONAL* If present, draw a marker at this position indicating a lower bound. Values can be below it, but that is noteworthy, for example
because that deviates far from national averages, or this bound represents a goal set by the practice/insurer/care group and falling below it
means the goal is not met.
type: object
properties:
pos:
description: The percentage at which the marker is to be drawn.
type: number
example: 14.0
legend:
description: A very short (dutch, *HTML*) description of what this marker represents.
type: string
example: "14%"
kind:
description: |- description: |-
What kind of bound is represented.<dl> A marker is rendered on the percentage bar and represents a noteworthy boundary, for example, for a prevalence indicator,
<dd><code>deviation</code></dd> one standard deviation up, respectively down, from the average, to provide context. Or, a goal as set forth by a zorggroep
<dt>This marker represents X standard deviations above/below expected outcomes. Common for e.g. prevalence of a chronic illness.</dt> or national standards body e.g. for how many diabetes patients should have a recent HbA1c measurement. If the indicator itself
<dd><code>goal</code></dd> is shown as a horizontal bar, this would be a small vertical line rendered on top of it.
<dt>This marker represents a goal, for example, You should measure blood pressure for at least this % of your managed diabetes patients.</dt> type: array
</dl> items:
type: string
example: deviation
enum:
- deviation
- goal
xHigh:
description: |-
Like `xLow`, but representing a higher limit instead (expectation is that nominal values would be _below_ this limit).
type: object
properties:
pos:
type: number type: number
example: 18.0 example: [25, 80]
legend:
type: string
example: "18%"
kind:
type: string
example: deviation
enum:
- deviation
- goal
unitDesc: unitDesc:
description: |- description: |-
*OPTIONAL* describes the unit that the stated legend values are in, in dutch, and *HTML*. For example, if showing blood pressure, `mmHg`. If missing, treat as the empty string (do not show unit at all). *OPTIONAL* describes the unit that the stated legend values are in, in dutch, and *HTML*. For example, if showing blood pressure, `mmHg`. If missing, treat as the empty string (do not show unit at all).
@ -106,10 +69,18 @@ properties:
- normal - normal
- met - met
- focus - focus
counts:
description: >-
*OPTIONAL* If present, the actual values (i.e. number of patients) for each segment of the main bar; if the bar is not complete
(the values do not add up to 100), an extra value is included representing this remainder.
type: array
items:
type: number
example: [11, 157, 0, 2]
legend: legend:
description: >- description: >-
*OPTIONAL* If present, render a legend box with the cart explaining what each kind of part (see `bars > parts`) represents. *OPTIONAL* If present, render a legend box with the card explaining what each kind of segment (see `bars > segments`) represents.
Each key/value pair in this object maps a style (as used `bars > parts > style`) onto a very short, dutch, *HTML* description. Each key/value pair in this object maps a style (as used in `bars > segments > style`) onto a very short, dutch, *HTML* description.
type: object type: object
example: |- example: |-
{ {
@ -133,35 +104,32 @@ properties:
properties: properties:
legend: legend:
description: |- description: |-
A short *HTML* (dutch) description of the entity+measurement date represented by this bar. *OPTIONAL* A short *HTML* (dutch) description of the entity+measurement date represented by this bar.
If only one bar is provided, can be blank. If only one bar is provided, can be missing (no legend is needed).
type: string type: string
example: Praktijk 2023Q3 example: Praktijk 2023Q3
value: default: ''
description: >- segments:
*OPTIONAL* A number indicating the absolute value of what the entire bar represents. For example, if the bar represents
the number of patients included in the diabetes care program that have a recent blood pressure value, this value would
contain the total number of patients included in the care program, which serves as the divisor for this indicator.
type: number
example: 262
parts:
type: array type: array
items: items:
description: >- description: >-
Each part represents a slice of the total population. For example, those patients in the diabetes care program with Each segment represents a slice of the measured population. For example, those patients in the diabetes care program with
a recent blood pressure measurement registration, or, for an indicator showing the distribution of blood pressure a recent blood pressure measurement registration, or, for an indicator showing the distribution of blood pressure
values amongst those with a recent registration, the number of patients whose BP measurement is of serious health concern. values amongst those with a recent registration, the number of patients whose BP measurement is of serious health concern.
For example, there could be 3 parts: 40-Good, 35-Concern, 25-Problematic. Place each segment in sequence in the bar. They are guaranteed to fit. The values for each part are relative to `xMin`/`xMax`, e.g.
a percentage. They may not add up to 100 - in that case, leave the remainder blank.
Place each part in sequence in the bar. They are guaranteed to fit. The values for each part are relative to `xMin`/`xMax`, e.g. For example: <ul>
a percentage. <li>3 segments for 'blood pressure results': 40-Good, 35-Concern, 25-Problematic.</li>
<li>1 segment for 'blood pressure has been measured': 85-Measured</li>
</ul>
type: object type: object
properties: properties:
style: style:
description: |- description: |-
Describes what kind of ratio this part describes. Describes what kind of ratio this segment describes.
Each part represents some kind of ratio and this describes the nature of it. Each key should result in some style, generally, the color of the bar. For example, `serious` (indicating a group of patients whose lab result for this indicator is of serious concern, i.e. medically speaking quite bad news) should be rendered dark red. Each segment represents some kind of ratio and this describes the nature of it. Render the segment according to its style. For example, `serious` (indicating a group of patients whose lab result for this indicator is of serious concern, i.e. medically speaking quite bad news) could be rendered dark red.
type: string type: string
example: concern example: concern
enum: enum:
@ -172,11 +140,9 @@ properties:
- measured - measured
- nonPrefMeasured - nonPrefMeasured
- 'TBD: There are many more.' - 'TBD: There are many more.'
width:
description: The size of this part, in percentages (i.e. relative to `xMin`-`xMax`).
type: number
example: 11.068702
value: value:
description: The absolute value (representing a number of patients), relative to the bar's `value` property. description: |-
The value (in percent). For example, if `xMin` is 10, `xMax` is 40, and this is 20, render this segment at 33% of
the total length (because 20 is a third of the way in, in the range 10-40).
type: number type: number
example: 29 example: 29.72

@ -26,10 +26,10 @@ properties:
description: In dutch, *HTML* formatted; should fit on one line. description: In dutch, *HTML* formatted; should fit on one line.
type: string type: string
example: Populatie example: Populatie
indicators: indicatorGroups:
description: |- description: |-
A chapter contains 1 or more indicator groups. An indicator group is an array of indicators which should A chapter contains 1 or more indicator groups. An indicator group is an array of indicators which should
always be shown together; they are each other's context. These arrays are not empty, but often contain always be shown together; they are each other's context. These arrays are never empty, but often contain
just one indicator. It is extremely rare for such a set to contain more than 2. just one indicator. It is extremely rare for such a set to contain more than 2.
type: array type: array
items: items:

Loading…
Cancel
Save