You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zoo-api/paths/patient_dossier.yaml

183 lines
9.1 KiB
YAML

get:
tags:
- Patient
summary: Get detailed medical dossier info for the stated patient
description: |-
WorkInProgress: The API may require you to provide the person on whose authority this request is being made,
which will be logged and reviewed for the _Principle of Least Privilege_ policy.
Known design parameters:
- send along the date on which the result is based (GPIS snapshot date)
- Sender must send a key (or list of keys) representing the context, such as 'DM', 'Obesitas', 'Dietetiek', etc. We combine the targeted data (the GP or zorggroep) with these keys to know precisely what we filter (we do not just return all medical dossier data).
- uptime is important; these API calls are done live as patients show.
- q - edit it a bit, can be for example 'dm' or even 'dm/dietetiek'. Send all relevant parts in one response.
- required response categories: Journaal, Bepalingen, Medicatie, episodes.
parameters:
- $ref: '../zoo-api.yaml#/components/parameters/AgbGP'
- name: bsn
in: query
description: |-
The SSN (dutch: _BSN_) of a patient to look up. May only contain digits, cannot contain more than 9 digits, and cannot be 0.
Either `bsn` or `pu` must be present.
schema:
type: integer
format: int32
minimum: 1
maximum: 999999999
example: 123456789
- name: pu
in: query
required: false
description: |-
The Patient unique ID, as e.g. reported by `/patient/base`'s `patUnid` response.
Either `bsn` or `pu` must be present. We do not recommend including both; if this is done, _both_ filters are applied, and
patient info is only returned if a patient exists matching both.
schema:
type: string
example: ""
- name: q
in: query
required: false
description: |-
A comma-separated list of dossier aspects to query. If omitted, everything is returned.
The keys match the keys in the JSON structure that is returned on a success, such as `medication` or `measurements`.
Current list of aspects:
- personal (basic info such as birth dates and address)
- careprograms (which actively managed chronic care programs the patient participates in)
- episodes (chronic conditions and problems)
- measurements (lab values, process management, answers to basic questions)
- feats (declared acts such as 'standard consult')
- correspondence (messages sent and received about this patient to other care professionals)
- medications
- contraindications
- journals
schema:
type: array
items:
type: string
minItems: 1
example: "q=medication,measurements"
- name: purpose
in: query
description: |-
A unique key identifying for what purpose this request is being made. Keys are agreed upon between
ZorgOpOrde and the API user, and will result in the data returned filtered down to what is relevant / necessary for
the stated purpose. For example, `"diet-dm2"` would be a key to represent that this patient is being
enrolled in Diabetes Mellitus chronic care and a report on this patient's DM status is being prepared to send
to a licensed dietitian. The data returned would be filtered to only include those aspects relevant for this task.
required: true
schema:
type: string
example: diet-dm2
- $ref: '../zoo-api.yaml#/components/parameters/Authorization'
responses:
'400':
$ref: '../zoo-api.yaml#/components/responses/ReqFailure'
'401':
$ref: '../zoo-api.yaml#/components/responses/JwtFailure'
'403':
description: |-
Practice associated with the JWT is known but has not authorized ZOO to share information with signer for the provided purpose.
This error also occurs if the provided purpose isn't a known key.
'404':
$ref: '../zoo-api.yaml#/components/responses/PatNotFound'
'200':
description: |-
Detailed medical dossier information for the patient is returned.
Filtered to only return what was requested (via optional query parameter `q`), and including only those aspects
of the medical dossier relevant for the stated purpose.
content:
application/json:
schema:
type: object
properties:
personal:
description: |-
Contains core identification information about this patient; a duplication of the `/patient/base` API.
type: object
properties:
bsn:
$ref: '../schemas/PatIdentity.yaml#/bsn'
name:
$ref: '../schemas/PatIdentity.yaml#/name'
gender:
$ref: '../schemas/PatIdentity.yaml#/gender'
dob:
$ref: '../schemas/PatIdentity.yaml#/dob'
category:
$ref: '../schemas/PatIdentity.yaml#/category'
doctor:
$ref: '../schemas/PatIdentity.yaml#/doctor'
address:
$ref: '../schemas/PatIdentity.yaml#/address'
contact:
$ref: '../schemas/PatIdentity.yaml#/contact'
insurance:
$ref: '../schemas/PatIdentity.yaml#/insurance'
patid:
$ref: '../schemas/PatIdentity.yaml#/patid'
patUnid:
$ref: '../schemas/PatIdentity.yaml#/patUnid'
startDate:
$ref: '../schemas/PatIdentity.yaml#/startDate'
endDate:
$ref: '../schemas/PatIdentity.yaml#/endDate'
endReason:
$ref: '../schemas/PatIdentity.yaml#/endReason'
episodes:
type: array
description: |-
Lists chronic problems or other diagnosed medical issues (dutch: _behandelingen / episodes / problemen_) based on ICPC1-NL.
items:
$ref: '../schemas/med_dossier/Episode.yaml'
measurements:
type: array
description: |-
Lists measurements, including lab-determined values (example: Direct measurement of LDL cholesterol in a blood sample),
measurements done by the practicioner or by the patient themselves (example: weight), care process information
(such as 'responsible for chronic diabetes care: Specialist'), and answers to questionnaires such as 'do you have trouble
walking up stairs').
items:
$ref: '../schemas/med_dossier/Measurement.yaml'
feats:
type: array
description: |-
Lists declarable acts (dutch: _verrichtingen_, also known as _prestaties_), and includes:
* actual work done (such as spending 10 minutes with a patient)
* material that is paid separately (such some nitrogen to burn off a wart)
* 'subscription' fees such as the standard subscription fee as well as extras charged for each patient per quarter (dutch: _inschrijf_ en _module_ tarieven).
items:
$ref: '../schemas/med_dossier/Feat.yaml'
correspondence:
type: array
description: |-
Lists records of correspondence (excluding correspondence within the GP office and correspondence with the patient themselves).
items:
$ref: '../schemas/med_dossier/Correspondence.yaml'
medications:
type: array
description: |-
Lists medication, either prescribed, or delivered to the patient (or both, of course).
items:
$ref: '../schemas/med_dossier/Medication.yaml'
contraindications:
type: array
description: |-
Lists registered contra-indications, also often used for the generalized concept of popping up warnings any time
this patient's information is shown to a practicioner. Generally simply is an alternate take on a list of problems
a patient suffers from; specifically issues that may affect unrelated care (such as allergies, mental issues, and so on).
items:
$ref: '../schemas/med_dossier/Contraindication.yaml'
journals:
type: array
description: |-
Lists registered journal entries - text typed by practicioners for a variety of reasons, including representing what the
patient themselves tells the practicioner (can include verbatim copies of what the patient wrote for text-based telehealth systems),
as well as explaining in text the conclusions included in a lab report received via mail.
items:
$ref: '../schemas/med_dossier/Journal.yaml'