Versionado de Datos

Un registro clínico fue modificado. ¿Quién lo cambió? ¿Qué decía antes? ¿Cuándo exactamente cambió?

En la mayoría de los sistemas, la respuesta es "no lo sabemos" — los datos originales fueron sobrescritos. En salud, eso no es aceptable. Los registros clínicos pueden referenciarse en procesos legales, disputas de seguros, auditorías regulatorias, e investigación clínica. El historial de un registro es tan importante como su estado actual.

En Atomik — siguiendo el modelo de openEHR — nunca se sobrescribe nada. Cada modificación crea una nueva versión, vinculada a la anterior. El historial completo de cada registro está siempre disponible, es consultable, y es a prueba de manipulaciones.

Cómo funciona el versionado

Todo objeto clínico o demográfico de nivel superior en Atomik es versionable:

  • EHR_STATUS
  • FOLDER
  • COMPOSITION
  • PERSON
  • ORGANISATION
  • GROUP
  • AGENT
  • PARTY_RELATIONSHIP

Cuando uno de estos objetos se crea por primera vez, Atomik lo envuelve en un VERSIONED_OBJECT — un contenedor que guarda todas las versiones futuras de ese registro. Cada cambio agrega una nueva VERSION a ese contenedor. El original nunca se toca.

Estructuras de versionado de openEHR

Cada VERSION lleva su propio identificador único — un OBJECT_VERSION_ID compuesto por tres partes:

  1. object_id — el ID del VERSIONED_OBJECT contenedor (igual en todas las versiones del mismo registro)
  2. creating_system_id — espacio de nombres que identifica al sistema que creó esta versión
  3. version_tree_id — un contador de versión lineal (1, 2, 3…)

Versionado en Atomik

Los IDs de versión en Atomik se ven así — el mismo registro a través de tres cambios:

  • Creación: 1b2d2be2-24ff-48da-9ff0-e835ce36b80f::ATOMIK_EMR::1
  • Modificación: 1b2d2be2-24ff-48da-9ff0-e835ce36b80f::ATOMIK_EMR::2
  • Modificación: 1b2d2be2-24ff-48da-9ff0-e835ce36b80f::ATOMIK_EMR::3

Las tres comparten el mismo ID de VERSIONED_OBJECT. La versión 1 nunca se elimina. En cualquier momento puedes recuperar cómo se veía este registro en la versión 1, 2 o 3 — y cada versión lleva su propio rastro de auditoría (ve Auditoría y Registro).

Versionado y la API REST

La API REST de openEHR ofrece endpoints GET que aceptan cualquiera de estos:

  • Un OBJECT_VERSION_ID completo — recupera esa versión histórica exacta
  • Un ID de VERSIONED_OBJECT — recupera la última versión

Esto significa que tu aplicación siempre puede acceder tanto al estado actual como al historial completo a través de la misma API estándar, sin necesitar lógica de consulta personalizada.