Fotografia do Paciente

Criada por Alexandre Pateis, Modificado em Ter, 7 Abr na (o) 8:49 AM por Alexandre Pateis

Antes do envio é necessário que exista um paciente registrado no sistema. Para isso, você pode utilizar o ID de um paciente ou criar um novo por meio da API.


O envio da fotografia do paciente é realizado diretamente para o storage e depois precisa ser vinculada ao paciente.


A requisição deve ser feita para a URL:

https://max.cfaz.net/api/v1/patient_data/signed_url

O corpo da requisição deve conter os seguintes parâmetros:


patient_id → ID do paciente

file_name → Nome do arquivo

file_size  Tamanho do arquivo em bytes

checksum  Soma de verificação do arquivo (MD5 codificado em Base64).

width_px  Largura da imagem, em pixels.

height_px  Altura da imagem, em pixels.

content_type  Tipo do arquivo (ex.: image/jpeg).


Cálculo do checksum:

O cálculo do checksum deve ser realizado da seguinte maneira:

  1. Ler o conteúdo binário do arquivo (não em texto, mas os bytes)
  2. Calcular o hash MD5 desse conteúdo.
  3. Codificar o resultado em Base64 (não em hexadecimal).
  4. Enviar esse valor como checksum.


Limites e formatos:

A foto deve cumprir os seguintes requisitos para ser atribuída ao paciente:

  • Tamanho Máximo: 5Mb
  • Tipo do arquivo: bmp, jpg, jpeg, png e gif


Exemplo com CURL:


curl -X POST 'https://max.cfaz.net/api/v1/patient_data/signed_url' \
    -H "Authorization: Bearer 62ed05b2bd52b20e5a1eff01a0b862e6" \
    -d 'patient_id="473804"' \
    -d'file_name="arquivo_exemplo.jpg"' \
    -d 'file_size="128981"' \
    -d 'checksum="5CYlBkMef+iuCXvmrcYaLg=="' \
    -d 'width_px="870"' \
    -d 'height_px="956"' \
    -d 'content_type="image/jpeg"'

O retorno esperado é:

{
  "id": 473804,
  "headers": {
    "Content-MD5": "5CYlBkMef+iuCXvmrcYaLg==",
    "Content-Disposition": "inline; filename=\"arquivo_exemplo.jpg\"; filename*=UTF-8''arquivo_exemplo.jpg",
    "Cache-Control": "public, max-age=31536000, immutable"
  },
  "signed_id": "eyJfcmFpbHMiOnsiZGF0YSI6MTI4MjE4NSwicHVyIjoiYmxvYl9pZCJ9fQ==--fa7c81fd8e35a9cee73a68d614379e9bc910b3d9",
  "signed_url": "https://storage.googleapis.com/....",
  "download_url": "https://storage.googleapis.com/..."
}

Cada campo contém as seguintes informações:

  • ID → Identificador único do paciente no sistema.
  • headers → Cabeçalhos HTTP a serem usados ao enviar a imagem para o storage.
  • signed_id → Identificador criptograficamente assinado para um ActiveStorage::Blob ou ActiveStorage::Attachment, referente à imagem.
  • signed_url → URL para envio da imagem.
  • download_url → URL para o download da imagem com validade de 1 hora


Com essas informações é preciso enviar a fotografia para o Storage:


Exemplo com CURL:


curl -X PUT "https://storage.googleapis.com/..." \
  -H "Content-MD5: 5CYlBkMef+iuCXvmrcYaLg==" \
  -H "Content-Disposition: inline; filename=\"arquivo_exemplo.jpg\"; filename*=UTF-8''arquivo_exemplo.jpg" \
  -H "Cache-Control: public, max-age=31536000, immutable" \
  --upload-file "arquivo_exemplo.jpg"

Após a conclusão do envio, é necessário atualizar o sistema associando o signed_id ao respectivo paciente. Para permitir que o sistema encontre a imagem corretamente.


Para atualizar a foto do paciente é necessário realizar um update no paciente em questão e informe o signed_id no campo patient_datum[picture].


Exemplo com CURL:


curl -X PUT 'https://max.cfaz.net/api/v1/patient_data/<id_do_paciente>' \
  -H "Authorization: Bearer 62ed05b2bd52b20e5a1eff01a0b862e6" \
  -d 'patient_datum[picture]="eyJfcmFpbHMiOnsiZGF0YSI6MTI4MjE4NSwicHVyIjoiYmxvYl9pZCJ9fQ==--fa7c81fd8e35a9cee73a68d614379e9bc910b3d9"'






Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo