diff --git a/examples/qoc_indicatorset.1.json b/examples/qoc_indicatorset.1.json
index 3041567..5e5b205 100644
--- a/examples/qoc_indicatorset.1.json
+++ b/examples/qoc_indicatorset.1.json
@@ -5,7 +5,7 @@
"chapters": [
{
"title": "Opbouw DM ketenzorg patiƫnten",
- "indicators": [
+ "indicatorGroups": [
[
{
"key": "ZOO-dm-prevalentie-1",
@@ -13,37 +13,25 @@
"index": 1,
"xMin": 0,
"xMax": 10.5,
- "xLow": {
- "pos": 2.0,
- "legend": "2.0%",
- "kind": "deviation"
- },
- "xHigh": {
- "pos": 8.2,
- "legend": "8.2%",
- "kind": "deviation"
- },
+ "markers": [2.0, 8.2],
"style": "met",
+ "counts": [232, 2268],
"bars": [
{
"legend": "Praktijk 2023Q3",
- "value": 2818,
- "parts": [
+ "segments": [
{
- "style": "concern",
- "width": 9.297374,
- "value": 262
+ "style": "measured",
+ "value": 9.28
}
]
},
{
"legend": "ZEL 2023Q3",
- "value": 325123,
- "parts": [
+ "segments": [
{
- "style": "good",
- "width": 4.919984,
- "value": 15996
+ "style": "measured",
+ "value": 4.919984
}
]
}
@@ -65,56 +53,47 @@
"problem1": "Beide",
"problem2": "Onbekend"
},
+ "counts": [25, 199, 8, 0],
"bars": [
{
"legend": "Praktijk 2023Q3",
- "value": 262,
- "parts": [
+ "segments": [
{
"style": "cat1",
- "width": 11.068702,
- "value": 29
+ "value": 10.775862
},
{
"style": "cat2",
- "width": 86.64122137,
- "value": 227
+ "value": 85.775862
},
{
"style": "problem1",
- "width": 2.29007634,
- "value": 6
+ "value": 3.448276
},
{
"style": "problem2",
- "width": 0,
"value": 0
}
]
},
{
"legend": "ZEL 2023Q3",
- "value": 15996,
- "parts": [
+ "segments": [
{
"style": "cat1",
- "width": 9.00225056,
- "value": 1440
+ "value": 9.00225056
},
{
"style": "cat2",
- "width": 86.996749,
- "value": 13916
+ "value": 86.996749
},
{
"style": "problem1",
- "width": 2.313078,
- "value": 370
+ "value": 2.313078
},
{
"style": "problem2",
- "width": 1.68792198,
- "value": 270
+ "value": 1.68792198
}
]
}
diff --git a/paths/qoc_indicatorset_{setKey}.yaml b/paths/qoc_indicatorset_{setKey}.yaml
index d91648d..f7fe9a6 100644
--- a/paths/qoc_indicatorset_{setKey}.yaml
+++ b/paths/qoc_indicatorset_{setKey}.yaml
@@ -9,7 +9,7 @@ get:
required: true
schema:
type: string
- example: ZEL-dm2
+ example: ZEL-dm
- name: refDate
in: query
description: |-
diff --git a/schemas/Indicator.yaml b/schemas/Indicator.yaml
index 7462f00..923819b 100644
--- a/schemas/Indicator.yaml
+++ b/schemas/Indicator.yaml
@@ -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
properties:
key:
@@ -40,51 +38,16 @@ properties:
type: number
example: 20.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: |-
- What kind of bound is represented.
- deviation
- - This marker represents X standard deviations above/below expected outcomes. Common for e.g. prevalence of a chronic illness.
- goal
- - This marker represents a goal, for example, You should measure blood pressure for at least this % of your managed diabetes patients.
-
- 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
- example: 18.0
- legend:
- type: string
- example: "18%"
- kind:
- type: string
- example: deviation
- enum:
- - deviation
- - goal
+ A marker is rendered on the percentage bar and represents a noteworthy boundary, for example, for a prevalence indicator,
+ one standard deviation up, respectively down, from the average, to provide context. Or, a goal as set forth by a zorggroep
+ or national standards body e.g. for how many diabetes patients should have a recent HbA1c measurement. If the indicator itself
+ is shown as a horizontal bar, this would be a small vertical line rendered on top of it.
+ type: array
+ items:
+ type: number
+ example: [25, 80]
unitDesc:
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).
@@ -106,10 +69,18 @@ properties:
- normal
- met
- 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:
description: >-
- *OPTIONAL* If present, render a legend box with the cart explaining what each kind of part (see `bars > parts`) represents.
- Each key/value pair in this object maps a style (as used `bars > parts > style`) onto a very short, dutch, *HTML* description.
+ *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 in `bars > segments > style`) onto a very short, dutch, *HTML* description.
type: object
example: |-
{
@@ -133,35 +104,32 @@ properties:
properties:
legend:
description: |-
- A short *HTML* (dutch) description of the entity+measurement date represented by this bar.
- If only one bar is provided, can be blank.
+ *OPTIONAL* A short *HTML* (dutch) description of the entity+measurement date represented by this bar.
+ If only one bar is provided, can be missing (no legend is needed).
type: string
example: Praktijk 2023Q3
- value:
- description: >-
- *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:
+ default: ''
+ segments:
type: array
items:
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
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.
- a percentage.
+ For example:
+ - 3 segments for 'blood pressure results': 40-Good, 35-Concern, 25-Problematic.
+ - 1 segment for 'blood pressure has been measured': 85-Measured
+
type: object
properties:
style:
description: |-
- Describes what kind of ratio this part 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.
+ Describes what kind of ratio this segment describes.
+ 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
example: concern
enum:
@@ -172,11 +140,9 @@ properties:
- measured
- nonPrefMeasured
- '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:
- 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
- example: 29
+ example: 29.72
diff --git a/schemas/IndicatorSet.yaml b/schemas/IndicatorSet.yaml
index 285c60e..993a964 100644
--- a/schemas/IndicatorSet.yaml
+++ b/schemas/IndicatorSet.yaml
@@ -26,10 +26,10 @@ properties:
description: In dutch, *HTML* formatted; should fit on one line.
type: string
example: Populatie
- indicators:
+ indicatorGroups:
description: |-
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.
type: array
items: