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.
Cada VERSION lleva su propio identificador único — un OBJECT_VERSION_ID compuesto por tres partes:
- object_id — el ID del VERSIONED_OBJECT contenedor (igual en todas las versiones del mismo registro)
- creating_system_id — espacio de nombres que identifica al sistema que creó esta versión
- 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.