Transformación de metadatos DICOM en soluciones de datos sanitarios
Nota
Este contenido se está actualizando actualmente.
En este artículo se explica cómo el entorno de soluciones de datos de atención sanitaria extrae y transforma los metadatos DICOM en diferentes niveles de almacén de lago. También puede obtener información sobre el proceso de transformación de metadatos de un extremo a otro y comprender la asignación de transformación en cada nivel.
La transformación de metadatos a través de la canalización de ingesta consta de las siguientes tres fases consecutivas:
- Extracción y transformación de metadatos DICOM en tabla delta bronce
- Transformación de metadatos de la tabla bronce a la tabla delta plata
- Transformación de metadatos de la tabla delta plata a oro
Las siguientes secciones detallan la asignación de transformación para cada etapa.
Asignación de transformación para metadatos DICOM en tabla delta bronce
Hay más de 5000 etiquetas DICOM definidas por el estándar DICOM, incluidas las etiquetas privadas específicas del proveedor. Esta sección identifica qué etiquetas recuperamos y explica el proceso de extracción en el almacén de lago bronce.
El proceso de extracción de etiquetas realiza las siguientes acciones:
Extracción de archivos DICOM: Extraiga una colección de todas las etiquetas de los archivos DICOM (DCM) en la estructura de carpetas optimizada en el almacén de lago bronce.
Exclusión de etiquetas de datos de píxeles: excluya la etiqueta de datos de píxeles DICOM (7FE0,0010) y los atributos del módulo de datos de píxeles de imagen de la colección. La etiqueta de datos de píxeles DICOM incluye detalles en el nivel de imagen/píxel.
Asignación de JSON: Asigne todas las etiquetas DICOM extraídas en una estructura JSON de pares clave-valor en el siguiente esquema:
METADATA_JSON_DICT_SCHEMA = MapType ( StringType(), StructType([ StructField("vr", StringType(), True), StructField("Value", ArrayType(StringType(), True), True) ]) )
Estos pares JSON clave-valor se escriben en la columna de metadatos de la tabla delta dicomimagingmetastore del almacén de lago bronce.
Extracción y asignación al almacén de lago bronce: Extraiga además las siguientes 30 etiquetas DICOM y escríbalas en las columnas de destino respectivas de la tabla delta dicomimagingmetastore:
Etiqueta DICOM de origen Columna de destino (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]
Nota
- Para obtener más información sobre por qué promovemos estas 30 etiquetas DICOM en concreto, consulte Extracción de etiquetas DICOM.
- Para obtener más información sobre el patrón de ingesta (anexar), vaya a Patrón de anexar en el almacén de lago bronce.
Registro del tiempo de ejecución: la fecha y hora de ejecución del cuaderno se escriben en la columna
created_date
de la tabla delta dicomimagingmetastore.Almacenamiento de la ruta de archivos DCM: la ruta de acceso completa del archivo DCM se escribe en la columna
filepath
de la tabla delta dicomimagingmetastore.
Asignación de transformación para tabla delta bronce a plata
En las tablas siguientes se explica la asignación completa para la transformación de los metadatos DICOM en la tabla delta dicomimagingmetastore del almacén de lago bronce a la tabla delta de FHIR ImagingStudy en el almacén de lago plata.
Etiqueta DICOM de origen en dicomimagingmetastore | Columna de destino en ImagingStudy | Detalles de la asignación |
---|---|---|
No disponible | id |
GUID generado mediante el módulo UUID de Python |
No disponible | meta.lastupdated |
Marca de tiempo de la creación del archivo NDJSON |
StudyInstanceUID (0020,000D) Número de acceso (0080,0050) |
identifier |
ImagingStudy.identifier.where(system = 'urn:dicom:uid') =>StudyInstanceUID ImagingStudy.identifier.where(type.coding.system = 'http://terminology.hl7.org/CodeSystem/v2-0203' y type.coding.code = 'ACSN')) =>"AccessionNumber" |
Modalidades en el estudio (0008,0061) | modality |
modality = List{code = col('ModalitiesInStudy')} |
Id. del paciente (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')""}," |
Nombre del paciente (0010,0010) Fecha de nacimiento del paciente (0010,0030) Sexo del paciente (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') |
Detalles del nivel de serie
Etiqueta DICOM de origen en dicomimagingmetastore | Columna de destino en ImagingStudy | Detalles de la asignación |
---|---|---|
SeriesInstanceUID (0020,000E) | series.uid |
col('SeriesInstanceUID') |
SeriesNumber (0020,0011) | series.number |
col('SeriesNumber') |
Modalidad (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') |
Lateralidad (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') |
No disponible | status |
"available" |
No disponible | Series.Instance.Extension |
"extension": [{"url": "lit('file_path')", "valueUrl": "col('FilePath')"}] El valor de FilePath incluye la ruta de acceso al archivo ABFS en OneLake para todos los archivos DCM de nivel de instancia que forman parte de este ImagingStudy. |
No disponible | resourceType |
"ImagingStudy" |
Asignación de transformación para tabla delta plata a oro
En la tabla siguiente se explica la asignación completa para la transformación de los metadatos DICOM en la tabla delta ImagingStudy del almacén de lago plata a la tabla delta Image_Occurrence de Observational Medical Outcomes Partnership (OMOP).
Columna de origen en ImagingStudy | Columna de destino en Image_Occurrence de OMOP | Tipo de datos | Detalles de la asignación |
---|---|---|---|
series.uid |
image_occurrence_id |
entero | Clave única que se le da a un registro de estudio de imágenes |
subject |
person_id |
entero | Id. de la persona asociada al procedimiento grabado |
series.instance.extension |
local_path |
cadena | {InstanceID; StoragePath} Una colección de archivos DCM para todas las instancias de esa serie. La colección incluye una matriz JSON de pares de clave/valor. |
series.started |
image_occurrence_date |
fecha | Fecha de aparición del procedimiento de técnica de imagen (serie). |
identifier['StudyInstanceUID'] |
image_study_UID |
cadena | UID de estudio DICOM |
series.uid |
image_series_UID |
cadena | UID de la serie DICOM |
series.modality |
modality |
cadena | Modalidad de la serie. |