Goals:

  • Extract key content from DICOM SR (AI result, measurement report, etc.) into FHIR resources, Observation
  • Make mapping independent of final discussion around DiagnosticReport vs Composition 
  • Bidirectional mapping is out-of-scope.
  • Publish an IG

Questions

Notes:

  • Observation UID is not in TIDs but in core DICOM attributes for SR content
    • See if there are more non-TID elements that should be included in the mapping
      • Tentatively no
  • Is this a bundle of observations or is the output a FHIR Diagnostic report?
    • Pros for bundle of observations is probably a bit easier.  Harder to group them in terms of DICOM SR
    • all observations related to an event
    • same accession #
    • Diagnostic report because they are collected for a single diagnostic report.  This is what an EHR would expect?
    • bundle path could be a composition.  
    • review the CDA to FHIR mapping. 
    • what do you do with ancillary data for a diagnostic report?
      •  Out of scope or use composition
      • Need to ask O&O what they would expect.
      • Need EMR vendors
      • Would payors need to know the resultant data
      • Composition makes sense for AI results?
      • What is the context for the observation?
      • Could be either, just focus on 1500 to single observation or panel of observations
      • Could be either composition or a diagnostic report based on specific use case
    • Custom FHIR resource? 
      • Imaging selection is the discriminator.
  • Input is TID 1500

Needed: SR IOD Equipment Module to Device Resource


TID 1410 Parameters

Container: EV (125007, DCM, "Measurement Group")
Concept NameVTVM

Req

Type

DICOM SR Parameter/Value Set ConstraintDescription

EV (C67447, NCIt, "Activity Session")






DT (112039, DCM, "Tracking Identifier")




EV (112040, DCM, "Tracking Unique Identifier")




DTID 1419 “ROI Measurements”




$MeasurementNUM1-nMUNITS=$Units




$Measurement

Coded term or Context Group for Concept Name of measurement





$Units

Units for the measurement





$ModType

Modifier Name for Concept Name of measurement

$ModTypeCODE1-nU

$ModValue

Modifier Value for Concept Name of measurement

EV (370129005, SCT, "Measurement Method")code1U

$Method

Value for Measurement Method

EV (121401, DCM, "Derivation")


$Derivation

Value for Measurement Derivation

EV (363698007, SCT, "Finding Site")code1-nU

$TargetSite

Value for Anatomic Location of measurement

> DT (106233006, SCT, "Topographical modifier")code1U

$TargetSiteMod

Modifier Value for Anatomic Location of measurement

>EV (272741003, SCT, "Laterality")code1UDCID 244 “Laterality”




$Equation

Coded term or Context Group for the equation or table from which the measurement was derived or computed





$RefAuthority

Bibliographic reference or authority for statistical properties of a reference population





$RangeAuthority

Bibliographic reference or authority for the normal range of the measurement

Not mapped


$DerivationParameter

Coded term or Context Group for Concept Name of a derivation parameter

Not Mapped


$DerivationParameterUnits

Units of derivation parameter





$QualType

Evaluations encoded with code or text responses





$QualValue

Value of evaluations encoded with code responses

Not mapped


$QualModType

Modifier Name of evaluations encoded with code or text responses

Not Mapped


$QualModValue

Modifier Value of evaluations encoded with code or text responses

EV (121071, DCM, "Finding")


$FindingType

Type of the finding

DTID 4019 “Algorithm Identification”




DTID 310 “Measurement Properties”


$RefAuthority = $RefAuthority
$RangeAuthority = $RangeAuthority




Draft SR Mapping to Observation

DICOM SR Content

Observation Name

FlagsCard.

FHIR Type




IN
DomainResourceMeasurements and simple assertions


Σ0..*IdentifierBusiness Identifier for observation

Content Item: Observation UID (0040,A171)

... identifier:ObservationUID

Σ0..1
Unique Measurement Identifier

EV(112040,DCM,"Tracking Unique Identifier")

... identifier:TrackingUID

Σ0..1
Unique Tracking Identifier

EV(112039,DCM,"Tracking Identifier")

... identifier:TrackingID

