Logo Medcloud Horizontal

Medcloud RIS

Documentación de la API

API RIS

Puntos de conexión para la gestión completa del flujo clínico: autenticación, registro de pacientes, salas, socios, unidades, médicos, procedimientos y citas. Todas las solicitudes utilizan un token JWT de portador obtenido a través de /authenticate.
URL Base: api.ris.medcloud.co
POST
/authenticate
Autenticar usuario

Valida las credenciales y devuelve un token JWT Bearer necesario en todas las demás llamadas. El token debe enviarse en el encabezado Authorization: Bearer <token>.‍

Parâmetros de Body
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
curl -X POST https://replace.com/authenticate \ -H "Content-Type: application/json" \ -d '{ "username": "john.doe", "password": "securePassword123", "clinicIdToAccess": 42 }'
Response · 200
{ "token": "eyJhbGciOiJIUzI1NiIsInR5..."
}
Response · Error
{ "token": "eyJhbGciOiJIUzI1NiIsInR5..."
}
POST
/patient
Crear paciente

Registra a un nuevo paciente en la clínica. El personalIdentification y el correo electrónico deben ser únicos; las duplicaciones generan un error. Nota: Si ya existe un paciente con el mismo personalIdentification o correo electrónico, la API devuelve DUPLICATED_PATIENT.

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "patient": { "name": "Michael Robert", "personalIdentification": "132333957839", "email": "nomail@gmail.com", "birthDate": "1990-05-15", "gender": "MALE", "cellPhone": "111 9844422" }
}
Response · 200
{ "patientId": 101 }
Response · Error
{ "errorMessage": "VALIDATION_ERROR", "errorType": "VALIDATION_ERROR", "validationsErrors": [ { "message": "DUPLICATED_PATIENT", "path": "patient.email" } ]
}
GET
/patient/{id}
Buscar Paciente

Devuelve los datos completos de un paciente mediante su identificador único.‍

Parâmetros de Header
Parâmetros de Path
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
curl https://replace.com/patient/101 \ -H "Authorization: Bearer "
Response · 200
curl https://replace.com/patient/101 \ -H "Authorization: Bearer "
Response · Error
PUT
/patient/{id}
Actualizar paciente

Actualiza los datos de un paciente. Todos los campos son opcionales, pero se debe enviar al menos uno. Se aplican las mismas reglas de unicidad que en el POST.‍

Parâmetros de Header
Parâmetros de Path
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "patient": { "cellPhone": "111 99999999", "socialName": "Michael" }
}
Response · 200
// 204 Sin contenido — sin cuerpo
Response · Error
POST
/patient/{id}
Criar Sala

Registra una sala de procedimientos. El período de funcionamiento debe incluir intervalos completos de la duración definida. Si startTime no cabe en el intervalo, devuelve ROOM_START_TIME_DOES_NOT_FIT_INTO_PROCEDURE_DURATION_SPOT.

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "room": { "name": "Room 1", "number": 15, "startTime": "08:00", "endTime": "18:00", "procedureDuration": 30, "modality": "CT", "status": "AVAILABLE" }
}
Response · 200
{ "roomId": 7 }
Response · Error
{ "errorMessage": "VALIDATION_ERROR", "errorType": "VALIDATION_ERROR", "validationsErrors": [{ "message": "startTime does not fit slot", "path": "room.startTime" }]
}
GET
/room
Buscar Sala

Devuelve los datos de una sala por su ID.‍

Parâmetros de Header
Parâmetros de Path
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
curl https://replace.com/room/7 \ -H "Authorization: Bearer "
Response · 200
{ "room": { "name": "Room 1", "number": 15, "startTime": "08:00", "endTime": "18:00", "procedureDuration": 30, "status": "AVAILABLE" }
}
Response · Error
POST
/partner
Crear socio

Registra a un socio (convenio, aseguradora o clínica asociada) con sus reglas de pago.‍

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
Response · 200
Response · Error
PUT
/partner/{id
Actualizar socio

Actualiza los datos de un socio. Todos los campos son opcionales.‍

cURL / JSON
Response · 200
Response · Error
POST
/unit
Crear unidad

Registra una unidad clínica con sus datos de identificación y dirección.‍

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "unit": { "name": "Downtown Unit", "identificationDocument": "103958503", "corporateName": "Downtown Unit LTDA", "address": { "zipCode": "97297", "street": "Main Street", "number": "201", "city": "Los Angeles", "state": "California", "country": "Brazil", "district": "Hollywood" } }
}
Response · 200
{ "unitId": 3 }
Response · Error
GET
/unit/{id}
Buscar unidad

Devuelve datos de una unidad por su ID.‍

Parâmetros de Header
Parâmetros de Path
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
curl https://replace.com/unit/3 \ -H "Authorization: Bearer "
Response · 200
Response · Error
PUT
/unit/{id}
Actualizar unidad

Actualiza los datos de una unidad. Todos los campos son opcionales.‍

