Antes del envío es necesario que exista un paciente registrado en el sistema. Para ello, puede utilizar el ID de un paciente existente o crear uno nuevo mediante la API.
El envío de la fotografía del paciente se realiza directamente al storage y luego debe vincularse al paciente.
La solicitud debe realizarse a la URL:
https://max.cfaz.net/api/v1/patient_data/signed_urlEl cuerpo de la solicitud debe contener los siguientes parámetros:
patient_id → ID del paciente
file_name → Nombre del archivo
file_size → Tamaño del archivo en bytes
checksum → Suma de verificación del archivo (MD5 codificado en Base64).
width_px → Ancho de la imagen, en píxeles.
height_px → Alto de la imagen, en píxeles.
content_type → Tipo del archivo (ej.: image/jpeg).
Cálculo del checksum:El cálculo del checksum debe realizarse de la siguiente manera:
- Leer el contenido binario del archivo (no en texto, sino los bytes)
- Calcular el hash MD5 de ese contenido.
- Codificar el resultado en Base64 (no en hexadecimal).
- Enviar ese valor como checksum.
Límites y formatos:
La foto debe cumplir los siguientes requisitos para ser asignada al paciente:
- Tamaño máximo: 5 MB
- Tipo de archivo: bmp, jpg, jpeg, png y gif
Ejemplo con 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"'El retorno esperado es:
{
"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 contiene la siguiente información:
- ID → Identificador único del paciente en el sistema.
- headers → Encabezados HTTP a utilizar al enviar la imagen al storage.
- signed_id → Identificador criptográficamente firmado para un ActiveStorage::Blob o ActiveStorage::Attachment, referente a la imagen.
- signed_url → URL para el envío de la imagen.
- download_url → URL para la descarga de la imagen con validez de 1 hora
Con esta información es necesario enviar la fotografía al Storage:
Ejemplo con 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"
Tras completar el envío, es necesario actualizar el sistema asociando el signed_id al paciente correspondiente, para permitir que el sistema encuentre la imagen correctamente.
Para actualizar la foto del paciente es necesario realizar un update en el paciente correspondiente e informar el signed_id en el campo patient_datum[picture].
Ejemplo con 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"'
¿Le fue útil este artículo?
¡Qué bueno!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Comentarios enviados
Agradecemos su iniciativa, e intentaremos corregir el artículo