Σ0..1
Human Readable Tracking identifier

EV (C67447, NCIt, "Activity Session")

... identifier:ActivitySession

Σ0..1



.Referenced Request Sequence(0040,A370)

Σ0..*Reference(CarePlan  DeviceRequest | ImmunizationRecommendation | MedicationRequest | NutritionOrder  | ServiceRequest| Appointment | AppointmentResponse | Task)Request fulfilled

>Placer Order Number/Imaging Service Request(0040,2016)

>Order Placer Identifier Sequence(0040,0026)

... BasedOn:ServiceRequest

Σ0..1

ServiceRequest.Identifier.type=order





>Placer Filler Number/Imaging Service Request(0040,2017)

>Order Placer Identifier Sequence(0040,0027)

... BasedOn:ServiceRequest

Σ0..1ServiceRequest.Identifier.type=FILL


>Accession Number(0008,0050)

>Issuer of Accession Number Sequence(0008,0051)

... BasedOn:ServiceRequest

Σ0..1ServiceRequest.Identifier.type=ACSN



Σ0..*

Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy)

Open Question: ImagingReference or ImagingStudy?

Part of referenced event

>Study Instance UID(0020,000D)Σ0..1ImagingStudy.Identifier.type=SIUID


>Requested Procedure ID(0040,1001)
>Requested Procedure Description(0032,1060)
>Requested Procedure Code Sequence(0032,1064)
>Reason for the Requested Procedure(0040,1002)
>Reason for Requested Procedure Code Sequence(0040,100A)
Σ0..1



Preliminary Flag(0040,A496) = preliminary

Verification Flag(0040,A493) = final

?!Σ1..1coderegistered | preliminary | final | amended +
ObservationStatus (Required)


CATAGORY = Imaging
0..*CodeableConceptClassification of type of observation
Observation Category Codes (Preferred)


EV (121071, DCM, "Finding")Σ1..1CodeableConceptType of observation (code / type)
LOINC Codes (Example)


Patient ModuleΣ0..1Reference(Patient | Group | Device | Location)Who and/or what the observation is about

Content Date (0008,0023)

Content Time (0008,0033)

Σ0..1instantDate/Time this version was made available

Person or responsible for the analysis

Author Observer Sequence (0040,A078)

Bring more in

Σ0..*Reference(Practitioner | PractitionerRole | Organization | CareTeam | Patient | RelatedPerson)Who is responsible for the observation


ΣI0..1
Actual result

$Measurement
.... valueQuantity


Quantity


$QualValue
.... valueCodeableConcept


CodeableConcept


text value if $QualType is text
.... valueString


string


Boolean value if $QualType is boolean

.... valueBoolean



boolean



.... valueInteger



integer


$measurement as Range

.... valueRange



Range


$measurement as Ratio

.... valueRatio



Ratio



.... valueSampledData



SampledData


Value Time
.... valueTime


time


Value Date Time
.... valueDateTime


dateTime







0..*CodeableConceptHigh, low, normal, etc.
Observation Interpretation Codes (Extensible)



... interpretation:Abnormality

Σ0..1
HL7 V2


... interpretation:ActionableFinding

Σ0..1
CID 7035 “Actionable Finding Classification”

EV (363698007, SCT, "Finding Site")=$TargetSite
0..1CodeableConceptObserved body part
SNOMED CT Body Structures (Example)


$TargetSiteLaterality


DCID 244 “Laterality”

$TargetSiteMod





EV (370129005, SCT, "Measurement Method") 



0..1CodeableConceptHow it was done
Observation Methods (Example)


SR IOD Equipment Module as Device Resource

DTID 4019 “Algorithm Identification”



0..1Reference(Device | DeviceMetric)(Measurement) Device


I0..*BackboneElementProvides guide for interpretation
+ Rule: Must have at least a low or a high or text


DCID 223 “Normal Range Values” - low.... lowI0..1SimpleQuantityLow Range, if relevant

DCID 223 “Normal Range Values” - High.... highI0..1SimpleQuantityHigh Range, if relevant

