{
"openapi": "3.1.1",
"info": {
"title": "EHR API",
"version": "latest",
"x-status": "STABLE",
"x-spec": "ehr"
},
"servers": [
{
"url": "https://{baseUrl}/openehr/v1",
"description": "An example openEHR server URL.",
"variables": {
"baseUrl": {
"default": "cataniamc.prod.cadasto.com",
"description": "The (example) server base URL prefix providing openEHR services. This may contain server name, port and base path prefix."
}
}
}
],
"security": [],
"paths": {
"/ehr": {
"post": {
"operationId": "ehr_create",
"summary": "Create EHR",
"description": "Create a new `EHR` with an auto-generated identifier.\n\nAn EHR_STATUS resource needs to be always created and committed in the new EHR.\nThis resource MAY be also supplied by the client as the request body.\nIf not supplied, a default EHR_STATUS will be used by the service with following attributes:\n - `is_queryable`: true\n - `is_modifiable`: true\n - `subject`: a PARTY_SELF object\n\nAll other required EHR attributes and resources will be automatically created as needed by the [EHR creation semantics](https://specifications.openehr.org/releases/RM/latest/ehr.html#_ehr_creation_semantics).\n\nThe optional `cadasto-person-uid` request header links the new EHR to an existing\n[Demographic](/docs/guides/openehr#demographics) PERSON in the same contribution.\nSee the [Cadasto demographic link guide](/docs/guides/cadasto-demographic-link).\n",
"tags": [
"EHR"
],
"parameters": [
{
"$ref": "#/components/parameters/Prefer"
},
{
"$ref": "#/components/parameters/cadasto-person-uid"
}
],
"requestBody": {
"description": "An EHR_STATUS resource MAY be also supplied by the client as the request body.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EhrStatus"
}
}
},
"required": false
},
"responses": {
"201": {
"$ref": "#/components/responses/201_EHR"
},
"400": {
"$ref": "#/components/responses/400"
},
"409": {
"$ref": "#/components/responses/409_EHR"
},
"422": {
"$ref": "#/components/responses/422_cadasto_person_uid_unknown"
}
}
},
"get": {
"operationId": "ehr_get_by_subject",
"summary": "Get EHR by subject id",
"description": "Retrieve the EHR with the specified `subject_id` and `subject_namespace`.\n\nThese subject parameters will be matched against EHR's EHR_STATUS.subject.external_ref.id.value and \nEHR_STATUS.subject.external_ref.namespace values.\n",
"tags": [
"EHR"
],
"parameters": [
{
"$ref": "#/components/parameters/subject_id"
},
{
"$ref": "#/components/parameters/subject_namespace"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR"
},
"404": {
"$ref": "#/components/responses/404_EHR_subject"
}
}
}
},
"/ehr/{ehr_id}": {
"put": {
"operationId": "ehr_create_with_id",
"summary": "Create EHR with id",
"description": "Create a new EHR with the specified `ehr_id` identifier.\n\nThe value of the `ehr_id` unique identifier MUST be valid [HIER_OBJECT_ID](https://specifications.openehr.org/releases/BASE/latest/base_types.html#_hier_object_id_class) value.\nIt is strongly RECOMMENDED that an UUID always be used for this.\n\nAn EHR_STATUS resource needs to be always created and committed in the new EHR.\nThis resource MAY be also supplied by the client as the request body.\nIf not supplied, a default EHR_STATUS will be used by the service with following attributes:\n - `is_queryable`: true\n - `is_modifiable`: true\n - `subject`: a PARTY_SELF object\n\nAll other required EHR attributes and resources will be automatically created as needed by the [EHR creation semantics](https://specifications.openehr.org/releases/RM/latest/ehr.html#_ehr_creation_semantics).\n\nThe optional `cadasto-person-uid` request header links the new EHR to an existing\n[Demographic](/docs/guides/openehr#demographics) PERSON in the same contribution.\nSee the [Cadasto demographic link guide](/docs/guides/cadasto-demographic-link).\n",
"tags": [
"EHR"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/Prefer"
},
{
"$ref": "#/components/parameters/cadasto-person-uid"
}
],
"requestBody": {
"description": "An EHR_STATUS resource MAY be also supplied by the client as the request body.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EhrStatus"
}
}
},
"required": false
},
"responses": {
"201": {
"$ref": "#/components/responses/201_EHR"
},
"400": {
"$ref": "#/components/responses/400"
},
"409": {
"$ref": "#/components/responses/409_EHR_with_id"
},
"422": {
"$ref": "#/components/responses/422_cadasto_person_uid_unknown"
}
}
},
"get": {
"operationId": "ehr_get_by_id",
"summary": "Get EHR by id",
"description": "Retrieve the EHR with the specified `ehr_id`.\n\nSend the optional `include-cadasto-person-uid` request header to also receive the\nlinked PERSON UID in the `cadasto-person-uid` response header — see the\n[Cadasto demographic link guide](/docs/guides/cadasto-demographic-link).\n",
"tags": [
"EHR"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/include-cadasto-person-uid"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_get_by_id"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
}
}
}
},
"/ehr/{ehr_id}/ehr_status/{version_uid}": {
"get": {
"operationId": "ehr_status_get_by_version_id",
"summary": "Get EHR_STATUS by version id",
"description": "Retrieves a particular version of the EHR_STATUS identified by `version_uid` and associated with the EHR identified by `ehr_id`.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_uid"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_STATUS_retrieved"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_version_uid"
}
}
}
},
"/ehr/{ehr_id}/ehr_status": {
"get": {
"operationId": "ehr_status_get_at_time",
"summary": "Get EHR_STATUS at time",
"description": "Retrieves a version of the EHR_STATUS associated with the EHR identified by `ehr_id`.\n\nIf `version_at_time` is supplied, retrieves the version extant _at specified time_, otherwise retrieves the _latest_ EHR_STATUS version.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_at_time"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_STATUS_retrieved"
},
"400": {
"$ref": "#/components/responses/400_invalid_version_at_time"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_no_version_at_time"
}
}
},
"put": {
"operationId": "ehr_status_update",
"summary": "Update EHR_STATUS",
"description": "Updates EHR_STATUS associated with the EHR identified by `ehr_id`.\n\nThe existing latest `version_uid` of EHR_STATUS resource (i.e. the `preceding_version_uid`) must be specified in the `If-Match` header.\n\nThe response will contain the updated EHR_STATUS resource when the `Prefer` header has a value of `return=representation`.\n\nThe optional `openehr-item-tag` request header replaces all ITEM_TAG resources associated with the target in the same transaction as the update.\n\nThe optional `cadasto-person-uid` request header links the EHR to a PERSON in the\nsame contribution. The link is **append-only** here: an EHR that already has a\nlink cannot be re-linked via this header (`409 Conflict`). See the\n[Cadasto demographic link guide](/docs/guides/cadasto-demographic-link).\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/If-Match"
},
{
"$ref": "#/components/parameters/Prefer"
},
{
"$ref": "#/components/parameters/openehr-item-tag"
},
{
"$ref": "#/components/parameters/cadasto-person-uid"
}
],
"requestBody": {
"description": "The new EHR_STATUS.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EhrStatus"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_STATUS_updated"
},
"204": {
"$ref": "#/components/responses/204_EHR_STATUS"
},
"400": {
"$ref": "#/components/responses/400"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
},
"409": {
"$ref": "#/components/responses/409_EHR_STATUS_cadasto_person_uid"
},
"412": {
"$ref": "#/components/responses/412_EHR_STATUS"
},
"422": {
"$ref": "#/components/responses/422_cadasto_person_uid_unknown"
}
}
}
},
"/ehr/{ehr_id}/versioned_ehr_status": {
"get": {
"operationId": "versioned_ehr_status_get",
"summary": "Get versioned EHR_STATUS",
"description": "Retrieves a VERSIONED_EHR_STATUS associated with an EHR identified by `ehr_id`.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSIONED_EHR_STATUS"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
}
}
}
},
"/ehr/{ehr_id}/versioned_ehr_status/revision_history": {
"get": {
"operationId": "versioned_ehr_status_revision_history",
"summary": "Get versioned EHR_STATUS revision history",
"description": "Retrieves revision history of the VERSIONED_EHR_STATUS associated with the EHR identified by `ehr_id`.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_REVISION_HISTORY"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
}
}
}
},
"/ehr/{ehr_id}/versioned_ehr_status/version": {
"get": {
"operationId": "versioned_ehr_status_version_get_at_time",
"summary": "Get versioned EHR_STATUS version at time",
"description": "Retrieves a VERSION from the VERSIONED_EHR_STATUS associated with the EHR identified by `ehr_id`.\n\nIf `version_at_time` is supplied, retrieves the VERSION extant _at specified time_, otherwise retrieves the _latest_ VERSION.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_at_time"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSION_at_time"
},
"400": {
"$ref": "#/components/responses/400_invalid_version_at_time"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_no_version_at_time"
}
}
}
},
"/ehr/{ehr_id}/versioned_ehr_status/version/{version_uid}": {
"get": {
"operationId": "versioned_ehr_status_version_get_by_id",
"summary": "Get versioned EHR_STATUS version by id",
"description": "Retrieves a VERSION identified by `version_uid` of an EHR_STATUS associated with the EHR identified by `ehr_id`.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"EHR_STATUS"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_uid"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_version_uid"
}
}
}
},
"/ehr/{ehr_id}/composition": {
"post": {
"operationId": "composition_create",
"summary": "Create COMPOSITION",
"description": "Creates the first version of a new COMPOSITION in the EHR identified by `ehr_id`.\n\nThe optional `openehr-item-tag` request header attaches ITEM_TAG resources to the new COMPOSITION in the same transaction as the create.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/Prefer"
},
{
"$ref": "#/components/parameters/openehr-item-tag"
}
],
"requestBody": {
"description": "The COMPOSITION.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Composition"
}
}
},
"required": true
},
"responses": {
"201": {
"$ref": "#/components/responses/201_COMPOSITION"
},
"400": {
"$ref": "#/components/responses/400_COMPOSITION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
},
"422": {
"$ref": "#/components/responses/422_COMPOSITION"
}
}
}
},
"/ehr/{ehr_id}/composition/{uid_based_id}": {
"get": {
"operationId": "composition_get",
"summary": "Get COMPOSITION",
"description": "Retrieves a version of the COMPOSITION identified by `uid_based_id` and associated with the EHR identified by `ehr_id`.\n\nThe `uid_based_id` can take a form of an OBJECT_VERSION_ID identifier taken from VERSION.uid.value (i.e. a `version_uid`), or a form of a HIER_OBJECT_ID identifier taken from VERSIONED_OBJECT.uid.value (i.e. a `versioned_object_uid`).\nThe former is used to retrieve a specific known version of the COMPOSITION (e.g. one identified by `8849182c-82ad-4088-a07f-48ead4180515::cataniamc.prod.cadasto.com::1`), whereas the later (e.g. an identifier like `8849182c-82ad-4088-a07f-48ead4180515`) is be used to retrieve a version from the version container whenever the _version_tree_id_ is unknown or irrelevant (such as when most recent version is requested).\n\nWhen the `uid_based_id` has the form of a HIER_OBJECT_ID, if the `version_at_time` is supplied, retrieves the version extant _at specified time_, otherwise retrieves the _latest_ COMPOSITION version.\n\nSee [Resource identification](overview.html#tag/Resources/Resource-identification) for more details about the identifiers usage and meaning.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id"
},
{
"$ref": "#/components/parameters/version_at_time"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_COMPOSITION_retrieved"
},
"204": {
"$ref": "#/components/responses/204_because_deleted_at_time"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_no_version_at_time"
}
}
},
"put": {
"operationId": "composition_update",
"summary": "Update COMPOSITION",
"description": "Updates COMPOSITION identified by `uid_based_id` and associated with the EHR identified by `ehr_id`.\n\nThe `uid_based_id` can take only a form of an HIER_OBJECT_ID identifier taken from VERSIONED_OBJECT.uid.value (i.e. a `versioned_object_uid`).\n\nIf the request body already contains a COMPOSITION.uid.value, it must match the `uid_based_id` in the URL.\n\nThe existing latest `version_uid` of COMPOSITION resource (i.e. the `preceding_version_uid`) must be specified in the `If-Match` header.\n\nThe optional `openehr-item-tag` request header replaces all ITEM_TAG resources associated with the target in the same transaction as the update.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_as_versioned_object_uid"
},
{
"$ref": "#/components/parameters/If-Match"
},
{
"$ref": "#/components/parameters/Prefer"
},
{
"$ref": "#/components/parameters/openehr-item-tag"
}
],
"requestBody": {
"description": "The new COMPOSITION.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Composition"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/200_COMPOSITION_updated"
},
"400": {
"$ref": "#/components/responses/400_COMPOSITION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
},
"412": {
"$ref": "#/components/responses/412_COMPOSITION"
},
"422": {
"$ref": "#/components/responses/422_COMPOSITION"
}
}
},
"delete": {
"operationId": "composition_delete",
"summary": "Delete COMPOSITION",
"description": "Deletes the COMPOSITION identified by `uid_based_id` and associated with the EHR identified by `ehr_id`.\n\nThe `uid_based_id` MUST be in a form of an OBJECT_VERSION_ID identifier taken from the last (most recent) VERSION.uid.value, representing the `preceding_version_uid` to be deleted.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_as_version_uid"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204_COMPOSITION_deleted"
},
"400": {
"$ref": "#/components/responses/400_already_deleted"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
},
"409": {
"$ref": "#/components/responses/409_COMPOSITION_with_uid_based_id"
}
}
}
},
"/ehr/{ehr_id}/versioned_composition/{versioned_object_uid}": {
"get": {
"operationId": "versioned_composition_get",
"summary": "Get versioned COMPOSITION",
"description": "Retrieves a VERSIONED_COMPOSITION identified by `versioned_object_uid` and associated with the EHR identified by `ehr_id`.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/versioned_object_uid_COMPOSITION"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSIONED_COMPOSITION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_versioned_object_uid"
}
}
}
},
"/ehr/{ehr_id}/versioned_composition/{versioned_object_uid}/revision_history": {
"get": {
"operationId": "versioned_composition_revision_history",
"summary": "Get versioned COMPOSITION revision history",
"description": "Retrieves revision history of the VERSIONED_COMPOSITION identified by `versioned_object_uid` and associated with the EHR identified by `ehr_id`.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/versioned_object_uid_COMPOSITION"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_REVISION_HISTORY"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_versioned_object_uid"
}
}
}
},
"/ehr/{ehr_id}/versioned_composition/{versioned_object_uid}/version": {
"get": {
"operationId": "versioned_composition_version_get_at_time",
"summary": "Get versioned COMPOSITION version at time",
"description": "Retrieves a VERSION from the VERSIONED_COMPOSITION identified by `versioned_object_uid` and associated with the EHR identified by `ehr_id`.\n\nIf `version_at_time` is supplied, retrieves the VERSION extant _at specified time_, otherwise retrieves the _latest_ VERSION.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/versioned_object_uid_COMPOSITION"
},
{
"$ref": "#/components/parameters/version_at_time"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSION_of_COMPOSITION_at_time"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_versioned_object_uid_or_no_version_at_time"
}
}
}
},
"/ehr/{ehr_id}/versioned_composition/{versioned_object_uid}/version/{version_uid}": {
"get": {
"operationId": "versioned_composition_version_get_by_id",
"summary": "Get versioned COMPOSITION version by id",
"description": "Retrieves a VERSION identified by `version_uid` of a VERSIONED_COMPOSITION identified by `versioned_object_uid` and associated with the EHR identified by `ehr_id`.\n\nSend `Prefer: include_item_tags` to also receive the `openehr-item-tag` response header with the current tags.\n",
"tags": [
"COMPOSITION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/versioned_object_uid_COMPOSITION"
},
{
"$ref": "#/components/parameters/version_uid_COMPOSITION"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_VERSION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_versioned_object_uid_or_version_uid"
}
}
}
},
"/ehr/{ehr_id}/directory": {
"post": {
"operationId": "directory_create",
"summary": "Create directory",
"description": "This endpoint is defined but not implemented by the server.",
"tags": [
"DIRECTORY"
],
"responses": {
"501": {
"description": "This endpoint is not implemented."
}
}
},
"put": {
"operationId": "directory_update",
"summary": "Update directory",
"description": "Updates directory FOLDER associated with the EHR identified by `ehr_id`.\n\nThe existing latest `version_uid` of directory FOLDER resource (i.e. the `preceding_version_uid`) must be specified in the `If-Match` header.\n",
"tags": [
"DIRECTORY"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/If-Match"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"requestBody": {
"description": "The new directory.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Folder"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/200_directory_updated"
},
"204": {
"$ref": "#/components/responses/204_directory_updated"
},
"400": {
"$ref": "#/components/responses/400_FOLDER"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
},
"412": {
"$ref": "#/components/responses/412_directory"
}
}
},
"delete": {
"operationId": "directory_delete",
"summary": "Delete directory",
"description": "This endpoint is defined but not implemented by the server.",
"tags": [
"DIRECTORY"
],
"responses": {
"501": {
"description": "This endpoint is not implemented."
}
}
},
"get": {
"operationId": "directory_get_at_time",
"summary": "Get folder in directory version at time",
"description": "Retrieves the version of the directory FOLDER associated with the EHR identified by `ehr_id`. \nIf `version_at_time` is supplied, retrieves the version extant _at specified time_, otherwise retrieves the _latest_ directory FOLDER version. \n\nIf `path` is supplied, retrieves from the directory only the sub-FOLDER that is associated with that path.\n",
"tags": [
"DIRECTORY"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_at_time"
},
{
"$ref": "#/components/parameters/path"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_FOLDER_retrieved"
},
"204": {
"$ref": "#/components/responses/204_because_deleted_at_time"
},
"404": {
"$ref": "#/components/responses/404_directory_unknown_ehr_id_or_no_version_at_time_or_no_path"
}
}
}
},
"/ehr/{ehr_id}/directory/{version_uid}": {
"get": {
"operationId": "directory_get_by_version_id",
"summary": "Get folder in directory version",
"description": "Retrieves a particular version of the directory FOLDER identified by `version_uid` and associated with the EHR identified by `ehr_id`.\n\nIf `path` is supplied, retrieves from the directory only the sub-FOLDER that is associated with that path.\n",
"tags": [
"DIRECTORY"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/version_uid"
},
{
"$ref": "#/components/parameters/path"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_FOLDER_retrieved"
},
"404": {
"$ref": "#/components/responses/404_directory_unknown_ehr_id_or_no_version_uid_or_no_path"
}
}
}
},
"/ehr/{ehr_id}/contribution": {
"post": {
"operationId": "contribution_create",
"summary": "Create CONTRIBUTION",
"description": "We will use the relaxed CONTRIBUTION with the following optional attributes:\n - `uid`: when provided, it will be accepted in case is not in-use, otherwise error will be returned\n - `audit.time_committed`: server will always set it\n - `audit.system_id`: when provided, it will be validated\n",
"tags": [
"CONTRIBUTION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"requestBody": {
"description": "The CONTRIBUTION.\n",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NewContribution"
}
}
},
"required": true
},
"responses": {
"201": {
"$ref": "#/components/responses/201_CONTRIBUTION"
},
"400": {
"$ref": "#/components/responses/400_CONTRIBUTION"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
},
"409": {
"$ref": "#/components/responses/409"
}
}
}
},
"/ehr/{ehr_id}/contribution/{contribution_uid}": {
"get": {
"operationId": "contribution_get",
"summary": "Get CONTRIBUTION by id",
"description": "Retrieves a CONTRIBUTION identified by `contribution_uid` and associated with the EHR identified by `ehr_id`.\n",
"tags": [
"CONTRIBUTION"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/contribution_uid"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_CONTRIBUTION"
},
"404": {
"$ref": "#/components/responses/404_CONTRIBUTION"
}
}
}
},
"/ehr/{ehr_id}/tags": {
"get": {
"operationId": "ehr_tags_get",
"summary": "Get EHR tags",
"description": "Retrieves the list of ITEM_TAG resources associated with any target VERSIONED_OBJECT\nwithin the EHR identified by `ehr_id`.\n\nThe list can be filtered by `tag_key`, `tag_value`, or `tag_target_path` query parameters.\nWhen no filter is provided, all ITEM_TAG resources for the EHR are returned.\n\nReturns an empty list when the EHR has no tags matching the filter.\n\nMore than one ITEM_TAG may be associated with a single target — they are uniquely identified\nby their `(key, target_path)` pair.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/tag_key"
},
{
"$ref": "#/components/parameters/tag_value"
},
{
"$ref": "#/components/parameters/tag_target_path"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_COMPOSITION_ItemTagList_retrieved"
},
"400": {
"$ref": "#/components/responses/400"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id"
}
}
}
},
"/ehr/{ehr_id}/composition/{uid_based_id}/tags": {
"get": {
"operationId": "composition_tags_get",
"summary": "Get COMPOSITION tags",
"description": "Retrieves the list of all ITEM_TAG resources associated with the target COMPOSITION\nidentified by `uid_based_id` and owned by the EHR identified by `ehr_id`.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n\nReturns an empty list when the target has no tags. More than one ITEM_TAG may be\nassociated with a single target — they are uniquely identified by their `(key, target_path)` pair.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_COMPOSITION_ItemTagList_retrieved"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
}
}
},
"put": {
"operationId": "composition_tags_update",
"summary": "Update COMPOSITION tags",
"description": "Replaces the full ITEM_TAG list for the target COMPOSITION identified by `uid_based_id`\nand owned by the EHR identified by `ehr_id`.\n\nReplace semantics: the supplied list becomes the complete tag set. Tags that were present\nbut are not in the new list are removed. Sending an empty list clears all tags.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n\nMore than one ITEM_TAG may be associated with a single target — they are uniquely identified\nby their `(key, target_path)` pair.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UpdateItemTag"
}
}
}
}
},
"responses": {
"200": {
"$ref": "#/components/responses/200_COMPOSITION_ItemTagList_updated"
},
"204": {
"$ref": "#/components/responses/204_ItemTag_updated"
},
"400": {
"$ref": "#/components/responses/400"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
}
}
}
},
"/ehr/{ehr_id}/composition/{uid_based_id}/tags/{key}": {
"delete": {
"operationId": "composition_tags_delete",
"summary": "Delete COMPOSITION tag by key",
"description": "Deletes the ITEM_TAG resource(s) identified by `key`, associated with the target COMPOSITION\nidentified by `uid_based_id` and owned by the EHR identified by `ehr_id`.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
},
{
"$ref": "#/components/parameters/key"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204_ItemTag_updated"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id_or_key"
}
}
}
},
"/ehr/{ehr_id}/ehr_status/{uid_based_id}/tags": {
"get": {
"operationId": "ehr_status_tags_get",
"summary": "Get EHR_STATUS tags",
"description": "Retrieves the list of all ITEM_TAG resources associated with the target EHR_STATUS\nidentified by `uid_based_id` and owned by the EHR identified by `ehr_id`.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n\nReturns an empty list when the target has no tags. More than one ITEM_TAG may be\nassociated with a single target — they are uniquely identified by their `(key, target_path)` pair.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_STATUS_ItemTagList_retrieved"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
}
}
},
"put": {
"operationId": "ehr_status_tags_update",
"summary": "Update EHR_STATUS tags",
"description": "Replaces the full ITEM_TAG list for the target EHR_STATUS identified by `uid_based_id`\nand owned by the EHR identified by `ehr_id`.\n\nReplace semantics: the supplied list becomes the complete tag set. Tags that were present\nbut are not in the new list are removed. Sending an empty list clears all tags.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n\nMore than one ITEM_TAG may be associated with a single target — they are uniquely identified\nby their `(key, target_path)` pair.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
},
{
"$ref": "#/components/parameters/Prefer"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UpdateItemTag"
}
}
}
}
},
"responses": {
"200": {
"$ref": "#/components/responses/200_EHR_STATUS_ItemTagList_updated"
},
"204": {
"$ref": "#/components/responses/204_ItemTag_updated"
},
"400": {
"$ref": "#/components/responses/400"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id"
}
}
}
},
"/ehr/{ehr_id}/ehr_status/{uid_based_id}/tags/{key}": {
"delete": {
"operationId": "ehr_status_tags_delete",
"summary": "Delete EHR_STATUS tag by key",
"description": "Deletes the ITEM_TAG resource(s) identified by `key`, associated with the target EHR_STATUS\nidentified by `uid_based_id` and owned by the EHR identified by `ehr_id`.\n\n> **Cadasto exception:** the `uid_based_id` must be a `versioned_object_uid` (HIER_OBJECT_ID).\n> Targeting a specific version with an OBJECT_VERSION_ID is **not** supported.\n",
"tags": [
"ITEM_TAG"
],
"parameters": [
{
"$ref": "#/components/parameters/ehr_id"
},
{
"$ref": "#/components/parameters/uid_based_id_for_tags"
},
{
"$ref": "#/components/parameters/key"
}
],
"responses": {
"204": {
"$ref": "#/components/responses/204_ItemTag_updated"
},
"404": {
"$ref": "#/components/responses/404_unknown_ehr_id_or_uid_based_id_or_key"
}
}
}
}
},
"tags": [
{
"name": "EHR",
"description": "Management of [EHRs](https://specifications.openehr.org/releases/RM/latest/ehr.html#_ehr_class).\nActions upon resources of this group are also formally described in the [I_EHR_SERVICE](https://specifications.openehr.org/releases/SM/latest/openehr_platform.html#_i_ehr_service_interface) Abstract Service Model interface.\n"
},
{
"name": "EHR_STATUS",
"description": "Management of [EHR_STATUS](https://specifications.openehr.org/releases/RM/latest/ehr.html#_ehr_status_class) and [VERSIONED_EHR_STATUS](https://specifications.openehr.org/releases/RM/latest/ehr.html#_versioned_ehr_status_class) resources.\nActions upon resources of this group are also formally described in the [I_EHR_STATUS](https://specifications.openehr.org/releases/SM/latest/openehr_platform.html#_i_ehr_status_interface) Abstract Service Model interface.\n"
},
{
"name": "COMPOSITION",
"description": "Management of [COMPOSITION](https://specifications.openehr.org/releases/RM/latest/ehr.html#_composition_class) and [VERSIONED_COMPOSITION](https://specifications.openehr.org/releases/RM/latest/ehr.html#_versioned_composition_class) resources.\nActions upon resources of this group are also formally described in the [I_EHR_COMPOSITION](https://specifications.openehr.org/releases/SM/latest/openehr_platform.html#_i_ehr_composition_interface) Abstract Service Model interface.\n"
},
{
"name": "DIRECTORY",
"description": "Management of the [directory](https://specifications.openehr.org/releases/RM/latest/ehr.html#_directory) [FOLDER](https://specifications.openehr.org/releases/RM/latest/common.html#_folder_class) resource.\nActions upon resources of this group are also formally described in the [I_EHR_DIRECTORY](https://specifications.openehr.org/releases/SM/latest/openehr_platform.html#_i_ehr_directory_interface) Abstract Service Model interface.\n"
},
{
"name": "CONTRIBUTION",
"description": "Management of [CONTRIBUTION](https://specifications.openehr.org/releases/RM/latest/common.html#_contribution_class) resource.\nActions upon resources of this group are also formally described in the [I_EHR_CONTRIBUTION](https://specifications.openehr.org/releases/SM/latest/openehr_platform.html#_i_ehr_contribution_interface) Abstract Service Model interface.\n"
},
{
"name": "ITEM_TAG",
"description": "Management of [ITEM_TAG](https://specifications.openehr.org/releases/RM/latest/common.html#_item_tag_class) resources for compositions and EHR_STATUS within an EHR.\n\nTags can also be set inline via the `openehr-item-tag` request header on COMPOSITION/EHR_STATUS create and update operations, and are emitted via the `openehr-item-tag` response header on read operations.\n\n> **Cadasto exceptions:**\n> - The `openehr-version-item-tag` request and response header is **not supported**. Sending it returns `400 Bad Request`.\n> - The `uid_based_id` path parameter on these endpoints accepts **only** `versioned_object_uid` (HIER_OBJECT_ID); OBJECT_VERSION_ID is not supported.\n\nSee the [item_tags guide](/docs/guides/item-tag) for end-to-end examples and error formats.\n"
},
{
"name": "EHR_schema",
"x-displayName": "EHR",
"description": "This resource is formally specified in Reference Model as the [EHR](https://specifications.openehr.org/releases/RM/latest/ehr.html#_ehr_class) class.\n\n