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:

Other mappings are less straight-forward and are documented with extra details:

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 whose system property equals MsgId.
  • ServiceRequest.extension[url="*/nilar-payment-category"]
    • Refers to any Extension in the ServiceRequest.extension array whose url property ends with /nilar-payment-category.
  • DiagnosticReport.extension[url="*/nilar-comment" AND valueCodeableConcept exists]
    • Refers to any Extension in the DiagnosticReport.extension array whose url property ends with /nilar-comment and which has a valueCodeableConcept property.

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.

Mapping Overview

--- title: "Figure: Broad mapping overview" --- flowchart LR subgraph KITH Message ServReport ServReq AnalysedSubject ResultItem HCP end subgraph FHIR DiagnosticReport ServiceRequest Specimen Observation PractitionerRole end Message --> DiagnosticReport ServReport --> DiagnosticReport ServReq --> ServiceRequest AnalysedSubject --> Specimen ResultItem --> Observation HCP --> PractitionerRole

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[
url="*/nilar-comment" AND
valueAnnotation exists]
ServReport.CodedComment
DiagnosticReport.extension[
url="*/nilar-comment" AND
valueCodeableConcept exists]
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
.extension[url="*/nilar-payment-category"]
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
.identifier[system="ServReqIdByServProvider"]
ServReq.Reservation
ServiceRequest
.extension[url="*/nilar-reservation"]
ServReq.ReasonAsText
.Heading
ServiceRequest.reasonCode
.coding
[system="urn:oid:2.16.578.1.12.4.1.1.8231"]
ServReq.ReasonAsText
.TextResultValue
ServiceRequest.reasonCode.text If able to interpret.
ServReq.ReasonAsText
.TextCode
ServiceRequest.reasonCode
.coding[system=(other)]
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"]
.valueCodeableConcept
.coding
[system="urn:oid:2.16.578.1.12.4.1.1.8234"]
ServReq.Comment
.TextResultValue
serviceRequest.extension[url="*/nilar-comment"]
.valueCodeableConcept.text
ServReq.Comment.TextCode
serviceRequest.extension[url="*/nilar-comment"]
.valueCodeableConcept
.coding[system=(other)]
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"]
.extension[url="*/nilar-inf-item-description"]
If able to interpret.
Patient.InfItem.Observation.Comment
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-comment"]
Patient.InfItem.Observation.CodedDescr
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-inf-item-coded-description"]
Patient.InfItem.Type
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-inf-item-type"]
Patient.InfItem.StartDateTime
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-inf-item-start"]
Patient.InfItem.EndDateTime
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-inf-item-end"]
Patient.InfItem.OrgDate
DiagnosticReport.extension[url="*/nilar-inf-item"]
.extension[url="*/nilar-inf-item-org-date"]
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
.CollectedDate
Specimen.collection.collectedDateTime See also date mappings.
AnalysedSubject.CollectedSample
.CollectorComment
Specimen.collection.extention[
url="*/nilar-comment" AND
valueAnnotation exists]
AnalysedSubject.CollectedSample
.CollectorCommentCoded
Specimen.collection.extention[
url="*/nilar-comment" AND
valueCodeableConcept exists]
AnalysedSubject.CollectedSample.Logistics Specimen.collection.extension[url="*/nilar-logistics"]
AnalysedSubject.CollectedStudyProduct.Type
Specimen.collection
.extension[url="*/nilar-study-product-type"]
AnalysedSubject.CollectedStudyProduct
.ProducedDate
Specimen.collection.collectedDateTime
AnalysedSubject.CollectedStudyProduct
.RefRelatedProd
Specimen.collection
.extension[url="*/nilar-study-product-ref"]
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"]
.valueCodeableConcept.coding
AnalysedSubject.Pretreatment
.TextResultValue
Specimen.extension[url="*/nilar-pretreatment"]
.valueCodeableConcept.text
AnalysedSubject.RelServProv N/A

ResultItem

Node (KITH) Maps to (FHIR) Comment
ResultItem.TextResult Observation.valueCodeableConcept
ResultItem.TextResult.Heading
Observation.valueCodeableConcept
.coding[system="urn:oid:2.16.578.1.12.4.1.1.8243"]
A copy is also mapped to Observation tags.
ResultItem.TextResult
.TextResultValue
Observation.valueCodeableConcept.text If able to interpret.
ResultItem.TextResult.TextCode
Observation.valueCodeableConcept
.coding[system=(other)]
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
.coding[system="http://unitsofmeasure.org"]
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
.ArithmeticComp
Observation.valueQuantity.comparator
ResultItem.NumResult
.NumResultValue.V
Observation.valueQuantity.value
ResultItem.NumResult
.NumResultValue.U
- 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
.extension[url="*/nilar-investigation-date"]
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
.extension[url="*/nilar-related-observation-ref"]
ResultItem.StatusInvestigation Observation.status Mapped in conjunction with ResultItem.ServType. See mapping to Observation.status.
ResultItem.StatusChangeDate
Observation
.extension[url="*/nilar-status-changed-date"]
ResultItem.DescrDate Observation.extension[url="*/nilar-description-date"]
ResultItem.CounterSignDate Observation.extension[url="*/nilar-counter-sign-date"]
ResultItem.MedicalValidationDate
Observation
.extension[url="*/nilar-medical-validation-date"]
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
.CollectedDate
- 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
.ProducedDate
- 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 or ProducedDate 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 or ProducedDate 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.
  • DiagnosticReport.effectiveDateTime is mapped to from the oldest Observation.effectiveDateTime.
    • If no Observations exist (e.g. cancelled report), ServReport.IssueDate is used.

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), then Id.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 at Id.V.
  • If ResultItem.Investigation.Id.S = 7270 (or the equivalent OID), then Id.V is an NCRP code (helsedirektoratet.no):
    • Observation.category will be set if Id.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:

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:

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 or CodeableConcept or string) 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
[url="*/nilar-inf-item"]
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
.CollectorCommentCoded
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
(DiagnosticReport)
ServReport
nilar-history Observation boolean ResultItem.ServType.V == "H"
nilar-inf-item DiagnosticReport N/A Patient.InfItem
nilar-inf-item-coded-description
DiagnosticReport.extension
[url="*/nilar-inf-item"]
CodeableConcept InfItem.Observation.CodedDescr
nilar-inf-item-description
DiagnosticReport.extension
[url="*/nilar-inf-item"]
string InfItem.Observation.Description
nilar-inf-item-end
DiagnosticReport.extension
[url="*/nilar-inf-item"]
dateTime InfItem.EndDateTime
nilar-inf-item-org-date
DiagnosticReport.extension
[url="*/nilar-inf-item"]
dateTime InfItem.OrgDate
nilar-inf-item-start
DiagnosticReport.extension
[url="*/nilar-inf-item"]
dateTime InfItem.StartDateTime
nilar-inf-item-type
DiagnosticReport.extension
[url="*/nilar-inf-item"]
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
.RefRelatedProd
nilar-study-product-type Specimen.collection string CollectedStudyProduct.Type