$RefAuthority
$RangeAuthority
.... type
0..1CodeableConceptReference range qualifier
Observation Reference Range Meaning Codes (Preferred)



.... appliesTo
0..*CodeableConceptReference range population
Observation Reference Range Applies To Codes (Example)



.... age
0..1RangeApplicable age range, if relevant


.... text
0..1stringText based reference range in an observation




... hasMemberΣ0..*Reference(Observation | QuestionnaireResponse|MolecularSequence)Related resource that belongs to the Observation group

ImagingReference to images or other DICOM IODs the measurement was derived from

TID 1420 has observations the result is derived from

... derivedFromΣ0..*Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence| ImagingReference)Related measurements the observation is made from

when do we use components vs multiple observations in SR?

Component example: RECIST.

This would be explanatory text in the IG.

... componentΣ0..*BackboneElementComponent results


.... codeΣ1..1CodeableConceptType of component observation (code / type)
LOINC Codes (Example)



.... value[x]Σ0..1
Actual component result


..... valueQuantity

Quantity



..... valueCodeableConcept

CodeableConcept



..... valueString

string



..... valueBoolean

boolean



..... valueInteger

integer



..... valueRange

Range



..... valueRatio

Ratio



..... valueSampledData

SampledData



..... valueTime

time



..... valueDateTime

dateTime



..... valuePeriod

Period



.... dataAbsentReasonI0..1CodeableConceptWhy the component result is missing
DataAbsentReason (Extensible)



.... interpretation
0..*CodeableConceptHigh, low, normal, etc.
Observation Interpretation Codes (Extensible)



.... referenceRange
0..*see referenceRangeProvides guide for interpretation of component result

  • No labels

9 Comments

  1. Thanks for this good initiative and clear goals. Also good input for discussion. I have one major comment on the mapping of Tracking identifiers. The (112039, DCM, "Tracking Identifier") and (112040, DCM, "Tracking Unique Identifier") should not be mapped to the Observation.identifier. The Observation.identifier is the identifier of the Observation instance. The tracking identifiers should refer to the real world object under observation (e.g. a lesion); this should be a reference (Foreign key) to another resource instance, representing the real world object (e.g. a BodyStructure or similar TBD).

    1. Potential solution: Observation.focus referencing BodySite.identifier

  2. For BodySite.identifier please read BodyStructure.identifier

  3. I am struggling with the multiple flags on DICOM SR getting mapped to status. Which value is equivalent to what in order to do a round trip from DICOM to FHIR to DICOM without losing any value

    1. Hi Diana, we talked a little about this on the last call. I think the tentative conclusion we reached was that Observation.status should match Preliminary Flag (0040,A496) only.

      Completion Flag (0040,A491) is document level and does not seem to apply to a single observation extracted from an SR.

      Similarly Verification Flag (0040,A493) seems like it is more appropriate to a DiagnosticReport or a Composition that includes SR-based observations rather than the observation itself.

      Additionally, round trip conversion is not part of the proposed scope of this IG. In future we may look at more document-level SR-to-FHIR mappings but the focus for now is on extracting observation-level SR content.

      Happy to discuss further. The next call is at 11AM Eastern time.

  4. If I chose Diagnostic Report for encapsulating the SR Observations, which would be the code to be used? The same question applies for a Composition.section.code

    18782-3Radiology Study observation (narrative)Study observation
    19005-8Radiology Imaging study [Impression] (narrative)Imaging study
    18834-2Radiology Comparison study (narrative)Comparison.study
    68604-8Radiology Diagnostic study noteDiagnostic study note
  5. Observation vs Observation components:

    1. If the lesion has details like diameter, axis, volume etc does it make sense to put them as separate observations by linking together? in which scenario, they will be queried separately.
    2. Rather, if we create one observation for one measurement group and put all findings as observation components then linking would be more meaningful. 

    Any comments/suggestions?

    1. In general FHIR does not encourage using components.

      Ad 1. Please read my comment on Component example: RECIST in the table above.


  6. FHIR Observation effective[x] : Which of the DICOM SR tags would map to Observation.effective ( Clinically relevant time/time-period for observation). Content Date/Time?