eDCKV - jacquesfauquex/DCKV GitHub Wiki

DCKV define keys-values para registrar una instancia DICOM. eDCKV agrega la posibilidad de registrar todas las instancias de un estudio DICOM dentro de únicos listados de keys-values para todas las instancias. La "e" de eDCKV recuerda la palabra exam en ingles (o estudio en español). El formato eDCKV está diseñado para ser base de pacs, para evitar la subdivisión de estudios entre miles de instancias. Dentro del PACS opendicom, eDCKV está subdivido entre listas categoricas. Dentro de un visualizador DICOM web, todas las categorías pueden ser almacenadas dentro de una única tabla key-value.

formato

Formalmente, los keys eDCKV son derivadas de los keys DCKV mediante prefijo (PREF) de 8 bytes, que identifica la serie e instancia a la cual se refiere el resto del key.

DCKV:       (SQIT)* ATRC
eDCKV: PREF (SQIT)* ATRC

Además de permitir la coexistencia de atributos de instancias distintas, el prefijo clasifica dichos atributos por familias transversales a las instancias.

DCKV
|
+------------+--------------+---------------+----------------+--------------+
|            |              |               |                |              |
[E]xamDCKV   [S]eriesDCKV   [P]rivateDCKV   [I]nstanceDCKV   [N]ativeDCKV   [C]ompressedDCKV
                                                                            |
                                              +--------------+--------------+
                                              |              |              |
                                              [F]astqlDCKV   [H]ighqlDCKV   [O]riginalqlDCKV
                                                                  

[E]xamDCKV

00 00 00 00 00 00 00 00 : atributos de nivel patient y study, comunes a todas las instancias del estudio.

  • prefijo empezando con 00 00
  • En eDCKV, se guarda una sola copia de estos atributo, que no tiene referencia ni de serie ni de instancia.

[S]eriesDCKV

01 SS SS 00 RR RR CC CC : atributos de nivel serie comunes a todas las instancias de la serie

  • prefijo empezando con 00 01
  • SS SS : short litte endian -32768 <> +32767 correspondiente al número de serie.
    • Si el número de serie no existe, se crea uno negativo
      • 0x8000 (-32768 está FF FF :reservado para cda encapsulated de solicitud.
      • 0x8001...0x800F reservados para CDA de informe
      • 0x8010...0x8FFF sirven para numeros de series artificiales
  • CC CC : índice en la tabla de sop class.
  • RR RR : contiene 00 00 salvo que sea por ejemplo un grayscale softcopy presentation state (GSPS) o similar que indica como presentar otra serie. En este caso, RR RR contiene el número de serie atribuido a la serie que contiene los pixeles sobre los cuales aplica la representación. Ver el módulo Presentation State Relationship, attribute Referenced Series Sequence 00081115 acá y acá.
  • el formato del prefijo no contiene referencia a ninguna instancia particular de la serie. El mismo atributo tiene validez para todas las instancias de las serie.
    • El atributo 00080080 InstitutionName es de nivel serie en el estándar DICOM. Derogamos esta disposición y le consideramos como de nivel exam.

[P]rivateDCKV

02 SS SS VV II II CC CC: atributos privados.

  • prefijo empezando con 00 02
  • II II : short litte endian -32768 <> +32767 correspondiente al nro de instancia
  • estos atributos pueden ignorarse en las respuestas de un VNA y se guardan exclusivamente para el caso de entrega de copias de las imágenes a una estación de trabajo de la misma marca que el equipo de adquisición.
  • VV: versión. Por ejemplo, las angiografía de Philips contienen dos versiones de calidad distinta y sop instance uid distintos pero mismo instance number para una misma secuencia. VV permite diferrenciarlas. Se ajusta la momento de descubrir el problema de integración de la instancia en el estudio. Se integra primero C o N y se atribuye el numero mas chico al que contiene pixeles mas chico o fecha de contenido mas chico.

[I]nstanceDCKV

03 SS SS VV II II 00 00 : prefijo de los atributos propios de una instancia

  • prefijo empezando con 00 03
  • Si el parseo descubre un atributo nuevo (por ejemplo un atributo definido en un suplemento reciente al estándar DICOM), se agrega a nivel instancia, repetido en cada una de ellas.

[N]ativeDCKV

04 SS SS VV II II 00 00 : atributos imagen en formato nativo

  • prefijo empezando con 00 04
  • en forma nativo no puede haber más de una imagen en una instancia
  • además del atributo 7E000010 de pixeles, entran tambien en este grupo
    • obviamente 7E000008 7E000009 (que se alternativas a 7E000010 para pixel tipo float y double
    • per tambien algunos atributos más directamente relacionados con la compresión o no
      • 00020010 transfert syntax
      • 00082111 derivation description
      • 00204000 image comment
  • distinción de prefijo nativo y comprimido permite que coexisten dentro de eDCKV dos representaciones de los pixeles. Una nativa y otra comprimida. En caso que existan ambos, cuando se exporta la imagen, se tiene que seleccionar el uno o el otro.

[C]ompressedDCKV

05 SS SS VV II II FF FF : atributos imagen en formato encapsulado comprimido

  • prefijo empezando con 00 05
  • FF FF : unsigned short litte endian numera los frames del atributo 0x7FE00010 en caso de pixeles encapsulados. Se crea una copia del atributo para cada frame. Los dos bit de menos peso (bits 0 y 1) indican el nivel de calidad (0=base, 1=fast, 2=hres, 3=idem). bits 16-2 indican el numero de fragmento. En enhanced objects es igual a numero del frame (empezando con 1). Permite el registro de un máximo de 20479 frames dentro de un SOP instance.

[F]astqlDCKV [H]ighqlDCKV [O]riginalqlDCKV

06 SS SS VV II II FF FF : segundo layer de calidad 07 SS SS VV II II FF FF : tercer layer de calidad 08 SS SS VV II II FF FF : cuarto layer de calidad

  • complementa C en caso de compresión JPEG2000 lossless con 4 'quality layers' -capas de calildad- (C,F,H,O)
  • para este caso, los fragmentos de la capa de calidad más baja quedan dentro de C, con los otros atributos relativos a los pixeles almacenados, y distribuimos, con mismo key los fragmentos de capa de calidad en F, H, O en otras categorias.

Nota explicativa : existen tres tipos de encapsulación, de los cuales dos son estándares:

  • la instancia de imagen única con varios niveles de calidad, cada uno dentro de un fragmento
  • el objeto enhanced con varios frames distintos dentro de una única instancia. En este caso, el estándar dictamina que cada fragmento contenga un frame completo.
  • nos interesa implementar también un caso especifico de la combinación de ambos tipos como formato de almacenamiento de pacs: JPEG2000 losseless con 4 capas de calidad separadas en fragmentos distintos para cada frame de un multiframe. Para exportar el multiframe, se requiere una combinación de los niveles de calidad. Se realiza por transcoding a la salida del pacs, transformando uno o más niveles de calidad en un unico output. Si el transcoding usa menos de 4 layer, es lossy. Si usa los 4 layers es lossless.

ver (Per-Frame Functional Groups Sequence)[https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.16.html#sect_C.7.6.16].