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_urlO 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:
- Ler o conteúdo binário do arquivo (não em texto, mas os bytes)
- Calcular o hash MD5 desse conteúdo.
- Codificar o resultado em Base64 (não em hexadecimal).
- 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
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo