type: object required: - key - title - type - style - bars properties: key: description: Unique identifier, not to be shown to the user, for referring to this indicator in other API calls type: string example: ZEL-dm2-bp-result basedOn: description: |- *OPTIONAL* Refers to the key of another indicator in this set; the data this indicator represents is a calculation based on the population of the referred-to indicator. Not necessarily something that needs to be shown in the user interface. type: string example: ZEL-dm2-bp title: description: Short, in dutch, plain text. type: string example: Prevalentie Diabetes type: description: |- What kind of indicator this is. `basic` and `goal` are roughly the same: They represent the measurement/registration status of a certain medical aspect, such as blood pressure, and always break down in 3 groups: "Patients for whom this measurement/registration has been performed", "same, but in a way that cannot be parsed or isn't the preferred registration/measurement method", "not measured/registered". A `goal` type also has a goal of some sort (a minimum % of patients for which this property needs to be measured/registered, for example to meet care group aims or a goal stipulated by a national standard or insurance negotiation). A `basic` type doesn't have such a goal. `prevalence` is somewhat special: It measures how many patients are relevant for the care this indicatorset is about. `result` represents the patients for whom a certain medical aspect is registered/measured, divided into categories. For example, for bloodpressure, all those patients with a valid, standardized blood pressure measurement are sorted into "their blood pressure is allright", "their blood pressure is a bit high", and "they suffer from high blood pressure". result type indicators have legends. type: string example: basic enum: - basic - goal - prevalence - result index: description: |- *OPTIONAL* Indicators usually are based on documentation that tends to take the form of an ordered list (like html `
    `), and it is convenient for indicators to copy this numbering scheme. For most UI applications, simply prefix this to the title, e.g. render as `1. Title Here`. If missing, do not show an index in the title. type: integer format: int32 minimum: 1 example: 1 xMin: description: |- Numeric value of the far left of the bar; represents a ratio (0.0-1.0). Most indicators range from 0% to 100%, but for some, where the values to be shown represent only a small percentage, the bar is 'zoomed in'; it represents only a slice of the total range. type: number example: .05 default: 0.0 xMax: description: |- Numeric value of the far right of the bar; represents a ratio (0.0-1.0). Most indicators range from 0% to 100%, but for some, where the values to be shown represent only a small percentage, the bar is 'zoomed in'; it represents only a slice of the total range. Generally, `prevalence` type indicators have an `xMax` that isn't 1.0. type: number example: .105 default: 1.0 markers: description: |- 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. Generally, `prevalence` and `goal` type indicators have markers. 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). type: string example: mmHg default: '' style: description: |- A key that describes the render style for this entire indicator. For example, 'failed' indicates that the indicator should be rendered with a red hue to focus the user's attention on the fact that this indicator represents a goal or requirement that they do not currently meet. type: string example: failed default: normal enum: - normal - pass - fail 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 card explaining what each kind of segment (see `bars > segments`) represents. Each item in this array maps maps a style (as used in `bars > segments > style`) onto a very short, dutch, *HTML* description. Generally only `result` type indicators have a `legend`. type: array items: type: object properties: title: description: The short, human readable description (dutch, *HTML*). type: string category: description: A key indicating which style to apply this segment / legend. type: string enum: - preferred - alternative - negative - regProblem - red - orange - high - good - low - yes - await - no - late - concern - mild - serious value: description: The amount of patients in this segment for the main bar. type: number example: |- [ { "title": "≥140", "category": "serious", "value": 11 }, { "title": "120-140", "category": "concern", "value" 50 }, { "title": "≤120", "category": "good", "value": 60 } ] bars: type: array items: description: >- Each bar describes the calculated result for one entity at one measurement date. For example, an indicator box could contain 3 such entries: * The practice, this quarter. * The practice, previous quarter (to put this quarter into context). * GP group (zorg groep)'s results this quarter. There is always at least one. The first one is the main bar, that is, what this report is reporting on; all further bars exist solely to provide context. type: object required: - segments properties: legend: description: |- *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 default: '' segments: type: array items: description: >- 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. 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. 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 required: - style - value properties: style: description: |- 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. Same categories as `legend` - `category` type: string example: concern value: 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: 0.2972