Stream: implementers
Topic: RSNA Pneumonia Detection Challenge
Aleksandra Pavlyshina (Mar 24 2020 at 07:49):
Hi guys,
We have a use case that I am looking into solutions for storing and processing medical images to detect a visual signal for pneumonia in them. We are going to use RSNA Pneumonia Detection Challenge dataset: https://www.kaggle.com/c/rsna-pneumonia-detection-challenge/data. All provided images are in DICOM format.
The algorithm will be predicting whether pneumonia exists in a given image. It will do so by predicting bounding boxes around areas of the lung. Samples without bounding boxes are negative and contain no definitive evidence of pneumonia. Samples with bounding boxes indicate evidence of pneumonia.
The format will be: patientId confidence x-min y-min width height.
For patientIds with multiple predicted bounding boxes: 0004cfab-14fd-4e49-80ba-63a80b6bddd6,0.5 0 0 100 100 0.5 0 0 100 100, etc.
We plan to store medical images in the Media resource.
Will it be correct to represent results found by the prediction algorithm as Observations, with components for bounding boxes? Where to put the prediction results (pneumonia/no pneumonia) - Observation, RiskAssessment, something else?
FHIR | Value | Description |
---|---|---|
Observation.code | prediction results | |
Observation.subject | patientId | |
Observation.focus | Media | |
Observation.component(0).code | confidence | |
Observation.component(0).valueQuantity.value | 0.5 | |
Observation.component(1).code | x-min | the upper-left x coordinate of the bounding box |
Observation.component(1).valueInteger | 0 | |
Observation.component(2).code | y-min | the upper-left y coordinate of the bounding box |
Observation.component(2).valueInteger | 0 | |
Observation.component(3).code | width | the width of the bounding box |
Observation.component(3).valueInteger | 100 | |
Observation.component(4).code | height | the height of the bounding box |
Observation.component(4).valueInteger | 100 | |
Observation.component(5).code | Target | indicating whether this sample has evidence of pneumonia |
Observation.component(5).valueBoolean | true/false | |
RiskAssessment.basis | Media (X-Ray) and/or Observations (predicted bounding boxes) | |
RiskAssessment.prediction.outcome | pneumonia/no pneumonia |
Thanks
John Moehrke (Mar 24 2020 at 13:03):
@Elliot Silver @Jonathan Whitby @Brad Genereaux
Jonathan Whitby (Mar 24 2020 at 14:30):
@Aleksandra Pavlyshina There is work-in-progress on a mechanism to better associate observations with specific images and overlays (https://confluence.hl7.org/display/IMIN/ImagingReference+as+an+Extension+to+DocumentReference). In the interim your approach looks reasonable to me.
It is worth noting that in R4.2+ the Media resource has been merged with the DocumentReference resource so you might consider using DocumentReference instead.
In terms of storing the prediction result it might make sense to store it as both an Observation and a RiskAssessment (with the Observation as a basis). RiskAssessment is relatively immature so it may not be as widely supported by downstream systems.
Elliot Silver (Mar 24 2020 at 17:59):
Also consider whether to use a DICOM Structured Report for this. DICOM SR has templates for defining bounding boxes and findings. As @Jonathan Whitby mentions, work is in progress to reference SR content in FHIR.
Aleksandra Pavlyshina (Mar 25 2020 at 14:43):
Thank you @Jonathan Whitby @Elliot Silver
Last updated: Apr 12 2022 at 19:14 UTC