API REST

POST /v1/patients

Cria um paciente

POST /v1/patients

Sela record sob security_group e cria o paciente com a primeira versão.

Corpo da requisição #

  • record object obrigatório

    O fluxo `data` de um paciente (`PatientData` no app web) — tudo aqui é selado antes do upload. `birth_date` aceita `date` ou `datetime` com fuso e é gravado do jeito que o app web grava, como um instante ISO 8601 em UTC. Defina `Settings.time_precision` para truncá-lo à precisão de anonimização do workspace antes de selar, como o app web faz.

  • security_group string obrigatório

    O grupo.

  • tags string[]

    Rótulos selados.

  • specialist_ids object

Respostas #

  • 201 Successful Response

    • index object obrigatório

      O que o cofre sabe sobre um paciente/exame/modelo (`docs/PROTOCOL.md §8`): chaves, fluxos, metadado em claro. Todo campo aqui é algo que o próprio cofre lê para rotear e autorizar. O conteúdo clínico nunca aparece neste modelo: ele vive no objeto selado de cada versão, e um resumo selado curto (nome, título) vive em `encrypted_index`, que só quem tem a DEK abre. Exatamente um `security_group_id` por documento: compartilhar um paciente com outra equipe é copiá-lo, nunca compartilhar a chave.

    • version_id object
    • draft_rev object
    • record object obrigatório

      O fluxo `data` de um paciente (`PatientData` no app web) — tudo aqui é selado antes do upload. `birth_date` aceita `date` ou `datetime` com fuso e é gravado do jeito que o app web grava, como um instante ISO 8601 em UTC. Defina `Settings.time_precision` para truncá-lo à precisão de anonimização do workspace antes de selar, como o app web faz.

    • summary object
  • 400 O cofre recusou a requisição como inválida.

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 401 Sem certificado de cliente, ou a sessão do SDK foi recusada ou expirou (`session_expired`).

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 402 O workspace não tem crédito para isto.

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 403 CN não permitido, permissão negada, ou sem chave para o security group do dado (`group_key_unavailable`).

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 404 Não encontrado — também um nó lido sob um grupo ao qual não pertence.

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 409 Uma versão pendente ou mais nova, um replay, ou um upload que não chegou ao armazenamento.

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 422 O corpo ou a query falhou na validação (`invalid_request`).

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 429 Limite de taxa, depois de o backoff do SDK desistir.

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 500 Um envelope não abriu (`crypto_error`, sem detalhe de propósito).

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

  • 502 O cofre falhou, ou respondeu fora do protocolo (`protocol_error`).

    • error object obrigatório

      O corpo de toda resposta não-2xx: o que deu errado, para um programa e para uma pessoa.

curl --cert client.crt --key client.key \
  -X POST "https://api.imgexam.com/v1/patients" \
  -H "Content-Type: application/json" \
  -d @body.json
{
  "index": {
    "document_id": "string",
    "workspace_id": "string",
    "resource": "patients",
    "security_group_id": "string",
    "encrypted_keys": {},
    "encrypted_index": {},
    "streams": {},
    "meta": {},
    "created_at": "string",
    "created_by": "string",
    "updated_at": "string",
    "updated_by": {},
    "is_archived": false,
    "is_deleted": false
  },
  "version_id": {},
  "draft_rev": {},
  "record": {
    "legal_name": "string",
    "display_name": "string",
    "identifiers": {},
    "external_id": {},
    "birth_date": {},
    "biological_sex": {},
    "gender_identity": {},
    "race_identity": {},
    "email": {},
    "phone": {},
    "address": {},
    "internal_notes": {},
    "custom_attributes": {}
  },
  "summary": {}
}