Parâmetros de Header
Parâmetros de Path
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "unit": { "cnes": "1234567890" }
}
Response · 200
// 204 No Content
Response · Error
POST
/doctor
Crear médico

Registra a un médico en el sistema. El correo electrónico y el CRM deben ser únicos. Si el CRM o el correo electrónico están duplicados, se devuelve INVALID_CRM o INVALID_EMAIL.‍

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
201: Médico creado. Devuelve { doctorId }. 400 (VALIDATION_ERROR): Esquema no válido. 401 (UNAUTHORIZED): Token no válido. 500 (INTERNAL_SERVER_ERROR): CRM o correo electrónico duplicado.
Response · 200
{ "doctorId": 55 }
Response · Error
GET
/doctor/{id}
Buscar un médico

Devuelve información sobre un médico por su ID.‍‍

Parâmetros de Header
Parâmetros de Path
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
curl https://replace.com/doctor/55 \ -H "Authorization: Bearer "
Response · 200
Response · Error
PUT
/doctor/{id}
Actualizar médico

Actualiza los datos de un médico. Si el CRM o el correo electrónico están duplicados, devuelve INVALID_CRM o INVALID_EMAIL.‍

Parâmetros de Header
Parâmetros de Path
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "doctor": { "status": "UNAVAILABLE" }
}
Response · 200
// 204 No Content
Response · Error
POST
/medical-procedure
Crear un procedimiento médico

Registra un procedimiento y, si se desea, vincula a los socios autorizados para llevarlo a cabo.‍

Parâmetros de Header
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "medicalProcedure": { "price": 255.55, "name": "Lasik Surgery", "modality": "CT", "instructions": "Evitar lentes de contato 5 dias antes" }, "linkedPartnerIds": [12, 15]
}
Response · 200
{ "medicalProcedureId": 3 }
Response · Error
GET
/medical-procedure/{id}
Buscar procedimiento médico

Devuelve datos de un procedimiento y sus socios vinculados.‍

Parâmetros de Header
Parâmetros de Path
Códigos de Resposta (200)
Códigos de Resposta (Erro/Status)
cURL / JSON
Response · 200
{ "medicalProcedure": { "price": 255.55, "name": "Lasik Surgery", "modality": "CT" }, "linkedPartnerIds": [12, 15]
}
Response · Error
PUT
/medical-procedure/{id}
Actualizar procedimiento médico

Actualiza los datos de un procedimiento y/o de sus socios vinculados.‍

Parâmetros de Header
Parâmetros de Path
Parâmetros de Body
Códigos de Resposta (Erro/Status)
cURL / JSON
{ "medicalProcedure": { "price": 299.90 }, "linkedPartnerIds": [12]
}
Response · 200
// 204 No Content
Response · Error
POST
/schedule
Crear cita
  • Agenda um procedimento médico para um paciente em uma sala. Aceita informações de pagamento do paciente e coparticipação do parceiro. Se o parceiro tiver paymentType "PARTIAL" ou "TOTAL" e o body incluir patientPayment, então coparticipationPayment é obrigatório.
  • Parâmetros de Header
    Parâmetros de Body
    Códigos de Resposta (Erro/Status)
    cURL / JSON
    { "agenda": { "fecha": "2026-07-10", "horaInicio": "09:00", "idProcedimientoMédico": 3, "idPaciente": 101, "idSalón": 7, "idSocio": 12 }, "pagoDelPaciente": { "estado": "PAGADO", "monto": 255.55, "método": "PIX" }
    }
    Response · 200
    { "scheduleId": 528 }
    Response · Error
    { "errorMessage": "VALIDATION_ERROR", "errorType": "VALIDATION_ERROR", "validationsErrors": [{ "message": "coparticipationPayment required", "path": "coparticipationPayment" }]
    }
    GET
    /schedule/{id}
    Buscar citas

    Devuelve los datos completos de una cita, incluyendo el estado y el estado de pago. Valores aceptados en schedule.status: CANCELED · CONCLUDED · CONFIRMED · ONLINE_CANCELED · ONLINE_CONFIRMED · ONLINE_SCHEDULED · IN_PROGRESS · NOT_CONFIRMED · WAITING_FOR_BILLING · WAITING_FOR_CHECKOUT · GIVE_UP · DELETED.

    Parâmetros de Header
    Parâmetros de Path
    Códigos de Resposta (200)
    Códigos de Resposta (Erro/Status)
    cURL / JSON
    Response · 200
    { "schedule": { "date": "2026-07-10", "startTime": "09:00", "medicalProcedureId": 3, "patientId": 101, "status": "CONFIRMED", "paymentStatus": "PAID" }
    }
    Response · Error
    PUT
    /schedule/{id}
    Actualizar cita

    Actualiza los datos de una cita. Las citas con pago confirmado (paymentStatus: PAID) no se pueden modificar. Se aplica la misma regla de coparticipación que en el POST.

    Parâmetros de Header
    Parâmetros de Path
    Parâmetros de Body
    Códigos de Resposta (Erro/Status)
    cURL / JSON
    Response · 200
    Response · Error