vs dcm4chee dcmtk - jacquesfauquex/DCKV GitHub Wiki
Un parseador lee un formato complejo de datos y metadatos y lo transforma en otro más fácil de usar en memoria. Lo deserializa haciendo acesible cada átomo de data o metadata desde un índice en memoria. La forma genérica de tal índice es el formato key-value (KV). Pero en razón de la profundidad de la metadata DICOM (atributos que contienen dataset), otras opciones fueron elegidas.
Hasta ahora, conocemos dos tipos de parseadores DICOM:
-
El primero (por ejemplo dcm4che) transforma la codificación binaria en estructuración textual xml y luego crea en memoria el Document Object Model (DOM) correspondiente de tal forma a poder usar herramientas genéricas de xml (en particular XPath y XSLT) para acceder individualmente a cada átomo de metadata.
-
El segundo (por ejemplo dcmtk) usa programación orientada a objetos y define las clases de objetos, múltiples instancias de las mismas y relaciones entre ellas (sequence, item, attribute, etc) en memoria para deserializar el dicom binario original.
Ambos estos tipos de parseadores implican el uso de mucha memoria y llegan a su límite operativa cuando por ejemplo se trata de parsear un estudio pesando 10 GB. Para lograrlo, se normalizó la disección metadata / data (que contiene muchos bytes, por ejemplo pixeles de una imagen, etc) y dentro de la metadata referencia a la data por referencia de tipo url. DICOM XML y DICOM JSON adoptaron esta técnica y llaman bulkdata a los datos no copiados dentro del xml o json.
Proponemos otra opción para la escritura de un parser DICOM: el uso del tradicional modelo KV para registrar el resultado del parseo dentro de una base de datas KV (KVDB). Para tal opción, el key no puede ser estrictamente equivalente al tag de un atributo, sino que compone los tags secuencias del contexto y el tag del atributo. Los detalles del formato de key se encuentran ahí La presencia del contexto dentro del key es lo que caracteriza este parseador. Por eso, le llamamos DCKV: "DICOM CONTEXTUAL KEY VALUE".