Dela via


DICOM-metadataomvandling i vårddatalösningar

Obs

Detta innehåll uppdateras för närvarande.

Den här artikeln förklarar hur miljön DICOM-dataomvandling i vårddatalösningar extraherar och omvandlar DICOM-metadata på olika sjöhusnivåer. Du kan även lära dig om den kompletta omvandlingsprocessen för metadata och förstå omvandlingsmappningen på varje nivå.

Metadataomvandling genom inmatningspipelinen består av följande tre på varandra följande steg:

  1. Extrahering och omvandling av DICOM-metadata till bronsdeltatabell
  2. Metadataomvandling från brons- till silverdeltatabell
  3. Metadataomvandling från silver- till gulddeltatabell

I följande avsnitt beskrivs omvandlingsmappningen för varje steg.

Omvandlingsmappning för DICOM-metadata till bronsdeltatabell

Det finns mer än 5000 DICOM-taggar som definieras av DICOM-standarden, inklusive leverantörsspecifika privata taggar. Det här avsnittet identifierar vilka taggar vi hämtar och förklarar data vid extrahering i bronssjöhuset.

Taggprocessen utför följande åtgärder:

  1. Extrahering från DICOM-filer: Extrahera en samling av alla taggar från DICOM-filerna (DCM) i den optimerade mappstrukturen i bronssjöhuset.

  2. Exkludering av pixeldatatagg: Exkludera DICOM-pixeldatataggen (7FE0,0010) och bildpixeldatamodulens attribut från samlingen. DICOM-pixeldatataggen innehåller information på bild-/pixelnivå.

  3. JSON-mappning: Mappa alla extraherade DICOM-taggar till en JSON-struktur med nyckel/värde-par i följande schema:

    METADATA_JSON_DICT_SCHEMA = MapType
       (
          StringType(),
          StructType([
                        StructField("vr", StringType(), True),
                        StructField("Value", ArrayType(StringType(), True), True)
                     ])
       )
    

    Dessa JSON-par med nyckel/värde skrivs till metadatakolumnen i bronssjöhusets delta-tabell dicomimagingmetastore.

  4. Extrahering och mappning till bronssjöhuset: Extrahera följande 30 DICOM-taggar ytterligare och skriv dem till respektive målkolumner i deltatabellen dicomimagingmetastore:

    Källa DICOM-tagg Målkolumn
    (0020,000D) [studyinstanceuid]
    (0010,0010) [patientname]
    (0010,0020) [patientid]
    (0010,0030) [patientbirthdate]
    (0010,0040) [patientsex]
    (0008,0050) [accessionnumber]
    (0008,0090) [referringphysicianname]
    (0008,0020) [studydate]
    (0008,1030) [studydescription]
    (0008,0061) [modalitiesinstudy]
    (0020,000E) [seriesinstanceuid]
    (0008,0060) [modality]
    (0040,0244) [performedprocedurestepstartdate]
    (0008,1090) [manufacturermodelname]
    (0008,0018) [sopinstanceuid]
    (0008,0030) [studytime]
    (0008,0096) [referringphysicianidentificationsequence]
    (0008,0201) [timezoneoffsetfromutc]
    (0020,1206) [numberofstudyrelatedseries]
    (0020,1208) [numberofstudyrelatedinstances]
    (0020,0011) [seriesnumber]
    (0008,103E) [seriesdescription]
    (0020,1209) [numberofseriesrelatedinstances]
    (0018,0015) [bodypartexamined]
    (0020,0060) [laterality]
    (0008,0021) [seriesdate]
    (0008,0031) [seriestime]
    (0008,0016) [sopclassuid]
    (0020,0013) [instancenumber]
    (0042,0010) [documenttitle]

    Obs

  5. Loggning av körningstid: Notebook-filens körningsdatum och -tid skrivs till created_date kolumnen delta-tabellen dicomimagingmetastore.

  6. Lagring av DCM-filsökväg: Den fullständiga filsökvägen för DCM-filen skrivs till kolumnen filepath i deltatabellen dicomimagingmetastore.

Omvandlingsmappning för brons till silver deltatabell

I följande tabeller förklaras den fullständiga mappningen för omvandlingen av DICOM-metadata i bronssjöhuset deltatabell dicomimagingmetastore till deltatabellen FHIR ImagingStudy i silversjöhuset.

