Primeiros passos

Início rápido

De um token de service account ao primeiro paciente e arquivo cifrados em cinco minutos, com o SDK Python ou a CLI diagnos.

Nesta página

English · Português (Brasil)

De um token de service account até o primeiro paciente e o primeiro arquivo cifrados, em uns cinco minutos. Todo byte de dado clínico abaixo é cifrado dentro do seu próprio processo antes de tocar a rede; o cofre só guarda ciphertext.

Antes de começar#

Você precisa de De onde vem
Python 3.11, 3.12 ou 3.13 python.org ou o seu gerenciador de pacotes
Um token de service account (apikey-…) Um admin do workspace cria no app web do diagnos
Alguém que possa aprovar um enrollment Um admin do workspace, com o app web aberto

Nota

O token identifica qual service account está pedindo. Sozinho, ele não desbloqueia nada: a primeira execução imprime um link e um código de 6 dígitos que um admin aprova — veja Autenticação para entender por quê.

1. Instale#

pip install diagnos          # o SDK
pipx install diagnos-cli     # opcional: o comando `diagnos`

Até o primeiro release no PyPI, instale do código-fonte — Instalação tem os comandos exatos, inclusive o toolchain Rust que o build do fonte precisa.

2. Entregue o token ao processo#

export DIAGNOS_API_TOKEN="apikey-…"

O SDK o lê do ambiente; a CLI também aceita --token para uma única invocação. Nada o imprime de volta: todo repr do SDK é redigido.

3. Faça o enrollment e grave o primeiro paciente#

from diagnos import Diagnos

with Diagnos() as vault:  # imprime um link de aprovação e um código de 6 dígitos, e espera
    print("workspace:", vault.workspace_id)
    print("grupos:", vault.security_groups)

    group = vault.security_groups[0]  # os security groups que o admin concedeu
    patient = vault.patients.create(
        {"legal_name": "Maria da Silva", "display_name": "Maria", "birth_date": "1990-01-31"},
        security_group=group,
        tags=["retorno"],
    )
    print("criado", patient.id, "versão", patient.version_id)

Enquanto Diagnos() espera, abra o link impresso no app web, confira que a máquina descrita ali é a sua, digite o código e escolha os security groups que este processo pode ler. O bloco continua no instante em que você aprova.

security_groups é a lista que o admin concedeu; um documento pertence a exatamente um deles. Tudo no registro — nomes, data de nascimento — é selado sob uma chave nova antes de sair; o cofre só fica sabendo que existe um paciente naquele grupo.

4. Leia de volta#

with Diagnos() as vault:
    for row in vault.patients.list():  # os nomes vêm de um resumo selado: nenhuma versão é baixada
        print(row.id, row.summary.display_name if row.summary else "—")

    same = vault.patients.get(patient.id)  # baixa e decifra a versão mais nova
    print(same.record.legal_name, same.tags)

Dica

Cada Diagnos() acima faz enrollment de novo, porque uma sessão vive só na memória do processo que a conquistou. Em código de verdade, mantenha um vault pela vida inteira do processo — e leia Sessões antes de rodar num servidor que reinicia sem uma pessoa.

5. Suba e baixe um arquivo#

with Diagnos() as vault:
    drive = vault.drives.drive(vault.security_groups[0])
    node = drive.upload("scans/IM-0001.dcm")  # chave própria; nome e conteúdo selados
    print(node.node_id, drive.name_of(node), node.mime_type, node.size)

    data = vault.drives.download(node.node_id)  # bytes na RAM, decifrados
    vault.drives.download(node.node_id, "copia-de-IM-0001.dcm")  # ou direto para um arquivo

6. O mesmo pelo terminal#

diagnos login                                   # faz enrollment; imprime o que foi concedido
diagnos patients create --group sg_oncology --legal-name "Maria da Silva" --display-name Maria
diagnos patients list --group sg_oncology --summary
diagnos files upload --group sg_oncology scans/IM-0001.dcm

Cada invocação do diagnos é um processo próprio, então cada uma faz enrollment a menos que o OpenBao esteja configurado — o guia da CLI explica como rodá-la em scripts e cron.

Para onde ir agora#

Para… Leia
entender workspaces, grupos, versões e nós Conceitos
ler, atualizar, arquivar e apagar com segurança Pacientes · Exames · Arquivos
rodar num servidor sem uma pessoa Sessões e auto-unseal com OpenBao
tratar toda falha Erros
chamar por HTTP em vez disso Guia da API REST
saber exatamente o que o cofre consegue ver Modelo de segurança