diagnos
La biblioteca Python detrás de la bóveda: impórtala, toca `vault.patients` y el desbloqueo ocurre solo — cifrado en tu propio proceso, de principio a fin.
Dev Center
SDK en Python, CLI y una API REST autenticada por mTLS — las claves nacen y viven solo en la memoria de tu proceso, y el servidor nunca ve nada más que texto cifrado.
Paquetes de código abierto
Ofrecemos un SDK en Python, una CLI compatible con Windows, Mac y Linux, y una API RESTful lista para un entorno de contenedores o Kubernetes — todo manteniendo el cifrado de extremo a extremo (E2E), y todo como código abierto bajo licencia Apache 2.0.
La biblioteca Python detrás de la bóveda: impórtala, toca `vault.patients` y el desbloqueo ocurre solo — cifrado en tu propio proceso, de principio a fin.
Todo el SDK, directo en tu terminal: `diagnos login` se encarga del enrollment, y los comandos de patients, exams y files siguen desde ahí.
Una fachada REST delgada sobre el mismo SDK, para equipos que hablan HTTP en vez de Python — autenticada solo por certificado mTLS.
La licencia permite el uso comercial, la modificación y la redistribución libres, con concesión expresa de patente — la única condición es conservar el aviso de copyright e indicar los cambios que hagas. No prometemos soporte, hoja de ruta pública ni proceso de aceptación de contribuciones: es código abierto, no un producto con contrato de soporte.
Manos a la obra
Elige el paquete y el método de instalación — los comandos de abajo son exactamente los que verifican los README del repositorio.
Todo comando de abajo necesita un DIAGNOS_API_TOKEN, emitido por un admin del workspace. Cómo obtenerlo
pip install diagnosfrom diagnos import Diagnos
with Diagnos() as vault:
for row in vault.patients.list():
patient = vault.patients.get(row.document_id)
print(patient.record.legal_name)pip install "diagnos @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/sdk"from diagnos import Diagnos
with Diagnos() as vault:
for row in vault.patients.list():
patient = vault.patients.get(row.document_id)
print(patient.record.legal_name)Compila el enclave en Rust durante la instalación — necesita cargo y rustup en el PATH.
git clone https://github.com/diagnos-tech/integration && cd integration
make sync
make checkCompila el enclave en Rust durante la instalación — necesita cargo y rustup en el PATH.
pipx install diagnos-clidiagnos logindiagnos --json patients list --group sg_oncology | jq '.items[].document_id'La sesión nunca se escribe en disco: sin OpenBao configurado, cada nueva invocación repite el enrollment.
pipx install "diagnos-cli @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/cli" \
--preinstall "diagnos @ git+https://github.com/diagnos-tech/integration@develop#subdirectory=apps/sdk"diagnos logindiagnos --json patients list --group sg_oncology | jq '.items[].document_id'La sesión nunca se escribe en disco: sin OpenBao configurado, cada nueva invocación repite el enrollment.
docker build -f apps/api/Dockerfile -t diagnos-api .docker run --rm -p 8443:8443 --cap-add=IPC_LOCK \
-e DIAGNOS_API_TOKEN=apikey-… \
-e DIAGNOS_API_MTLS_CA_FILE=/certs/clients-ca.pem \
-e DIAGNOS_API_TLS_CERT_FILE=/certs/server.pem \
-e DIAGNOS_API_TLS_KEY_FILE=/certs/server-key.pem \
-v $PWD/certs:/certs:ro diagnos-api--cap-add=IPC_LOCK permite que el enclave en Rust bloquee las claves en RAM más allá de los 64 KiB por defecto; sin él, el contenedor arranca en modo best-effort.
cd apps/api/deploy/compose
cp .env.example .env
docker compose upLevanta OpenBao y la API juntos, en el mismo compose.
kubectl apply -k apps/api/deploy/k8sUna sola réplica: la sesión del SDK es por proceso. Escalar exige OpenBao y una service account por réplica.
Control de acceso
DIAGNOS_API_TOKEN identifica una service account y su workspace, y lo emite un administrador del workspace. Por sí solo no desbloquea nada — quien desbloquea es la aprobación humana de los tres pasos siguientes.
La referencia completa es pública — accede desde el repositorio en GitHub o la documentación de abajo, sin pedir aprobación a nadie. Para autenticar las llamadas, crea un DIAGNOS_API_TOKEN en Configuración → Cuentas de servicio, dentro de tu workspace.
o escribe a [email protected]
Zero trust
Ningún proceso lee nada por su cuenta: el enrollment intercambia claves y espera a que alguien apruebe — en el momento, o de antemano.