ЕСОЗ - публічна документація
Medical Events MongoDB Data Model
- 1 Concept
- 1.1 Immunization
- 2 Changes and decisions
- 3 Data Structure
- 3.1.1 Important!
- 3.2 Patient
- 3.3 Episode of care
- 3.4 Encounter
- 3.5 Visit
- 3.6 Observation
- 3.7 Medication request
- 3.8 Condition
- 3.9 Immunization
- 3.10 Allergy intolerance
- 3.11 Risk Assessment
- 3.12 Device
- 3.13 Medication Statement
- 3.14 Medication Administration
- 3.15 Device dispense
- 4 Procedure
- 5 Complex Types
- 5.1 reference
- 5.2 identifier
- 5.3 codeable_concept
- 5.4 coding
- 5.5 period
- 5.6 period_date
- 5.7 status_history
- 5.8 diagnosis
- 5.9 diagnoses_hstr
- 5.10 stage
- 5.11 evidence
- 5.12 explanation
- 5.13 reaction
- 5.14 vaccination_protocol
- 5.15 value
- 5.16 component
- 5.17 reference_range
- 5.18 effective_at
- 5.19 source
- 5.20 quantity
- 5.21 range
- 5.22 prediction
- 5.23 probability
- 5.24 when
- 5.25 UDI
- 5.26 extended_reference
- 5.27 reason
- 5.28 paper_referral
- 5.29 dosage
- 5.30 timing
Concept
1. Medical Events Data Structure is designed to be relevant for FHIR( Release 3 (STU)) Standart. All the resources, most of the data types and their way of usage are inherited from FHIR. However, some resources may not inherit ALL the properties or may require additional extension properties that are not provided by FHIR.
2. There are high requirementts for the API to be scalable, reliable and resilient. It should be guaranteed that each request is processed, even under the high load. In order to fulfil these requirements FHIR async pattern is implemented for the medical data processing.
3. The API and the persistence both operate FHIR resources. The data is stored in FHIR format, therefore there's no need in any transformation on the application layer.
4. Medical data is stored in no-sql format in order to support the versatility of the structure that is a core advantage of FHIR.
Immunization
Changes and decisions
Decision | Reason | Date | Approved |
---|---|---|---|
Data Structure
This section describes the actual data structure in eHealth MongoDB and how does it correspond to FHIR standard.
Some fields in Data Model may not correspond directly to the API interfaces. They are transformed on the application level.
Important!
Next objects contain audit fields by default:
Episode
Visit
Encounter
Observation
Condition
Immunization
Allergy_intolerance
Device
Risk_assessment
Medication_statement
Procedure
Diagnostic report
Clinical impression
Specimen
Device dispense
Audit fields:
Name | Type | M/O | |
---|---|---|---|
inserted_at | dateTime | M | |
updated_at | dateTime | M | |
inserted_by | uuid | M | |
updated_by | uuid | M |
Patient
Object name: patient
Name | Type | M/O | Description and constraints |
---|---|---|---|
id | AES+base16 | M | hash |
status | string | M | |
inserted_by | uuid | M | |
preperson | boolean | M |
Episode of care
Object name: episode_of_care
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Business Identifier(s) relevant for this EpisodeOfCare | id | uuid | M | Ok | Approved | |
name | string | M | Ok | |||
status | code | M | active, closed, entered_in_error | Ok | Approved | |
number | string | M | Human readable episode number. Is a shared identifier common to all service requests related to this episode of care | No implementation [3.12.2018] | ||
cancellation_reason | codeable_concept | O | No implementation | |||
closing_reason | codeable_concept | O | No implementation | |||
status_reason | codeable_concept | O | eHealth/closing_reasons, | |||
explanatory_letter | string | O | ||||
closing_summary | string | O | ||||
"statusHistory" : BackboneElement | status_history | M | only start date | Ok | Approved | |
"type" : [{ CodeableConcept }], // Type/class - e.g. specialist referral, disease management | type | coding | M | deafult value: primary_care | Ok | Approved |
current_diagnoses | O | |||||
"diagnosis" : BackboneElement | diagnoses_history | M | Included all diagnoses from latest encounter (current_diagnoses) and all diagnoses from previous encounters | Ok | Approved | |
"patient" : { Reference(Patient) }, // R! The patient who is the focus of this episode of care | patient | reference(patient) | M | Is a part of the corresponding collection | Approved | |
"managingOrganization" : { Reference(Organization) }, // Organization that assumes care | managing_organization | reference(organization) | M | Legal_entity | Ok | Approved |
"period" : { Period }, // Interval during responsibility is assumed | period | M | Only date handled | Approved | ||
"referralRequest" : [{ Reference(ReferralRequest) }], // Originating Referral Request(s) | Referral Request(s) that are fulfilled by this EpisodeOfCare, incoming referrals. | No implementation | Approved | |||
"careManager" : { Reference(Practitioner) }, // Care manager/care co-ordinator for the patient | care_manager | reference(employee) | M | Employee | Ok | Approved |
"team" : [{ Reference(CareTeam) }], // Other practitioners facilitating this episode of care | No implementation | Approved | ||||
"account" : [{ Reference(Account) }] // The set of accounts that may be used for billing for this EpisodeOfCare } | No implementation | Approved | ||||
encounters | [encounter] | M | mongo | No implementation |
Encounter
Object name: encounter
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Identifier(s) by which this encounter is known | id | uuid | M | Ok | |
"status" : "<code>", // R! planned | arrived | triaged | in-progress | onleave | finished | cancelled + | status | string | M | finished, entered_in_error | Ok |
contexts | M | visit, episode | No implementation [07.09.2018] | ||
explanatory_letter | string | O | |||
cancellation_reason | codeable_concept | O | |||
"statusHistory" : BackboneElement | status_history | status_history | M | No implementation | |
"classHistory" : BackboneElement | No implementation | ||||
"period" : { Period } // R! The time that the episode was in the specified status }], | period | M | No implementation | ||
date | string | M | Date when the encounter was performed | Changed to ISO8601 [1.12.2018] | |
"class" : { Coding }, // inpatient | outpatient | ambulatory | emergency + | class | coding | M | eHealth/encounter_classes | Ok |
"type" : [{ CodeableConcept }], // Specific type of encounter | type | M | email consultation, phone consultation | Ok | |
"priority" : { CodeableConcept }, // Indicates the urgency of the encounter | O | eHealth/encounter_priority | Ok | ||
"subject" : { Reference(Patient|Group) }, // The patient ro group present at the encounter | patient | reference(patient) | M | No implementation | |
"episodeOfCare" : [{ Reference(EpisodeOfCare) }], // Episode(s) of care that this encounter should be recorded against | episode | reference(episode) | M | Ok | |
visit | reference(visit) | M | |||
"incomingReferral" : [{ Reference(ReferralRequest) }], // The ReferralRequest that initiated this encounter | incoming_referral | reference(service_request) | O | Ok | |
"participant":BackboneElement | performer | reference(employee) | Ok | ||
"appointment" : { Reference(Appointment) }, // The appointment that scheduled this encounter | No implementation | ||||
"length" : { Duration }, // Quantity of time the encounter lasted (less time absent) | duration | duration | M | No implementation | |
"reason" : [{ CodeableConcept }], // Reason the encounter takes place (code) | reasons | M | array of ICPC reasons codes | Ok | |
"diagnosis" : BackboneElement | diagnoses | [diagnosis] | M | Ok | |
"serviceProvider" : { Reference(Organization) }, // The custodian organization of this Encounter record | service_provider | reference(legal_entity) | M | legal_entity | Is already in Episode |
"partOf" : { Reference(Encounter) } // Another Encounter this encounter is part of } | No implementation | ||||
"location": BackboneElement | No implementation | ||||
Absent in FHIR | division | reference(division) | O | division_id | |
Absent in FHIR | actions | O | array of ICPC actions codes Obligation depends on encounter class, e.g. mandatory for PHC and optional for AMB | ||
Absent in FHIR | action_reference | array | O | array of references to medical services which were provided to the patient during encounter | |
Absent in FHIR | signed_content_links | [string] | M | array of links to media storage | |
Absent in FHIR | prescriptions | string | O | Field designed to store prescriptions and recommendations made by the doctor during the encounter. Will be deprecated after medication statements implemented. | |
Absent in FHIR | supporting_info | [reference(observation|diagnostic_report)] | O | Diagnostic reports and observations that were used during the encounter | New |
"hospitalization" :
{
"preAdmissionIdentifier" : { Identifier },
"origin" : { Reference(Location|Organization) },
"admitSource" : { CodeableConcept },
"reAdmission" : { CodeableConcept },
"dietPreference" : [{ CodeableConcept }],
"specialCourtesy" : [{ CodeableConcept }],
"specialArrangement" : [{ CodeableConcept }],
"destination":{ Reference(Location|Organization)},
"dischargeDisposition" : { CodeableConcept },
"dischargeDepartment" : { CodeableConcept }
}, | hospitalization - discharge_department | hospitalization - dict. Health/encounter_discharge_department | O | is mandatory for encounter class = SS, ACUTE, NONAC | |
Absent in FHIR | paper_referral | O |
Visit
Object name: visit
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
No | id | uuid | M | ||
No | period | M |
Observation
Object name: observation
Medication request
Object name: medication_request
Condition
Object name: condition
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Business identifier | id | uuid | M | Ok | Approved | |
"clinicalStatus" : "<code>", // C? active | recurrence | inactive | remission | resolved | clinical_status | string | M | Ok | ||
"verificationStatus" : "<code>", // C? provisional | differential | confirmed | refuted | entered-in-error | unknown | verification_status | string | M | provisional | differential | confirmed | refuted | entered_in_error | Ok | |
"category" : [{ CodeableConcept }], // problem-list-item | encounter-diagnosis | category | M | No implementation | |||
"severity" : { CodeableConcept }, // Subjective severity of condition | severity | O | Ok | |||
"code" : { CodeableConcept }, // Identification of the condition, problem or diagnosis | code | M | ICPC2 or ICD10 code: depends on context encounter class | Ok | ||
"bodySite" : [{ CodeableConcept }], // Anatomical location, if relevant | body_sites | O | Ok | |||
"subject" : { Reference(Patient|Group) }, // R! Who has the condition? | patient | uuid | M | Ok | ||
"context" : { Reference(Encounter|EpisodeOfCare) }, // Encounter or episode when condition first asserted | context | reference(encounter) | M | Ok | ||
"onsetDateTime" : "<dateTime>", | onset_date | string | M | date_time | Ok | |
onset_age | positiveInt | O | Ok | No implementation | ||
"onsetPeriod" : { Period }, | onset_period | O | Ok | No implementation | ||
"onsetRange" : { Range }, | onset_range | range | O | Ok | No implementation | |
"onsetString" : "<string>", | onset_string | string | O | Ok | No implementation | |
"abatementDateTime" : "<dateTime>", | abatement_date_time | date_time | O | Ok | No implementation | |
"abatementAge" : { Age }, | abatement_age | age | O | Ok | No implementation | |
"abatementBoolean" : <boolean>, | abatement_boolean | boolean | O | Ok | No implementation | |
"abatementPeriod" : { Period }, | abatement_period | O | Ok | No implementation | ||
"abatementRange" : { Range }, | abatement_range | range | O | Ok | No implementation | |
"abatementString" : "<string>", | abatement_string | string | O | Ok | No implementation | |
"assertedDate" : "<dateTime>", // Date record was believed accurate | asserted_date | string | O | Date record was believed accurate date_time | Ok | |
primary_source | boolean | M | ||||
M | ||||||
report_origin | codeable_concept | O | Covered by Medical Events MongoDB Data Model#source | No implementation | ||
"asserter" : { Reference(Practitioner|Patient|RelatedPerson) }, // Person who asserts this condition | asserter | reference(employee|patient) | O | Covered by Medical Events MongoDB Data Model#source | No implementation | |
"stage" : Backbone | stage | O | Ok | |||
"evidence" : Backbone | evidences | O | Ok | |||
"note" : [{ Annotation }] // Additional information about the Condition | note | [annotation] | O | Ok | No implementation | |
Absent in FHIR | context_episode_id | string | М | Identifier of the episode context based on Condition as part of Encounter was created |
|
|
Immunization
Object name: immunization
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Business identifier | id | uuid | M | Ok | |
"status" : "<code>", // R! completed | entered-in-error | status | string | M | completed | entered_in_error | Ok |
"notGiven" : <boolean>, // R! Flag for whether immunization was given | not_given | boolean | M | Ok | |
"vaccineCode" : { CodeableConcept }, // R! Vaccine product administered | vaccine_code | codeable_concept | M | Ok | |
"patient" : { Reference(Patient) }, // R! Who was immunized | patient | reference(patient) | M | No implementation | |
"encounter" : { Reference(Encounter) }, // Encounter administered as part of | context | reference(encounter) | M | This a encounter on which immunization was registered | Ok |
"date" : "<dateTime>", // Vaccination administration date | date | string | M | string | Ok |
"primarySource" : <boolean>, // R! Indicates context the data was recorded in | primary_source | boolean | M | Ok | |
M | |||||
"reportOrigin" : { CodeableConcept }, // Indicates the source of a secondarily reported record | report_origin | codeable_concept | O | Covered by Medical Events MongoDB Data Model#source | Ok |
"location" : { Reference(Location) }, // Where vaccination occurred | legal_entity | reference(legal_entity) | O | Ok | |
"manufacturer" : { Reference(Organization) }, // Vaccine manufacturer | manufacturer | string | O | Ok | |
"lotNumber" : "<string>", // Vaccine lot number | lot_number | string | O | Ok | |
"expirationDate" : "<date>", // Vaccine expiration date | expiration_date | string | O | date_time | Ok |
"site" : { CodeableConcept }, // Body site vaccine was administered | site | codeable_concept | O | Ok | |
"route" : { CodeableConcept }, // How vaccine entered body | route | codeable_concept | O | Ok | |
"doseQuantity" : { Quantity(SimpleQuantity) }, // Amount of vaccine administered | dose_quantity | quantity | O | Ok | |
"practitioner" : BackboneElement | performer | reference(employee) | O | Covered by Medical Events MongoDB Data Model#source | ok |
"note" : [{ Annotation }], // Vaccination notes | No implementation | ||||
"explanation" : BackboneElement | explanation | O | Ok | ||
"reaction" : BackboneElement | reactions | O | Ok | ||
"vaccinationProtocol" : BackboneElement | vaccination_protocols | O | Ok |
Allergy intolerance
Object name: allergy_intolerance
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Business identifier | id | uuid | M | Ok | |
"clinicalStatus" : "<code>", // C? active | inactive | resolved | clinical_status | string | M | dictionary | Ok |
"verificationStatus" : "<code>", // C? R! unconfirmed | confirmed | refuted | entered-in-error | verification_status | string | M | dictionary | Ok |
"type" : "<code>", // allergy | intolerance - Underlying mechanism (if known) | type | string | M | Ok | |
"category" : ["<code>"], // food | medication | environment | biologic | category | string | M | dictionary | Ok |
"criticality" : "<code>", // low | high | unable-to-assess | criticality | string | M | dictionary | Ok |
"code" : { CodeableConcept }, // Code that identifies the allergy or intolerance | code | codeable_concept | M | Ok | |
"patient" : { Reference(Patient) }, // R! Who the sensitivity is for | reference(patient) | M | No implementation | ||
"onsetDateTime" : "<dateTime>", | onset_date_time | string | M | date_time | Ok |
No implementation | |||||
"onsetPeriod" : { Period }, | No implementation | ||||
"onsetRange" : { Range }, | No implementation | ||||
"onsetString" : "<string>", | No implementation | ||||
"assertedDate" : "<dateTime>", // Date record was believed accurate | asserted_date | string | M | date_time | Ok |
"recorder" : { Reference(Practitioner|Patient) }, // Who recorded the sensitivity | recorder | reference(patient| employee) | M | No implementation | |
primary_source | boolean | M | |||
M | |||||
report_origin | codeable_concept | O | Covered by Medical Events MongoDB Data Model#source | ok | |
"asserter" : { Reference(Patient|RelatedPerson|Practitioner) }, // Source of the information about the allergy | asserter | reference(patient|employee) | O | Covered by Medical Events MongoDB Data Model#source | ok |
"lastOccurrence" : "<dateTime>", // Date(/time) of last known occurrence of a reaction | last_occurence | string | O | date_time | Ok |
"note" : [{ Annotation }], // Additional text not captured in other fields | No implementation | ||||
"reaction" : BackboneElement | reaction | reaction | M | No implementation | |
context | reference(encounter) | M | Ok |
Risk Assessment
Object name: risk_assessment
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"identifier" : { Identifier }, // Unique identifier for the assessment | id | uuid | M | Ok | ||
"basedOn" : { Reference(Any) }, // Request fulfilled by this assessment | based_on | reference(service_request) | O | service request? | No implementation | |
"parent" : { Reference(Any) }, // Part of this occurrence | parent | use case? can't find an example | No implementation | |||
"status" : "<code>", // R! registered | preliminary | final | amended + | status | string | M | Dictionary | Ok | |
"method" : { CodeableConcept }, // Evaluation mechanism | method | codeable_concept | O | Dictionary: deafult_code | Ok | |
"code" : { CodeableConcept }, // Type of assessment | code | codeable_concept | M | Ok | ||
"subject" : { Reference(Patient|Group) }, // Who/what does assessment apply to? | subject | reference(patient) | No implementation, because risk assessment is already in patient's collection | Ok | ||
"context" : { Reference(Encounter|EpisodeOfCare) }, // Where was assessment performed? | context | reference(encounter) | M | Ok | ||
// occurrence[x]: When was assessment made?. One of these 2: "occurrenceDateTime" : "<dateTime>", "occurrencePeriod" : { Period }, | asserted_date | string | M | only datetime | Ok | |
"condition" : { Reference(Condition) }, // Condition assessed | condition | Use case? | No implementation | |||
primary_source | ||||||
"performer" : { Reference(Practitioner|Device) }, // Who did assessment? | performer | reference(employee) | M | Ok | ||
report_origin | ||||||
// reason[x]: Why the assessment was necessary?. One of these 2: "reasonCodeableConcept" : { CodeableConcept }, "reasonReference" : { Reference(Any) }, | one of
| reason | O | Ok | ||
"basis" : [{ Reference(Any) }], // Information used in assessment | basis | extended_reference(text+[reference(condition|observation|diagnostic_report)]) | O | Ok | ||
"prediction" : [{ Backbone element }], | predictions | |||||
"mitigation" : "<string>", // How to reduce risk | mitigation | string | O | Ok | ||
"comment" : "<string>" // Comments on the risk assessment | comment | string | O | Ok |
Device
Object name: device
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"identifier" : [{ Identifier }], // Instance identifier | id | uuid | M | Ok | ||
"udi" : { // Unique Device Identifier (UDI) Barcode string "deviceIdentifier" : "<string>", // Mandatory fixed portion of UDI "name" : "<string>", // Device Name as appears on UDI label "jurisdiction" : "<uri>", // Regional UDI authority "carrierHRF" : "<string>", // UDI Human Readable Barcode String "carrierAIDC" : "<base64Binary>", // UDI Machine Readable Barcode String "issuer" : "<uri>", // UDI Issuing Organization "entryType" : "<code>" // barcode | rfid | manual + }, | udi | string | M | what format is suitable for Ukraine? | No implementation | |
"status" : "<code>", // active | inactive | entered-in-error | unknown | status | string | M | Dictionary | Ok | |
status_history | M | No implementation | ||||
asserted_date | string | M | date_time | |||
usage_period | Period | M | ||||
context | reference(encounter) | M | ||||
primary_source | boolean | M | ||||
report_origin | source | M | ||||
"type" : { CodeableConcept }, // What kind of device this is | type | codeable_concept | M | example - implant | Ok | |
"lotNumber" : "<string>", // Lot number of manufacture | lot_number | string | O | Ok | ||
"manufacturer" : "<string>", // Name of device manufacturer | manufacturer | string | O | Ok | ||
"manufactureDate" : "<dateTime>", // Date when the device was made | manufacture_date | string | O | date_time | Ok | |
"expirationDate" : "<dateTime>", // Date and time of expiry of this device (if applicable) | string | O | date_time | Ok | ||
"model" : "<string>", // Model id assigned by the manufacturer | model | string | O | Ok | ||
"version" : "<string>", // Version number (i.e. software) | version | string | O | Ok | ||
"patient" : { Reference(Patient) }, // Patient to whom Device is affixed | No implementation | |||||
"owner" : { Reference(Organization) }, // Organization responsible for device | No implementation for now | |||||
"contact" : [{ ContactPoint }], // Details for human/organization for support | contact_point | string | No implementation | |||
"location" : { Reference(Location) }, // Where the resource is found | location | No implementation for now | ||||
"url" : "<uri>", // Network address to contact device | uri | string | No implementation for now | |||
"note" : [{ Annotation }], // Device notes and comments | note | string | O | Ok | ||
"safety" : [{ CodeableConcept }] // Safety Characteristics of Device | safety | [codeable_concept] | O | No implementation |
Medication Statement
Object name: medication_statement
Medication Administration
Device dispense
Its data model described at Device dispense data model
Procedure
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"identifier" : [{ Identifier }], // External Identifiers for this procedure | id | uuid | M | Unique identifier of current record | + |
"instantiatesCanonical" : [{ canonical(PlanDefinition|ActivityDefinition| Measure|OperationDefinition|Questionnaire) }], // Instantiates FHIR protocol or definition | No implementation | ||||
"instantiatesUri" : ["<uri>"], // Instantiates external protocol or definition | No implementation | ||||
"basedOn" : [{ Reference(CarePlan|ServiceRequest) }], // A request for this procedure | based_on | reference(ServiceRequest) | O | Mandatory for encounter package, could be send with encounter package type PHC | + |
"partOf" : [{ Reference(Procedure|Observation|MedicationAdministration) }], // Part of referenced event | part_of | reference(procedure) | O | Only type | No Implementation |
"status" : "<code>", // R! preparation | in-progress | not-done | suspended | aborted | completed | entered-in-error | unknown | status | string | M | Only these statuses allowed: entered_in_error, completed | + |
"statusReason" : { CodeableConcept }, // Reason for current status | status_reason | codeable_concept | O | mandatory for enterred_in_error | + |
explanatory_letter | string | O | mandatory for enterred_in_error | + | |
"category" : { CodeableConcept }, // Classification of the procedure | ? | No dictionary will be provided any soon | No implemenation | ||
"code" : { CodeableConcept }, // Identification of the procedure | code | reference(services) | M | reference on services | + |
"subject" : { Reference(Patient|Group) }, // R! Who the procedure was performed on | M | part of patients collection | + | ||
"encounter" : { Reference(Encounter) }, // Encounter created as part of | encounter | reference(encounter) | O | mandatory for encounter package, can not be submitted in DR in separate route | + |
// performed[x]: When the procedure was performed. One of these 5: "performedDateTime" : "<dateTime>", "performedPeriod" : { Period }, "performedString" : "<string>", "performedAge" : { Age }, "performedRange" : { Range }, | performed_date_time | date_time | M | datetime | + |
"recorder" : { Reference(Patient|RelatedPerson|Practitioner| PractitionerRole) }, // Who recorded the procedure | recorded_by | reference(employee) | M | signature or encounter performer | + |
"asserter" : { Reference(Patient|RelatedPerson|Practitioner| PractitionerRole) }, // Person who asserts this procedure | No implementation | ||||
primary_source | boolean | M | determines the source of data in current record: whether the procedure was posted by its performer (true) or it was posted by third party, for example by family doctor based on the patients words (false) | ||
report_origin | codeable_concept | O | should be filled, if primary_source=false | ||
"performer" : [{ // The people who performed the procedure "function" : { CodeableConcept }, // Type of performance "actor" : { Reference(Practitioner|PractitionerRole|Organization|Patient| RelatedPerson|Device) }, // R! The reference to the practitioner "onBehalfOf" : { Reference(Organization) } // Organization the device or practitioner was acting for }], | performer | extended_reference | M | should be filled by reference, if primary_source=true if reference, then it should be an employee with type 'DOCTOR', 'SPECIALIST', 'ASSISTANT' | + |
division | reference(division) | O | Legal entity division where procedure was performed | ||
managing_organization | reference(legal_entity) | M | Organization (legal entity) which is responsible for current procedure | ||
No implementation | |||||
reason_references | [reference(condition|procedure|diagnostic_report)] | O | The justification of why the procedure was performed | + | |
body_sites | [codeable_concept] | O | No implementation cause there is no corresponding dictionary and no implementation of such field on Service Requests at the moment. If doctor needs to specify body site, he/she will do it using text in code attribute. | No implementation | |
outcome | codeable_concept | O | The outcome of the procedure - did it resolve the reasons for the procedure being performed. | + | |
report | reference(diagnostic_report) | O | No implementation cause currently there is no need in posting of diagnostic procedure reports with separate procedure to the system | No implementation | |
complications | [codeable_concept] | O | No implementation cause there is no corresponding dictionaries. Doctor should use text part in outcome field instead or complicationDetail as a reference to condition | No implementation | |
complication_details | [reference(condition)] | O | Could be filled only for procedure in encounter package and only with reference to condition from same encounter | + | |
- | No implementation | ||||
note | string | O | Any other notes and comments about the procedure that are not specified in corresponding attributes | ||
- | No implementation | ||||
used_references | [reference(medication)] | O | Useful attribute, but it could be implemented without national medicine registry, which is currently unavailable. Mecications structure in e-health contains only medications, which take part in reimbursement national program. | No implementation | |
- | No implementation | ||||
origin_episode | reference(episode) | M | Episode of care during which Service Request, dispensed by Procedure, was initialised |
Complex Types
reference
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"reference" : "<string>", // C? Literal reference, Relative, internal or absolute URL | No implementation | ||||
"identifier" : { Identifier }, // Logical reference, when literal reference is not known | identifier | M | Ok | ||
display_value | string | O | This field is filled on creating and never updated after | ||
"display" : "<string>" // Text alternative for the resource | No implementation |
identifier
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"use" : "<code>", // usual | official | temp | secondary (If known) | use | M | No implementation | ||
"type" : { CodeableConcept }, // Description of identifier | type | M | Plain text representation of the concept | Ok | |
"system" : "<uri>", // The namespace for the identifier value | system | string | M | No implementation | |
"value" : "<string>", // The value that is unique | value | string | M | Ok | |
"period" : { Period }, // Time period when id is/was valid for use | period | No implementation | |||
"assigner" : { Reference(Organization) } // Organization that issued id (may be just text) | assigner | No implementation |
codeable_concept
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"coding" : [{ Coding }], // Code defined by a terminology system | coding | [coding] | M | Ok | |
"text" : "<string>" // Plain text representation of the concept | text | string | O | Plain text representation of the concept | Ok |
coding
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"system" : "<uri>", // Identity of the terminology system | system | string | M | Ok | |
"version" : "<string>", // Version of the system - if relevant | version | string | O | No | |
"code" : "<code>", // Symbol in syntax defined by the system | code | string | M | Any dictionary | Ok |
"display" : "<string>", // Representation defined by the system | display | string | O | Ok | |
"userSelected" : <boolean> // If this coding was chosen directly by the user | No implementetion |
period
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"start" : "<dateTime>", // C? Starting time with inclusive boundary | start | M | Ok | ||
"end" : "<dateTime>" // C? End time with inclusive boundary, if not ongoing | end | O | Ok |
period_date
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
"start" : "<dateTime>", // C? Starting time with inclusive boundary | start | date | M | - | |
"end" : "<dateTime>" // C? End time with inclusive boundary, if not ongoing | end | date | O | - |
status_history
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result |
---|---|---|---|---|---|
status | string | M | dictionary | Ok | |
status_reason | codeable_concept | O | |||
inserted_at | string | M | date | ||
inserted_by | uuid | M | user_id | ||
"period" : { Period } // R! Duration the EpisodeOfCare was in the specified status | period | M | No implementation |
diagnosis
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
"condition" : { Reference(Condition) }, // R! Conditions/problems/diagnoses this episode of care is for | condition | reference(condition) | M | Ok | Approved | |
"role" : { CodeableConcept }, // Role that this diagnosis has within the episode of care (e.g. admission, billing, discharge …) | role | codeable_concept | M | Own dictionary | Ok | Approved |
"rank" : "<positiveInt>" // Ranking of the diagnosis (for each role type) | rank | positiveInt | O | max 10 | Ok | Approved |
code | codeable_concept | M | Ok |
diagnoses_hstr
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
date | string | M | date_time | |||
evidence | reference(encounter) | M | ||||
diagnoses | [diagnosis] | M | ||||
is_active | boolean | M | true by default |
stage
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
"summary" : { CodeableConcept }, // C? Simple summary (disease specific) | summary | codeable_concept | M | Ok | ||
"assessment" : [{ Reference(ClinicalImpression|DiagnosticReport|Observation) }] // C? Formal record of assessment | assessment | M | Own dictionary | No implementation |
evidence
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
"code" : [{ CodeableConcept }], // C? Manifestation/symptom | codes | M | Ok | |||
"detail" : [{ Reference(Any) }] // C? Supporting information found elsewhere | details | [reference(observation)] | M | Ok |
explanation
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
type | string | M | reasons, reasons_not_given | |||
value | M | |||||
"reason" : [{ CodeableConcept }], // Why immunization occurred | reasons | O | Covered by explanation.value | No implementation | ||
"reasonNotGiven" : [{ CodeableConcept }] // Why immunization did not occur | reasons_not_given | O | Covered by explanation.value | No implementation |
reaction
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
"date" : "<dateTime>", // When reaction started | date | date_time | O | No implementation | ||
"detail" : { Reference(Observation) }, // Additional information on reaction | detail | reference(observation) | O | Ok | ||
reported | boolean | O | No implementation |
vaccination_protocol
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
"doseSequence" : "<positiveInt>", // Dose number within series | dose_sequence | positive_int | O | Ok | ||
"description" : "<string>", // Details of vaccine protocol | description | string | O | Ok | ||
"authority" : { Reference(Organization) }, // Who is responsible for protocol | codeable_concept | O | Ok | |||
"series" : "<string>", // Name of vaccine series | series | string | O | Ok | ||
"seriesDoses" : "<positiveInt>", // Recommended number of doses for immunity | series_doses | postive_int | O | Ok | ||
"targetDisease" : [{ CodeableConcept }], // R! Disease immunized against | target_diseases | [codeable_concept] | M | Ok | ||
"doseStatus" : { CodeableConcept }, // R! Indicates if dose counts towards immunity | dose_status | codeable_concept | M | Removed 26.02.2019 | ||
"doseStatusReason" : { CodeableConcept } // Why dose does (not) count | dose_status_reason | codeable_concept | O | Removed 26.02.2019 |
value
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
type | string | M | quantity, codeable_concept, string, boolean, range, ratio, sampled_data, time, date_time, period | Ok | ||
value | ONE OF: quantity, codeable_concept, string, boolean, range, ratio, sampled_data, time, date_time, period | M | Ok |
component
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"code" : { CodeableConcept }, // R! Type of component observation (code / type) | code | codeable_concept | M | Ok | ||
value | M | Ok | ||||
"valueQuantity" : { Quantity }, | Covered by value | No implementation | ||||
"valueCodeableConcept" : { CodeableConcept } | Covered by value | No implementation | ||||
"valueString" : "<string>" | Covered by value | No implementation | ||||
"valueRange" : { Range } | Covered by value | No implementation | ||||
"valueRatio" : { Ratio } | Covered by value | No implementation | ||||
"valueSampledData" : { SampledData } | Covered by value | No implementation | ||||
Covered by value | No implementation | |||||
"valueDateTime" : "<dateTime>" | Covered by value | No implementation | ||||
"valuePeriod" : { Period } | Covered by value | No implementation | ||||
"interpretation" : { CodeableConcept } | interpretation | codeable_concept | O | Ok | ||
"referenceRange" : [{ Content as for Observation.referenceRange }] | reference_ranges | O | Ok |
reference_range
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"low" : { Quantity(SimpleQuantity) }, // C? Low Range, if relevant | low | quantity | O | Ok | ||
"high" : { Quantity(SimpleQuantity) }, // C? High Range, if relevant | high | quantity | O | Ok | ||
"type" : { CodeableConcept }, // Reference range qualifier | type | codeable_concept | O | Ok | ||
"appliesTo" : [{ CodeableConcept }], // Reference range population | applies_to | [codeable_concept] | O | Ok | ||
"age" : { Range }, // Applicable age range, if relevant | age | range | O | Ok | ||
"text" : "<string>" // Text based reference range in an observation | text | string | O | Ok |
effective_at
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
type | string | M | effective_date_time, effective_period | Ok | ||
value | string or period | M | Ok |
source
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | |
---|---|---|---|---|---|---|
type | string | M | report_origin, performer, asserter | Ok | ||
value | for report_origin - codeable_concept for asserter - reference(employee) | M | Ok |
quantity
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"value" : <decimal>, // Numerical value (with implicit precision) | value | decimal | M | Ok | ||
"comparator" : "<code>", // < | <= | >= | > - how to understand the value | comparator | string enum | O | Ok | ||
"unit" : "<string>", // Unit representation | unit | string enum | O | for future use | Ok | |
"system" : "<uri>", // C? System that defines coded unit form | system | string enum | M | eHealth/ucum/units | Ok | |
"code" : "<code>" // Coded form of the unit | code | string enum | M | Ok |
range
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"low" : { Quantity(SimpleQuantity) }, // C? Low limit | low | O | Ok | |||
"high" : { Quantity(SimpleQuantity) } // C? High limit | high | O | Ok |
prediction
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
"outcome" : { CodeableConcept }, // R! Possible outcome for the subject | outcome | codeable_concept | M | Ok | ||
// probability[x]: Likelihood of specified outcome.One of these 2: "probabilityDecimal" : <decimal>, "probabilityRange" : { Range }, | probability | probability | O | Ok | ||
"qualitativeRisk" : { CodeableConcept }, // Likelihood of specified outcome as a qualitative value | qualitative_risk | codeable_concept | O | Ok | ||
"relativeRisk" : <decimal>, // Relative likelihood | relative_risk | decimal | O | Ok | ||
// when[x]: Timeframe or age range. One of these 2: "whenPeriod" : { Period }, | when | O | is a stupid name for a field =\ | Ok | ||
"rationale" : "<string>" // Explanation of prediction | rationale | string | O | Ok |
probability
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
type | string | M | ok | |||
value | ONE_OF: probability_decimal - decimal, probability_range - Range | M | ok |
when
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
type | string | M | enum: when_period, when_range | ok | ||
value | ONE_OF: when_period - Period, when_range - Range | M | ok |
UDI
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
device_number | ||||||
extended_reference
This type can be used when a reference cannot be defined and text should be used instead.
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
text | string | O | ||||
references | [reference] | O |
reason
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
type | string | М | enum: reason_codes, reason_references | |||
value | ONE_OF: reason_codes - [codeable_concept], reason_references-[reference] | М |
paper_referral
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
requisition | string | O | Service request number | |||
requester_legal_entity_name | string | O | Requester legal entity name | |||
requester_legal_entity_edrpou | string | M | Requester legal entity edrpou | |||
requester_employee_name | string | M | Requester employee name | |||
service_request_date | date | M | Service request date | |||
note | string | O | Some notes |
dosage
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
timing
HL7 | Name | Type | M/O | Description and constraints | HL7 vs eHealth comparison result | Status |
---|---|---|---|---|---|---|
|
|
|
|
|
| |
|
|
|
|
|
| |
|
|
|
|
|
|
ЕСОЗ - публічна документація