Mapping from KITH XML to FHIR (R4)
Introduction
Pasientens Prøvesvar receives diagnostic reports in the KITH Labsvar XML format (helsedirektoratet.no). These are mapped to the FHIR R4 format (hl7.org), and made available via the Pasientens Prøvesvar API. This document describes the mapping between the two formats.
How to Read This Document
This document contains a number of tables showing how values are mapped from KITH to FHIR. Most mappings are straight-forward and are categorized by where they are mapped from in KITH:
- Mapping table for Message
- Mapping table for ServReport
- Mapping table for ServReq
- Mapping table for Patient (including InfItem)
- Mapping table for AnalysedSubject
- Mapping table for ResultItem
- Mapping table for HCP
Other mappings are less straight-forward and are documented with extra details:
- Handling of Requester, ServProvider, RelServProv, ResponsibleHcp
- Non-straightforward date mappings
- Mapping to DiagnosticReport.category (main subject area)
- Mapping to Observation.category (subject area)
- Mapping to DiagnosticReport.status
- Mapping to Observation.status
- Mapping to Observation.meta.tag
- Summary of FHIR extensions used
Special Notation
Special notation is used to refer to a single array element or a subset of an array when there can be more than one element present: ResourceName.PropertyName[filter]
. This notation by itself does not describe how many such items may exist, but the cardinality of mapped items is the same as in KITH unless otherwise specified.
Examples:
DiagnosticReport.identifier[system="MsgId"]
- Refers to any Identifier in the
DiagnosticReport.identifier
array whosesystem
property equalsMsgId
.
- Refers to any Identifier in the
ServiceRequest.extension[url="*/nilar-payment-category"]
- Refers to any Extension in the
ServiceRequest.extension
array whoseurl
property ends with/nilar-payment-category
.
- Refers to any Extension in the
DiagnosticReport.extension[url="*/nilar-comment" AND valueCodeableConcept exists]
- Refers to any Extension in the
DiagnosticReport.extension
array whoseurl
property ends with/nilar-comment
and which has avalueCodeableConcept
property.
- Refers to any Extension in the
Feedback
If you have feedback on this document, it can be sent to nilar@nhn.no.
KITH Labsvar v1.3 and v1.4
The mapping is based off of KITH Labsvar v1.4, though we do accept reports using v1.3 as well. The changes from v1.3 to v1.4 are minor and in most cases of no consequence, though in some cases the report is rejected:
Element | Change v1.3 → v1.4 | Consequence |
---|---|---|
Message.ServReport |
Cadinality 1..* → 0..1 | If there is more than one ServReport per Message , the submission is rejected. |
ServReport.ServProvId |
Cardinality 0..1 → 1 | If the value is missing, the submission is rejected. |
ResultItem.ServType |
Cardinality 0..1 → 1 | We reject submissions where any top-level ResultItem is missing ServType , and assume that any nested ResultItem inherits the value of its parent. |
ServReq.Permission |
Removed | Trivial, ignored. |
StructuredInfo.Type |
Changed type CS → CV | Irrelevant, because StructuredInfo isn't mapped. |
StructuredInfo.CodedInfo.Code |
Changed type CS → CV | Irrelevant, because StructuredInfo isn't mapped. |
Links
- See Pasientens Prøvesvar's FHIR profile (github.io) for details on the FHIR objects exposed by the API.
- See Endpoints for details on the available API endpoints.
- See API Examples for further examles.
Mapping Overview
Message
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
Message.Type |
N/A* | * Covered by ServReport.MsgDescr except in a special case. |
Message.MsgVersion |
N/A | |
Message.MIGversion |
N/A | |
Message.GenDate |
- DiagnosticReport.issued - Observation.issued |
When the specific version of the report was sent from the lab. See also date mappings. |
Message.MsgId |
DiagnosticReport.identifier[system="MsgId"] |
External ID of the specific version of the report. |
Message.Status |
N/A | |
Message.ServReport |
DiagnosticReport |
See ServReport for detailed mapping. |
ServReport
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
ServReport.ServType |
DiagnosticReport.status |
Mapped in conjunction with ServReport.Status . See mapping to DiagnosticReport.status. |
ServReport.IssueDate |
DiagnosticReport.extension[url="*/nilar-report-date"] |
See also date mappings. |
ServReport.ApprDate |
DiagnosticReport.extension[url="*/nilar-approval-date"] |
|
ServReport.Status |
DiagnosticReport.status |
Mapped in conjunction with ServReport.ServType . See mapping to DiagnosticReport.status. |
ServReport.CancellationCode |
N/A | |
ServReport.Ack |
N/A | |
ServReport.MsgDescr |
- DiagnosticReport.category - DiagnosticReport.code |
category has a derived value. See mapping to DiagnosticReport.category (main subject area). |
ServReport.ServProvId |
DiagnosticReport.identifier[system="ServReportId"] |
|
ServReport.Comment |
DiagnosticReport.extension[ |
|
ServReport.CodedComment |
DiagnosticReport.extension[ |
|
ServReport.RefDoc |
N/A | Isn't mapped at this time. Is replaced by a comment extension, saying that RefDoc is removed. |
ServReport.ServReq |
DiagnosticReport.basedOn (reference only, see using includes) |
See ServReq for detailed mapping. |
ServReport.Patient |
- DiagnosticReport.subject - ServiceRequest.subject - Specimen.subject - Observation.subject |
Non-includable reference type. See Patient for detailed mapping. |
ServReport.Animal |
N/A | |
ServReport.Material |
N/A | |
ServReport.ServProvider |
Candidate for: - DiagnosticReport.performer (reference only, see using includes)- Observation.performer (reference only)- Specimen.collection.collector (reference only) |
See health care providers. |
ServReport.Requester |
Candidate for ServiceRequest.requester (reference only, see using includes) |
See health care providers. |
ServReport.PaymentResponsible |
N/A | |
ServReport.CopyDest |
N/A | |
ServReport.RelServProv |
Candidate for: - DiagnosticReport.performer (reference only, see using includes)- Observation.performer (reference only)- Specimen.collection.collector (reference only) |
See health care providers. |
ServReq
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
ServReq.ServType |
N/A | |
ServReq.IssueDate |
ServiceRequest.authoredOn |
|
ServReq.PaymentCat |
ServiceRequest |
|
ServReq.ReqComment |
ServiceRequest.note |
|
ServReq.Ack |
N/A | |
ServReq.MsgDescr |
N/A | |
ServReq.Id |
ServiceRequest.identifier[system="ServReqId"] |
|
ServReq.RequestedPrioReport |
N/A | |
ServReq.ReceiptDate |
ServiceRequest.extension.nilar-receipt-date |
|
ServReq.IdByServProvider |
ServiceRequest |
|
ServReq.Reservation |
ServiceRequest |
|
ServReq.ReasonAsText |
ServiceRequest.reasonCode |
|
ServReq.ReasonAsText |
ServiceRequest.reasonCode.text |
If able to interpret. |
ServReq.ReasonAsText |
ServiceRequest.reasonCode |
Systems other than "urn:oid:2.16.578.1.12.4.1.1.8231" . |
ServReq.Comment |
serviceRequest.extension[url="*/nilar-comment"] |
|
ServReq.Comment.Heading |
serviceRequest.extension[url="*/nilar-comment"] |
|
ServReq.Comment |
serviceRequest.extension[url="*/nilar-comment"] |
|
ServReq.Comment.TextCode |
serviceRequest.extension[url="*/nilar-comment"] |
Systems other than "urn:oid:2.16.578.1.12.4.1.1.8234" . |
Patient
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
Patient.BasisForHealthServices |
N/A | |
Patient.Sex |
N/A | |
Patient.DateOfBirth |
N/A | |
Patient.DateOfDeath |
N/A | |
Patient.Name |
N/A | |
Patient.IdByServProvider |
N/A | |
Patient.IdByRequester |
N/A | |
Patient.OffId |
- DiagnosticReport.subject.identifier.value - ServiceRequest.subject.identifier.value - Specimen.subject.identifier.value - Observation.subject.identifier.value |
|
Patient.TypeOffId |
- DiagnosticReport.subject.identifier.system - ServiceRequest.subject.identifier.system - Specimen.subject.identifier.system - Observation.subject.identifier.system |
|
Patient.Relation |
N/A | |
Patient.ResponsibleHcp |
Candidate for ServiceRequest.requester (reference only, see using includes) |
See health care providers. |
Patient.AdmLocation |
N/A | |
Patient.AdditionalId |
N/A | |
Patient.Address |
N/A | |
Patient.InfItem |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.Observation.Description |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
If able to interpret. |
Patient.InfItem.Observation.Comment |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.Observation.CodedDescr |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.Type |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.StartDateTime |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.EndDateTime |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.InfItem.OrgDate |
DiagnosticReport.extension[url="*/nilar-inf-item"] |
|
Patient.AnalysedSubject |
DiagnosticReport.specimen (reference only, see using includes) |
See AnalysedSubject for detailed mapping. |
Patient.ResultItem |
DiagnosticReport.result (reference only, see using includes) |
See ResultItem for detailed mapping. |
Patient.Patient |
N/A |
AnalysedSubject
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
AnalysedSubject.CollectedSample |
Specimen.collection.collectedDateTime |
See also date mappings. |
AnalysedSubject.CollectedSample |
Specimen.collection.extention[ |
|
AnalysedSubject.CollectedSample |
Specimen.collection.extention[ |
|
AnalysedSubject.CollectedSample.Logistics |
Specimen.collection.extension[url="*/nilar-logistics"] |
|
AnalysedSubject.CollectedStudyProduct.Type |
Specimen.collection |
|
AnalysedSubject.CollectedStudyProduct |
Specimen.collection.collectedDateTime |
|
AnalysedSubject.CollectedStudyProduct |
Specimen.collection |
|
AnalysedSubject.ServType |
N/A | |
AnalysedSubject.Type |
Specimen.type.text |
|
AnalysedSubject.TypeCoded |
Specimen.type.coding |
|
AnalysedSubject.IdByRequester |
Specimen.identifier[system="AnalysedSubjectIdByRequester"] |
|
AnalysedSubject.PreservMaterial |
Specimen.container.additive.text |
|
AnalysedSubject.Comment |
Specimen.note |
|
AnalysedSubject.AnatomicalOrigin |
Specimen.collection.bodySite |
|
AnalysedSubject.Number |
specimen.extension[url="*/nilar-container-count"] |
|
AnalysedSubject.SampleCollInd |
N/A | |
AnalysedSubject.SampleCollProc |
Specimen.collection.Method |
|
AnalysedSubject.SampleHandling |
Specimen.extension[url="*/nilar-sample-handling"] |
|
AnalysedSubject.IdByServProvider |
- Specimen.identifier[system="AnalysedSubjectId"] - Specimen.AccessionIdentifier |
|
AnalysedSubject.Accredited |
Specimen.extension[url="*/nilar-accredited"] |
|
AnalysedSubject.AnalysedSubject |
N/A | |
AnalysedSubject.Pretreatment |
Specimen.extension[url="*/nilar-pretreatment"] |
|
AnalysedSubject.Pretreatment.Heading |
Specimen.extension[url="*/nilar-pretreatment"] |
|
AnalysedSubject.Pretreatment |
Specimen.extension[url="*/nilar-pretreatment"] |
|
AnalysedSubject.RelServProv |
N/A |
ResultItem
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
ResultItem.TextResult |
Observation.valueCodeableConcept |
|
ResultItem.TextResult.Heading |
Observation.valueCodeableConcept |
A copy is also mapped to Observation tags. |
ResultItem.TextResult |
Observation.valueCodeableConcept.text |
If able to interpret. |
ResultItem.TextResult.TextCode |
Observation.valueCodeableConcept |
Systems other than "urn:oid:2.16.578.1.12.4.1.1.8243" and "http://unitsofmeasure.org" . A copy is also mapped to Observation tags. |
ResultItem.TextResult.Unit |
Observation.valueCodeableConcept |
|
ResultItem.Interval |
Observation.valueRange |
|
ResultItem.Interval.Low |
Observation.valueRange.low |
|
ResultItem.Interval.High |
Observation.valueRange.High |
|
ResultItem.DateResult |
Observation.valueDateTime |
|
ResultItem.NumResult |
Observation.valueQuantity |
|
ResultItem.NumResult |
Observation.valueQuantity.comparator |
|
ResultItem.NumResult |
Observation.valueQuantity.value |
|
ResultItem.NumResult |
- Observation.valueQuantity.unit - Observation.valueQuantity.code |
|
ResultItem.ServType |
Observation.status |
Mapped in conjunction with ResultItem.StatusInvestigation . See mapping to Observation.status. |
ResultItem.ServType.V == "H" |
Observation.extension[url=*/nilar-history"] |
|
ResultItem.RefInterval.Descr |
Observation.referenceRange.text |
May also map to .low and .high on successful parse. |
ResultItem.Investigation.Id |
- Observation.category - Observation.code |
- category has a derived value. See mapping to Observation.category (subject area).- A copy of code is also mapped to Observation tags. |
ResultItem.Investigation.Spec where Spec.S=("8354" or "2.16.578.1.12.4.1.1.8354") |
Observation.method |
|
ResultItem.Investigation.Spec where Spec.S=(any other value) |
Observation.extension[url="*/nilar-specification"] |
|
ResultItem.Investigation.Comment |
Observation.note |
Other properties may also map to a note . |
ResultItem.InvDate |
Observation |
See also date mappings. |
ResultItem.Comment |
Observation.note |
Other properties may also map to a note . |
ResultItem.DevResultInd |
Observation.interpretation |
|
ResultItem.IdResultItem |
Observation.identifier[system="ResultItemId"] |
|
ResultItem.RefIdResultItem |
Observation |
|
ResultItem.StatusInvestigation |
Observation.status |
Mapped in conjunction with ResultItem.ServType . See mapping to Observation.status. |
ResultItem.StatusChangeDate |
Observation |
|
ResultItem.DescrDate |
Observation.extension[url="*/nilar-description-date"] |
|
ResultItem.CounterSignDate |
Observation.extension[url="*/nilar-counter-sign-date"] |
|
ResultItem.MedicalValidationDate |
Observation |
|
ResultItem.RefAnalysedSubject |
Observation.specimen (reference only, see using includes) |
See AnalysedSubject for detailed mapping. If multiple RefAnalysedSubject , only the first one is referenced in FHIR. If no RefAnalysedSubject , but exactly one AnalysedSubject exists, it will be referenced by Observation.specimen (may change in the future). |
ResultItem.Accredited |
Observation.extension[url="*/nilar-accredited"] |
|
ResultItem.RelServProv |
N/A | |
ResultItem.DiagComment |
N/A | |
ResultItem.StructuredInfo |
N/A | |
ResultItem.ResultItem |
Observation.hasMember (reference only, see using includes) |
Nested ResultItem . |
Health Care Providers
The KITH Labsvar document may include various health care providers, each with their own role. Their mappings to FHIR follow a fallback strategy which may merge info on two such entities into a single PractitionerRole, (for instance if one is missing an organization):
Fallback Strategy Table
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
Patient.ResponsibleHcp |
Primary candidate for ServiceRequest.requester * |
|
ServReport.Requester |
Secondary candidate for ServiceRequest.requester * |
If primary candidate is missing properties. |
ServReport.RelServProv |
Primary candidate for: - DiagnosticReport.performer *- Observation.performer *- Specimen.collection.collector * |
All three reference the same PractitionerRole. |
ServReport.ServProvider |
Secondary candidate for: - DiagnosticReport.performer *- Observation.performer *- Specimen.collection.collector * |
If primary candidate is missing properties. |
*) The above FHIR properties are references only. See using includes on how to include the referenced PractitionerRole
objects.
Mapped Properties
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
- ResponsibleHcp.Role - Requester.Role - RelServProv.Role - ServProvider.Role |
N/A | |
- ResponsibleHcp.Relation - RelServProv.Relation |
N/A | |
- Requester.ComMethod - ServProvider.ComMethod |
N/A | |
- ResponsibleHcp.HCP - Requester.HCP - RelServProv.HCP - ServProvider.HCP |
PractitionerRole |
See HCP for detailed mapping. See the fallback strategy table to see what resources reference this PractitionerRole . |
HCP
Node (KITH) | Maps to (FHIR) | Comment |
---|---|---|
HCP.Inst |
PractitionerRole.organization |
Non-includable reference type. |
HCP.Inst.Name |
PractitionerRole.organization.display |
Mapped in conjunction with HCP.Inst.Dept.Name . |
HCP.Inst.Id |
Secondary candidate for PractitionerRole.organization.identifier.value |
Primary candidate is HCP.Inst.Dept.Id . |
HCP.Inst.TypeId |
Secondary candidate for PractitionerRole.organization.Identifier.System |
Primary candidate is HCP.Inst.Dept.TypeId . |
HCP.Inst.Dept |
PractitionerRole.organization |
Non-includable reference type. If multiple Dept , only the first one is considered in FHIR. |
HCP.Inst.Dept.Type |
N/A | |
HCP.Inst.Dept.Name |
PractitionerRole.organization.display |
Mapped in conjunction with HCP.Inst.Name . |
HCP.Inst.Dept.Id |
Primary candidate for PractitionerRole.organization.identifier.value |
Secondary candidate is HCP.Inst.Id . |
HCP.Inst.Dept.TypeId |
Primary candidate for PractitionerRole.organization.identifier.system |
Secondary candidate is HCP.Inst.TypeId . |
HCP.Inst.Dept.AdditionalId |
N/A | |
HCP.Inst.HCPerson |
PractitionerRole.practitioner |
Non-includable reference type. If multiple HCPerson , only the first one is considered in FHIR. |
HCP.Inst.HCPerson.Name |
PractitionerRole.practitioner.display |
|
HCP.Inst.HCPerson.Id |
PractitionerRole.practitioner.identifier.value |
|
HCP.Inst.HCPerson.TypeId |
PractitionerRole.practitioner.identifier.system |
|
HCP.Inst.HCPerson.AdditionalId |
N/A | |
HCP.Inst.AdditionalId |
N/A | |
HCP.HCProf |
PractitionerRole.practitioner |
Non-includable reference type. |
HCP.HCProf.Type.DN |
PractitionerRole.practitioner.display |
Mapped in conjunction with HCP.HCProf.Name . |
HCP.HCProf.Name |
PractitionerRole.practitioner.display |
Mapped in conjunction with HCP.HCProf.Type.DN . |
HCP.HCProf.Id |
PractitionerRole.practitioner.identifier.value |
|
HCP.HCProf.TypeId |
PractitionerRole.practitioner.identifier.system |
|
HCP.HCProf.AdditionalId |
N/A | |
HCP.MedSpeciality |
PractitionerRole.specialty |
|
HCP.Address |
N/A* | * Except TeleAddress . |
HCP.Address.TeleAddress |
PractitionerRole.Telecom |
Date Mappings
There are several dates in both KITH Labsvar and in FHIR. Most are mapped where it is deemed natural, but especially effectiveDateTime
is derived in a somewhat complex fashion.
Node (KITH) | Maps to (FHIR) | Description |
---|---|---|
Message.GenDate |
- DiagnosticReport.issued - Observation.issued |
When the specific version of the report was sent from the lab. |
ServReport.IssueDate |
- DiagnosticReport.extension[url="*/nilar-report-date"] - Fallback for DiagnosticReport.effectiveDateTime - Fallback for Observation.effectiveDateTime |
Original report date, same for all versions. |
ServReq.IssueDate |
ServiceRequest.authoredOn |
When the request was made. |
AnalysedSubject.CollectedSample |
- Specimen.collection.collectedDateTime - Candidate for DiagnosticReport.effectiveDateTime - Primary candidate for Observation.effectiveDateTime |
When the sample was collected. An AnalysedSubject with a CollectedDate doesn't have a ProducedDate . |
AnalysedSubject.CollectedStudyProduct |
- Specimen.collection.collectedDateTime - Candidate for DiagnosticReport.effectiveDateTime - Primary candidate for Observation.effectiveDateTime |
When the sample was collected. An AnalysedSubject with a ProducedDate doesn't have a CollectedDate . |
ResultItem.InvDate |
- Observation.extension[url="*/nilar-investigation-date"] - Candidate for DiagnosticReport.effectiveDateTime - Secondary candidate for Observation.effectiveDateTime |
Investigation date. E.g. x-ray. |
Remarks on effectiveDateTime
Observation.effectiveDateTime
may be mapped to from multiple candidates:- Primary candidates are
CollectedDate
orProducedDate
under any AnalysedSubject referenced by this ResultItem or by any ResultItem sharing the same top-level ResultItem as this one. The oldest date is picked if it exists. - If there exists exactly one AnalysedSubject in the report, its
CollectedDate
orProducedDate
are primary candidates even if the AnalysedSubject isn't referenced by the ResultItem. - Secondary candidates are
InvDate
of this ResultItem or of any ResultItem sharing the same top-level ResultItem as this one. The oldest date is picked if it exists. - If all above dates are missing,
ServReport.IssueDate
is used.
- Primary candidates are
DiagnosticReport.effectiveDateTime
is mapped to from the oldestObservation.effectiveDateTime
.- If no Observations exist (e.g. cancelled report),
ServReport.IssueDate
is used.
- If no Observations exist (e.g. cancelled report),
Mapping to DiagnosticReport.category (Main Subject Area)
DiagnosticReport.category
is the main subject area of the entire report and can have the following possible three values from code system 8202 (helsedirektoratet.no):
- BLD - Bildediagnostikk (Imaging diagnostics)
- LAB - Laboratoriemedisin (Laboratory medicine)
- PAT - Patologi (Pathology)
The value is not explicitly present in the KITH Labsvar XML, so it is derived based on the value of ServReport.MsgDescr.V
. If it cannot be determined because AN - Annet (other) is used (not recommended), Message.Type.V
is a backup source. See table below:
ServReport.MsgDescr.V | Maps to (DiagnosticReport.category) | Comment |
---|---|---|
- BLD - CT - MA - MR - NUK - RAD - RTG - SCI - UL |
BLD | |
- CLIN - FARM - IMTR - LAB - MBIO - MGEN |
LAB | |
- CYTO - HIST - MPAT - PAT |
PAT | |
AN | - RTG if Message.Type.V is SVAR_RTG- LAB otherwise |
It is not recommended to use AN (other). One of the other values should be applicable. |
MORS | N/A | Reports with MORS are not accepted. |
OBD | N/A | Reports with OBD are not accepted. |
Mapping to Observation.category (Subject Area)
Observation.category
is the subject area of the specific result and can have values from code system 8202 (helsedirektoratet.no). An attempt is made to determine the appropriate category based on what is found in ResultItem.Investigation.Id
:
- If
ResultItem.Investigation.Id.S
= 7280 (or the equivalent OID), thenId.V
is an NLK code (helsedirektoratet.no):Observation.category
will be set to what is under primært fagområde (primary subject area) associated with the specific NLK code atId.V
.
- If
ResultItem.Investigation.Id.S
= 7270 (or the equivalent OID), thenId.V
is an NCRP code (helsedirektoratet.no):Observation.category
will be set ifId.V
has 6 characters: It's set to NUK - Nukleærmedisin if the 6th and last character is N or T, and RAD - Radiologi otherwise.
- If
ResultItem.Investigation.Id.S
= 7210 or 8219 (or their equivalent OID):Observation.category
will be set to PAT - Patologi.
Mapping to DiagnosticReport.status
DiagnosticReport.status
is set to one of the codes from the DiagnosticReportStatus (hl7.org) value set.
Pasientens Prøvevsar uses the following subset of the DiagnosticReportStatus codes:
Code (FHIR) | Display (EN) | Display (NO) | Definition |
---|---|---|---|
registered | Registered | Registrert | The existence of the report is registered, but there is nothing yet available. |
preliminary | Preliminary | Foreløpig | Verified early results are available, but not all results are final. |
final | Final | Endelig | The report is complete and verified by an authorized person. |
amended | Amended | Endret | Subsequent to being final, the report has been modified. This includes any change in the results, diagnosis, narrative text, or other content of a report that has been issued. |
appended | Appended | Tillegg | Subsequent to being final, the report has been modified by adding new content. The existing content is unchanged. |
cancelled | Cancelled | Kansellert | The report is unavailable because the measurement was not started or not completed (also sometimes called "aborted"). |
unknown | Unknown | Ukjent | The authoring/source system does not know which of the status values currently applies for this observation. Note: This concept is not to be used for "other" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which. |
Mapping Table
DiagnosticReport.status
is derived from a combination of the following properties in the KITH Labsvar XML:
Message.ServReport.ServType
: Code system 7309 (helsedirektoratet.no)Message.ServReport.Status
: Code system 7306 (helsedirektoratet.no)
7306 ↓ \ 7309 → | N - Ny (New) | M - Endring (Modification) | C - Kansellering (Cancellation) | H - Historikk (History) | A - Tillegg (Addition) |
---|---|---|---|---|---|
S - Planlagt (Scheduled) | registered | registered | cancelled | unknown | unknown |
P - Foreløpig rapport (Preliminary) | preliminary | preliminary | cancelled | unknown | unknown |
F - Endelig rapport (Final) | final | amended | cancelled | unknown | unknown |
A - Tillegg til rapport (Addition) | unknown | appended | cancelled | unknown | unknown |
Comment | Value H is invalid for ServReport.ServType |
Value A is invalid for ServReport.ServType |
Mapping to Observation.status
Observation.status
is set to one of the codes from the ObservationStatus (hl7.org) value set.
Pasientens Prøvevsar uses the following subset of the ObservationStatus codes:
Code (FHIR) | Display (EN) | Display (NO) | Definition |
---|---|---|---|
registered | Registered | Registrert | The existence of the observation is registered, but there is no result yet available. |
preliminary | Preliminary | Foreløpig | This is an initial or interim observation: data may be incomplete or unverified. |
final | Final | Endelig | The observation is complete and there are no further actions needed. |
amended | Amended | Endret | Subsequent to being Final, the observation has been modified subsequent. This includes updates/new information and corrections. |
cancelled | Cancelled | Kansellert | The observation is unavailable because the measurement was not started or not completed (also sometimes called "aborted"). |
unknown | Unknown | Ukjent | The authoring/source system does not know which of the status values currently applies for this observation. Note: This concept is not to be used for "other" - one of the listed statuses is presumed to apply, but the authoring/source system does not know which. |
Mapping Table
Observation.status
is derived from a combination of the following properties in the KITH Labsvar XML:
ResultItem.ServType
: Code system 8270 (helsedirektoratet.no)ResultItem.StatusInvestigation
: Code system 8245 (helsedirektoratet.no)
The table contains Norwegian because the defined display names for the given code values are in Norwegian.
8245 ↓ \ 8270 → | N - Ny (New) | M - Endring (Modification) | C - Kansellering (Cancellation) | H - Historikk (History) | A - Tillegg (Addition) |
---|---|---|---|---|---|
(no value) | final | amended | cancelled | final | final |
1 - Revidert | unknown | amended | cancelled | amended | unknown |
2 - Foreløpig | preliminary | amended | cancelled | preliminary | preliminary |
3 - Endelig | final | amended | cancelled | final | final |
4 - Tillegg | final | amended | cancelled | final | final |
5 - Henvisning registrert | registered | unknown | cancelled | unknown | registered |
6 - Prosedyre registrert/planlagt | registered | registered | cancelled | unknown | registered |
7 - Tildelt time | registered | registered | cancelled | unknown | registered |
8 - Undersøkelse gjennomført | preliminary | unknown | cancelled | unknown | preliminary |
9 - Diktert | preliminary | unknown | cancelled | unknown | preliminary |
10 - Skrevet (usignert svar foreligger) | preliminary | unknown | cancelled | unknown | preliminary |
11 - Signert | final | amended | cancelled | unknown | final |
12 - Korrigert (usignert tilleggsbeskrivelse foreligger) | unknown | amended | cancelled | unknown | preliminary |
13 - Signert korrigert/tilleggsbeskrivelse foreligger | final | amended | cancelled | unknown | final |
14 - Undersøkelse slettet | unknown | unknown | cancelled | unknown | unknown |
15 - I prosess | registered | registered | cancelled | final | registered |
Mapping to Observation.meta.tag
To make searching easier, top-level Observations (i.e. Observations that are referenced directly under DiagnosticReport.result
) will have tags added to them from the following places:
ResultItem.TextResult.Heading
for the corresponding ResultItem or for any nested ResultItems under it.ResultItem.TextResult.TextCode
for the corresponding ResultItem or for any nested ResultItems under it.ResultItem.Investigation.Id
for the corresponding ResultItem or for any nested ResultItems under it.
In other words, a copy of the above codes from any (possibly nested) ResultItem will be available at Observation.meta.tag
on the associated top-level Observation. This is in addition to their primary mapping (see the mapping table for ResultItem).
Summary of FHIR Extensions
Various FHIR resources may have an extension
property containing a number of Extension objects. Pasientens Prøvesvar uses such extensions where the FHIR resource doesn't have another property available to map to. All our extensions have an url
property on the form "http://nhn.no/fhir/nilar/StructureDefinition/<extension name>"
, where <extension name>
is a string of lowercase letters and dashes. Here is a list of extensions used by Pasientens Prøvesvar:
Note: The
nilar-comment
extension may have different data types (Annotation
orCodeableConcept
orstring
) depending on where it is mapped from.
Note: The
nilar-inf-item
extension itself has no value property and simply serves as a grouping of related extensions nested under it.
Extension name | Location in FHIR | Data type | Maps from (KITH) |
---|---|---|---|
nilar-accredited |
Specimen |
boolean |
AnalysedSubject.Accredited |
nilar-accredited |
Observation |
boolean |
ResultItem.Accredited |
nilar-approval-date |
DiagnosticReport |
dateTime |
ServReport.Apprdate |
nilar-comment |
DiagnosticReport |
Annotation |
ServReport.Comment |
nilar-comment |
DiagnosticReport |
CodeableConcept |
ServReport.CodedComment |
nilar-comment |
DiagnosticReport.extension |
string |
InfItem.Observation.Comment |
nilar-comment |
ServiceRequest |
CodeableConcept |
ServReq.Comment (see ServReq for details) |
nilar-comment |
Specimen.collection |
Annotation |
CollectedSample.CollectorComment |
nilar-comment |
Specimen.collection |
CodeableConcept |
CollectedSample |
nilar-container-count |
Specimen |
integer |
AnalysedSubject.Number |
nilar-counter-sign-date |
Observation |
dateTime |
ResultItem.CounterSignDate |
nilar-description-date |
Observation |
dateTime |
ResultItem.DescrDate |
nilar-diagnostic-report-ref |
Observation |
Reference |
ServReport |
nilar-history |
Observation |
boolean |
ResultItem.ServType.V == "H" |
nilar-inf-item |
DiagnosticReport |
N/A | Patient.InfItem |
nilar-inf-item-coded-description |
DiagnosticReport.extension |
CodeableConcept |
InfItem.Observation.CodedDescr |
nilar-inf-item-description |
DiagnosticReport.extension |
string |
InfItem.Observation.Description |
nilar-inf-item-end |
DiagnosticReport.extension |
dateTime |
InfItem.EndDateTime |
nilar-inf-item-org-date |
DiagnosticReport.extension |
dateTime |
InfItem.OrgDate |
nilar-inf-item-start |
DiagnosticReport.extension |
dateTime |
InfItem.StartDateTime |
nilar-inf-item-type |
DiagnosticReport.extension |
CodeableConcept |
InfItem.Type |
nilar-investigation-date |
Observation |
dateTime |
ResultItem.InvDate |
nilar-logistics |
Specimen.collection |
string |
CollectedSample.Logistics |
nilar-medical-validation-date |
Observation |
dateTime |
ResultItem.MedicalValidationDate |
nilar-payment-category |
ServiceRequest |
CodeableConcept |
ServReq.PaymentCat |
nilar-pretreatment |
Specimen |
CodeableConcept |
AnalysedSubject.Pretreatment (see AnalysedSubject for details) |
nilar-receipt-date |
ServiceRequest |
dateTime |
ServReq.ReceiptDate |
nilar-related-observation-ref |
Observation |
Reference(Observation) |
ResultItem.RefIdResultItem |
nilar-report-date |
DiagnosticReport |
dateTime |
ServReport.IssueDate |
nilar-reservation |
ServiceRequest |
CodeableConcept |
ServReq.Reservation |
nilar-sample-handling |
Specimen |
string |
AnalysedSubject.SampleHandling |
nilar-specification |
Observation |
CodeableConcept |
ResultItem.Investigation.Spec where Spec.S=(not "8354" and not "2.16.578.1.12.4.1.1.8354") |
nilar-status-change-date |
Observation |
dateTime |
ResultItem.StatusChangeDate |
nilar-study-product-ref |
Specimen.collection |
string |
CollectedStudyProduct |
nilar-study-product-type |
Specimen.collection |
string |
CollectedStudyProduct.Type |