Käll-DICOM-tagg i dicomimagingmetastore Målkolumn i ImagingStudy Mappningsegenskaper
- id Ett GUID som genereras med hjälp av Python UUID-modulen.
- meta.lastupdated Skapa tidsstämpel för NDJSON-filen.
StudyInstanceUID (0020,000D)
Åtkomstnummer (0080,0050)
identifier ImagingStudy.identifier.where(system = 'urn:dicom:uid') =>StudyInstanceUID

ImagingStudy.identifier.where(type.coding.system = 'http://terminology.hl7.org/CodeSystem/v2-0203' och type.coding.code = 'ACSN')) =>"AccessionNumber"
Modaliteter i studie (0008,0061) modality modality = List{code = col('ModalitiesInStudy')}
Patient-ID (0010,0020) subject ""subject"": {""identifier"": {""type"": {""coding"": [{""system"": ""lit('http://terminology.hl7.org/CodeSystem/v2-0203')"",""code"": ""lit('MR')""}]},""value"": ""col('PatientID')""},""type": ""lit('Patient')""},"
Patientens namn (0010,0010)
Patientens födelsedatum (0010,0030)
Patientens kön (0010,0040)
subject "subject": {"extension": [{"url": "lit('name')", "valueString": "col('PatientName')"}, {"url": "lit('birthDate')", "valueDateTime": "col('PatientBirthDate')"}, {"url": "lit('gender')", "valueCode": "col('PatientSex')"}]}
StudyDate (0008,0020)
StudyTime (0008,0030)
TimezoneOffsetFromUTC(0008,0201)
started concat_ws(' ', col('StudyDate'), col('StudyTime'), col('TimezoneOffsetFromUTC'))
NumberOfStudyRelatedSeries (0020,1206) numberOfSeries col('NumberOfStudyRelatedSeries')
NumberOfStudyRelatedInstances (0020,1208) numberOfInstances col('NumberOfStudyRelatedInstances')
StudyDescription (0008,1030) description col('StudyDescription')

Detaljer på serienivå

Käll-DICOM-tagg i dicomimagingmetastore Målkolumn i ImagingStudy Mappningsegenskaper
SeriesInstanceUID (0020,000E) series.uid col('SeriesInstanceUID')
SeriesNumber (0020,0011) series.number col('SeriesNumber')
Modalitet (0008,0060) series.modality modality.code = col('Modality')
SeriesDescription (0008,103E) series.description col('SeriesDescription')
NumberOfSeriesRelatedInstances (0020,1209) series.numberOfInstances col('NumberOfSeriesRelatedInstances')
BodyPartExamined (0018,0015) series.bodySite bodySite.display = col('BodyPartExamined')
Lateralitet (0020,0060) series.laterality laterality.display = col('Laterality')
SeriesDate (0008,0021)
SeriesTime (0008,0031)
TimezoneOffsetFromUTC (0008,0201)
series.started concat_ws(' ', col('SeriesDate'), col('SeriesTime'), col('TimezoneOffsetFromUTC')).cast(TimestampType())
SOPInstanceUID (0008,0018) series.instance.uid col('SOPInstanceUID')
SOPClassUID (0008,0016) series.instance.sopClass sopClass.code = col('SOPClassUID')
InstanceNumber (0020,0013) series.instance.number col('InstanceNumber')
DocumentTitle (0042,0010) series.instance.title col('DocumentTitle')
- status "available"
- Series.Instance.Extension "extension": [{"url": "lit('file_path')", "valueUrl": "col('FilePath')"}]

Värdet för FilePath inkluderar ABFS-filsökvägen i OneLake för alla DCM-filer på instansnivå som ingår i denna ImagingStudy.
- resourceType "ImagingStudy"

Omvandlingsmappning för silver till guld deltatabell

Följande tabell förklarar den fullständiga kartläggningen för omvandlingen av DICOM-metadata i silversjöhusets deltatabell ImagingStudy för Observational Medical Outcomes Partnership (OMOP) Image_Occurrence i guldsjöhuset.

Källkolumn i ImagingStudy Målkolumn OMOP i Image_Occurrence Datatyp Mappningsegenskaper
series.uid image_occurrence_id integer Unik nyckel som ges till en bildstudiepost.
subject person_id integer Person-ID för den person som är associerad med det registrerade förfarandet.
series.instance.extension local_path string {InstanceID; StoragePath}

En samling DCM-filer för alla instanser i serien. Samlingen innehåller en JSON-matris med nyckel/värde-par.
series.started image_occurrence_date datum Datum för förekomst av avbildningsprocedur (serie).
identifier['StudyInstanceUID'] image_study_UID string UID för DICOM-studie
series.uid image_series_UID string UID för DICOM-serien
series.modality modality string Seriens modalitet.