openapi: 3.2.0 info: title: EHRbase EHR API description: 'EHRbase implements the official openEHR REST API. Additionally, EHRbase provides a custom `status` heartbeat endpoint, an Admin API (if activated) and a Status and Metrics API (if activated) for monitoring and maintenance. Note: The openEHR REST API is documented in their official documentation, not here. Please refer to their separate documentation.' license: name: Apache 2.0 url: https://github.com/ehrbase/ehrbase/blob/develop/LICENSE.md version: v1 servers: - url: https://sandkiste.ehrbase.org/ehrbase description: Generated server url tags: - name: EHR paths: /rest/openehr/v1/ehr/{ehr_id}: get: tags: - EHR summary: Get EHR by id externalDocs: url: https://specifications.openehr.org/releases/ITS-REST/latest/ehr.html#tag/EHR/operation/ehr_get_by_id operationId: getEhrById parameters: - name: ehr_id in: path required: true schema: type: string responses: '200': description: OK, is returned when the requested EHR resource is successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/Ehr' '404': description: Not Found, is returned when an EHR with ehr_id does not exist. put: tags: - EHR summary: Create EHR with id externalDocs: url: https://specifications.openehr.org/releases/ITS-REST/1.0.3/ehr.html#tag/EHR/operation/ehr_get_by_id operationId: createEhrWithId parameters: - name: openEHR-VERSION in: header required: false schema: type: string - name: openEHR-AUDIT_DETAILS in: header required: false schema: type: string - name: Prefer in: header required: false schema: type: string - name: ehr_id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EhrStatus' responses: '201': description: Created, is returned when the EHR has been successfully created. The new EHR resource is returned in the body when the request's Prefer header value is return=representation , otherwise only headers are returned. content: application/json: schema: $ref: '#/components/schemas/Ehr' '400': description: Bad Request, is returned when the request URL or body (if provided) could not be parsed or has invalid content. '409': description: Conflict, Unable to create a new EHR due to a conflict with an already existing EHR with the same subject id, namespace pair, whenever EHR_STATUS is supplied. /rest/openehr/v1/ehr: get: tags: - EHR summary: Get EHR summary by subject id and namespace externalDocs: url: https://specifications.openehr.org/releases/ITS-REST/latest/ehr.html#tag/EHR/operation/ehr_get_by_subject operationId: getEhrBySubject parameters: - name: subject_id in: query required: true schema: type: string - name: subject_namespace in: query required: true schema: type: string responses: '200': description: OK, is returned when the requested EHR resource is successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/Ehr' '404': description: Not Found, is returned when an EHR with supplied subject parameters does not exist. post: tags: - EHR summary: Create EHR externalDocs: url: https://specifications.openehr.org/releases/ITS-REST/latest/ehr.html#tag/EHR/operation/ehr_create operationId: createEhr parameters: - name: openEHR-VERSION in: header required: false schema: type: string - name: openEHR-AUDIT_DETAILS in: header required: false schema: type: string - name: Prefer in: header required: false schema: type: string default: return=minimal requestBody: content: application/json: schema: $ref: '#/components/schemas/EhrStatus' responses: '201': description: Created, is returned when the EHR has been successfully created. The new EHR resource is returned in the body when the request's Prefer header value is return=representation , otherwise only headers are returned. content: application/json: schema: $ref: '#/components/schemas/Ehr' '400': description: Bad Request, is returned when the request URL or body (if provided) could not be parsed or has invalid content. '409': description: Conflict, Unable to create a new EHR due to a conflict with an already existing EHR with the same subject id, namespace pair, whenever EHR_STATUS is supplied. components: schemas: ObjectId: type: object properties: value: type: string EhrStatus: type: object properties: name: $ref: '#/components/schemas/DvText' archetypeNodeId: type: string uid: $ref: '#/components/schemas/UIDBasedId' archetypeDetails: $ref: '#/components/schemas/Archetyped' feederAudit: $ref: '#/components/schemas/FeederAudit' links: type: - array - 'null' items: $ref: '#/components/schemas/Link' subject: $ref: '#/components/schemas/PartySelf' otherDetails: $ref: '#/components/schemas/ItemStructure' path: type: string is_modifiable: type: boolean is_queryable: type: boolean TermMapping: type: object properties: match: type: string purpose: $ref: '#/components/schemas/DvCodedText' target: $ref: '#/components/schemas/CodePhrase' DvDuration: type: 'null' properties: normalStatus: $ref: '#/components/schemas/CodePhrase' normalRange: $ref: '#/components/schemas/DvIntervalDvDuration' otherReferenceRanges: type: - array - 'null' items: $ref: '#/components/schemas/ReferenceRangeDvDuration' magnitudeStatus: type: - string - 'null' accuracy: type: - number - 'null' format: double accuracyIsPercent: type: - boolean - 'null' value: type: object properties: units: type: array items: type: object properties: durationEstimated: type: boolean duration: type: string timeBased: type: boolean dateBased: type: boolean ItemStructure: type: 'null' properties: name: $ref: '#/components/schemas/DvText' archetypeNodeId: type: string uid: $ref: '#/components/schemas/UIDBasedId' archetypeDetails: $ref: '#/components/schemas/Archetyped' feederAudit: type: 'null' links: type: - array - 'null' items: $ref: '#/components/schemas/Link' items: type: array items: $ref: '#/components/schemas/Item' path: type: string Archetyped: type: 'null' properties: archetypeId: $ref: '#/components/schemas/ArchetypeID' templateId: $ref: '#/components/schemas/TemplateId' rmVersion: type: string PartyRef: type: 'null' properties: namespace: type: string type: type: string id: $ref: '#/components/schemas/ObjectId' ReferenceRangeDvDateTime: type: object properties: range: $ref: '#/components/schemas/DvIntervalDvDateTime' meaning: $ref: '#/components/schemas/DvText' ObjectRefObjectId: type: object properties: namespace: type: string type: type: string id: $ref: '#/components/schemas/ObjectId' PartyProxy: type: 'null' properties: externalRef: $ref: '#/components/schemas/PartyRef' DvIntervalDvDuration: type: 'null' properties: lower: $ref: '#/components/schemas/DvDuration' upper: $ref: '#/components/schemas/DvDuration' lowerUnbounded: type: boolean upperUnbounded: type: boolean lowerIncluded: type: boolean upperIncluded: type: boolean TerminologyId: type: object properties: value: type: string DvCodedText: type: 'null' properties: value: type: string hyperlink: $ref: '#/components/schemas/DvURI' formatting: type: - string - 'null' language: $ref: '#/components/schemas/CodePhrase' encoding: $ref: '#/components/schemas/CodePhrase' definingCode: $ref: '#/components/schemas/CodePhrase' UIDBasedId: type: 'null' properties: value: type: string Ehr: type: object properties: systemId: $ref: '#/components/schemas/HierObjectId' ehrId: $ref: '#/components/schemas/HierObjectId' contributions: type: - array - 'null' items: $ref: '#/components/schemas/ObjectRefObjectId' ehrStatus: $ref: '#/components/schemas/ObjectRefObjectId' ehrAccess: $ref: '#/components/schemas/ObjectRefObjectId' compositions: type: - array - 'null' items: $ref: '#/components/schemas/ObjectRefObjectId' directory: $ref: '#/components/schemas/ObjectRefObjectId' folders: type: - array - 'null' items: $ref: '#/components/schemas/ObjectRefObjectId' timeCreated: $ref: '#/components/schemas/DvDateTime' PartySelf: type: object properties: externalRef: $ref: '#/components/schemas/PartyRef' DvEncapsulated: type: 'null' properties: charset: $ref: '#/components/schemas/CodePhrase' language: $ref: '#/components/schemas/CodePhrase' Item: type: object properties: name: $ref: '#/components/schemas/DvText' archetypeNodeId: type: string uid: $ref: '#/components/schemas/UIDBasedId' archetypeDetails: $ref: '#/components/schemas/Archetyped' feederAudit: type: 'null' links: type: - array - 'null' items: $ref: '#/components/schemas/Link' path: type: string TemplateId: type: 'null' properties: value: type: string PartyIdentified: type: 'null' properties: externalRef: $ref: '#/components/schemas/PartyRef' name: type: - string - 'null' identifiers: type: - array - 'null' items: $ref: '#/components/schemas/DvIdentifier' ReferenceRangeDvDuration: type: object properties: range: $ref: '#/components/schemas/DvIntervalDvDuration' meaning: $ref: '#/components/schemas/DvText' DvIntervalDvDateTime: type: 'null' properties: lower: $ref: '#/components/schemas/DvDateTime' upper: $ref: '#/components/schemas/DvDateTime' lowerUnbounded: type: boolean upperUnbounded: type: boolean lowerIncluded: type: boolean upperIncluded: type: boolean DvEHRURI: type: object properties: value: type: string format: uri ArchetypeID: type: object properties: qualified_rm_entity: type: string writeOnly: true domain_concept: type: string writeOnly: true rm_originator: type: string writeOnly: true rm_name: type: string writeOnly: true rm_entity: type: string writeOnly: true specialisation: type: - string - 'null' versionId: type: - string - 'null' value: type: string namespace: type: - string - 'null' qualifiedRmEntity: type: - string - 'null' domainConcept: type: - string - 'null' rmOriginator: type: - string - 'null' rmName: type: - string - 'null' rmEntity: type: - string - 'null' semanticId: type: string fullId: type: string Link: type: object properties: meaning: $ref: '#/components/schemas/DvText' type: $ref: '#/components/schemas/DvText' target: $ref: '#/components/schemas/DvEHRURI' DvDateTime: type: 'null' properties: normalStatus: $ref: '#/components/schemas/CodePhrase' normalRange: $ref: '#/components/schemas/DvIntervalDvDateTime' otherReferenceRanges: type: - array - 'null' items: $ref: '#/components/schemas/ReferenceRangeDvDateTime' magnitudeStatus: type: - string - 'null' accuracy: $ref: '#/components/schemas/DvDuration' value: {} CodePhrase: type: 'null' properties: terminologyId: $ref: '#/components/schemas/TerminologyId' codeString: type: string preferredTerm: type: - string - 'null' DvIdentifier: type: object properties: issuer: type: - string - 'null' assigner: type: - string - 'null' id: type: string type: type: - string - 'null' FeederAuditDetails: type: 'null' properties: systemId: type: string location: $ref: '#/components/schemas/PartyIdentified' provider: $ref: '#/components/schemas/PartyIdentified' subject: $ref: '#/components/schemas/PartyProxy' time: $ref: '#/components/schemas/DvDateTime' versionId: type: - string - 'null' otherDetails: $ref: '#/components/schemas/ItemStructure' HierObjectId: type: object properties: value: type: string DvURI: type: 'null' properties: value: type: string format: uri DvText: type: object properties: value: type: string hyperlink: $ref: '#/components/schemas/DvURI' formatting: type: - string - 'null' mappings: type: - array - 'null' items: $ref: '#/components/schemas/TermMapping' language: $ref: '#/components/schemas/CodePhrase' encoding: $ref: '#/components/schemas/CodePhrase' FeederAudit: type: 'null' properties: originatingSystemItemIds: type: - array - 'null' items: $ref: '#/components/schemas/DvIdentifier' feederSystemItemIds: type: - array - 'null' items: $ref: '#/components/schemas/DvIdentifier' originalContent: $ref: '#/components/schemas/DvEncapsulated' originatingSystemAudit: $ref: '#/components/schemas/FeederAuditDetails' feederSystemAudit: $ref: '#/components/schemas/FeederAuditDetails' externalDocs: description: EHRbase Documentation url: https://docs.ehrbase.org/