Feegow MCP by usefulapi

Read clinic appointments, patients and finances; manage bookings and patient registration.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
95%
Integridad del esquema
75%
Calidad de los nombres
77%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (4)

  • LOWTool 'feegow_list_professional_insurances' name length outside 3-30 rangeen feegow_list_professional_insurances
  • LOWTool 'feegow_list_appointment_statuses' name length outside 3-30 rangeen feegow_list_appointment_statuses
  • LOWTool 'feegow_list_appointment_reasons' name length outside 3-30 rangeen feegow_list_appointment_reasons
  • LOWTool 'feegow_update_appointment_status' name length outside 3-30 rangeen feegow_update_appointment_status

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~7,199Tokens (definiciones de herramientas)
~2.1 KBTamaño de respuesta típico
Impacto significativo en la atención (5.62% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "feegow": {
      "url": "https://feegow.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://feegow.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (26)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢feegow_list_units

The clinic's main unit (matriz, unidade_id 0) and its branches, with trade name, CNPJ, address and contacts. Use the unit ids to filter other tools. GET /company/list-unity.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_locations

Rooms/locations registered in each unit (id, name, unidade_id). The location id is needed to create appointments. GET /company/list-local.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_specialties(unit_id)

Medical specialties offered, with their default consultation procedure ids and whether they show in online booking. GET /specialties/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_professionals(active, unit_id, specialty_id)

Doctors and other professionals (names and ids), active or inactive, optionally by unit or specialty. GET /professional/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "active": {
      "description": "true (default) = active professionals, false = inactive.",
      "type": "boolean"
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "specialty_id": {
      "description": "Only professionals of this specialty (see feegow_list_specialties).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_professional(professional_id)

One professional's details and specialties. GET /professional/search.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Feegow professional id (see feegow_list_professionals)."
    }
  },
  "required": [
    "professional_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_professional_insurances(professional_id)

Health insurances (convênios) accepted by one professional. GET /professional/insurance.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Feegow professional id."
    }
  },
  "required": [
    "professional_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_insurances(unit_id)

All accepted health insurances with their plans. GET /insurance/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_procedure_types

Procedure types (consultation, exam, surgery, return...) and their ids, used by feegow_list_procedures. GET /procedures/types.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_procedures(procedure_type_id, procedure_id, name, unit_id, specialty_id, ...)

Procedures (consultations, exams...) with price IN CENTS (R$ 12.00 = 1200), duration and online-booking flag. Give a procedure type (see feegow_list_procedure_types) or one procedure id; optionally narrow by name, unit, specialty, professional, patient or price table. GET /procedures/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "procedure_type_id": {
      "description": "Procedure type id (feegow_list_procedure_types).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "description": "One procedure id (use when no type is given).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "name": {
      "description": "Part of the procedure name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "patient_id": {
      "description": "Prices for this patient (their price table / insurance).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "description": "Private price table id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointment_statuses

Appointment status ids and names (booked, confirmed, in service, attended, no-show, cancelled...), used to filter and update appointments. GET /appoints/status.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointment_reasons

Reasons (motivos) that cancel or reschedule an appointment can carry; the id is required by feegow_cancel_appointment and feegow_reschedule_appointment. GET /appoints/motives.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_booking_channels

Channels an appointment can be booked through (online booking, clinic...). GET /appoints/list-channel.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patient_sources

Patient acquisition sources (origens) and their ids, used when creating a patient. GET /patient/list-sources.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_appointments(appointment_id, date_from, date_to, professional_id, patient_id, ...)

Appointments in a date range (or one appointment by id), filtered by professional, patient, unit, location, specialty, channel, procedure or status. Paged: pass the previous reply's next_start. Health data: contains patient ids. GET /appoints/search.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "description": "One appointment id; then the dates are optional.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "description": "First day, yyyy-mm-dd. Required unless appointment_id is given.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "date_to": {
      "description": "Last day, yyyy-mm-dd. Required unless appointment_id is given.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "location_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "channel_id": {
      "description": "Booking channel id (feegow_list_booking_channels).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "status_ids": {
      "description": "Only these statuses (feegow_list_appointment_statuses), e.g. [1, 7] for booked.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "is_return": {
      "description": "true = only return visits (retorno).",
      "type": "boolean"
    },
    "start": {
      "description": "Position of the first row (default 0). Use next_start from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "page_size": {
      "description": "Rows per page, 1-200 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_available_schedule(kind, specialty_id, procedure_id, date_from, date_to, ...)

Free appointment times for a specialty or a procedure between two dates, optionally for one professional, unit or insurance. Use before feegow_create_appointment. GET /appoints/available-schedule.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "specialty",
        "procedure"
      ],
      "description": "What to search by: a specialty or a procedure."
    },
    "specialty_id": {
      "description": "Required when kind is specialty.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "description": "Required when kind is procedure.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_id": {
      "description": "Insurance (convênio) id; see feegow_list_insurances.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "age_from": {
      "description": "Patient's minimum age.",
      "type": "integer",
      "minimum": 0,
      "maximum": 130
    },
    "age_to": {
      "description": "Patient's maximum age.",
      "type": "integer",
      "minimum": 0,
      "maximum": 130
    }
  },
  "required": [
    "kind",
    "date_from",
    "date_to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patients(phone, cpf, source_id, changed_since, birthday, ...)

Registered patients, filtered by phone, CPF, source, birthday (dd-mm) or last-changed date. Health data (LGPD): returns names, contacts and CPF. Paged: pass the previous reply's next_offset. GET /patient/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "phone": {
      "description": "Phone, digits only.",
      "type": "string",
      "pattern": "^\\d{1,20}$"
    },
    "cpf": {
      "description": "CPF, digits only.",
      "type": "string",
      "pattern": "^\\d{1,11}$"
    },
    "source_id": {
      "description": "Patient source id (feegow_list_patient_sources).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "changed_since": {
      "description": "Only patients changed on this date, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "birthday": {
      "description": "Birthday day and month, dd-mm (e.g. 30-01).",
      "type": "string",
      "pattern": "^(0[1-9]|[12]\\d|3[01])-(0[1-9]|1[0-2])$"
    },
    "include_health_program": {
      "description": "true = include each patient's health program.",
      "type": "boolean"
    },
    "offset": {
      "description": "Rows to skip (default 0).",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "limit": {
      "description": "Rows per page, 1-200 (default 50).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_get_patient(patient_id, cpf, include_health_program, include_photo_url, fresh)

One patient by id or CPF: name, birth date, contacts, address, insurance. Health data (LGPD). Feegow caches reads for 5 minutes; set fresh=true right after an edit. GET /patient/search.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "description": "Feegow patient id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "cpf": {
      "description": "CPF, digits only (used when no patient_id).",
      "type": "string",
      "pattern": "^\\d{1,11}$"
    },
    "include_health_program": {
      "type": "boolean"
    },
    "include_photo_url": {
      "description": "true = include the patient photo URL.",
      "type": "boolean"
    },
    "fresh": {
      "description": "true = bypass Feegow's 5-minute cache.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_patient_dependents(patient_id)

Dependents registered under one patient. Health data (LGPD). GET /patient/list-dependents.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "patient_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_proposals(patient_id, date_from, date_to, date_kind)

Treatment/procedure proposals with values in REAIS (R$): for one patient, and/or created (or last changed) in a date range. Give patient_id, or both dates. GET /proposal/list.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_kind": {
      "description": "Which date the range filters: created (default) or last changed.",
      "type": "string",
      "enum": [
        "created",
        "changed"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢feegow_list_invoices(direction, date_from, date_to, unit_id, invoice_id, ...)

Financial invoices (contas) in a date range: receivables (C) or payables (D), with value, description, payer/payee, invoice number and payment details. Optionally one unit, invoice or appointment. Financial data. GET /financial/list-invoice.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "direction": {
      "type": "string",
      "enum": [
        "receivable",
        "payable"
      ],
      "description": "receivable = contas a receber (C), payable = contas a pagar (D)."
    },
    "date_from": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "date_to": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "A date, yyyy-mm-dd."
    },
    "unit_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Unit (branch) id. 0 = the main clinic (matriz). Omit for all units where the endpoint allows it. See feegow_list_units."
    },
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "direction",
    "date_from",
    "date_to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡feegow_create_appointment(patient_id, professional_id, specialty_id, procedure_id, location_id, ...)

WRITE: books a new appointment in the clinic's agenda (not in the past). Check feegow_get_available_schedule first; a taken slot or unknown patient is refused. Feegow may notify the patient (SMS/e-mail/WhatsApp) according to the clinic's own automation settings. valor is in CENTS and must be 0 with insurance. POST /appoints/new-appoint.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "professional_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "specialty_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "procedure_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "location_id": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991,
      "description": "Location (room) id; see feegow_list_locations. 0 = default."
    },
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Appointment day, yyyy-mm-dd (today or later)."
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$",
      "description": "Time of day, 24 h, HH:MM or HH:MM:SS."
    },
    "value_cents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "Price in CENTS (e.g. R$ 550.00 = 55000). Must be 0 when using insurance."
    },
    "insurance_id": {
      "description": "Insurance (convênio) id: set it, with insurance_plan_id, to book under insurance.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_plan_id": {
      "description": "Plan id of the insurance. Required with insurance_id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "description": "Private price table id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "channel_id": {
      "description": "Booking channel id (feegow_list_booking_channels).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "is_return": {
      "description": "true = a return visit (retorno).",
      "type": "boolean"
    },
    "notes": {
      "description": "Appointment note.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "mobile": {
      "description": "Patient mobile phone.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "phone": {
      "description": "Patient phone.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "email": {
      "description": "Patient e-mail.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "patient_id",
    "professional_id",
    "specialty_id",
    "procedure_id",
    "location_id",
    "date",
    "time",
    "value_cents"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_reschedule_appointment(appointment_id, reason_id, date, time, notes)

WRITE: moves an existing appointment to a new date and time (the old slot is released). A reason id is required (feegow_list_appointment_reasons). Feegow may notify the patient according to the clinic's settings. POST /appoints/reschedule.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reason_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Reason id from feegow_list_appointment_reasons."
    },
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "New day, yyyy-mm-dd."
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$",
      "description": "New time, HH:MM or HH:MM:SS."
    },
    "notes": {
      "description": "Note on the change.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "appointment_id",
    "reason_id",
    "date",
    "time"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_cancel_appointment(appointment_id, reason_id, notes)

WRITE: cancels an existing appointment (it cannot be restored through the API; book a new one instead). A reason id is required (feegow_list_appointment_reasons). Feegow may notify the patient according to the clinic's settings. POST /appoints/cancel-appoint.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "reason_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Reason id from feegow_list_appointment_reasons."
    },
    "notes": {
      "description": "Note on the cancellation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    }
  },
  "required": [
    "appointment_id",
    "reason_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_update_appointment_status(appointment_id, status_id, notes, arrival_time)

WRITE: sets an appointment's status (for example confirmed, waiting, attended, no-show) and adds a note to the agenda. Status ids: feegow_list_appointment_statuses. To cancel or move an appointment use the cancel/reschedule tools. POST /appoints/statusUpdate.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "appointment_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "status_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "notes": {
      "description": "Note added to the agenda entry.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "arrival_time": {
      "description": "Arrival time shown in the waiting room (only for the waiting status), HH:MM.",
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$"
    }
  },
  "required": [
    "appointment_id",
    "status_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡feegow_create_patient(full_name, cpf, no_cpf, birth_date, gender, ...)

WRITE: registers a new patient and returns the patient_id. Feegow does not duplicate: when a patient with the same CPF and birth date (or, without a CPF, the same name plus mobile, e-mail or birth date) exists, that patient's id is returned and nothing is created. Set no_cpf=true for a patient without CPF. Health data (LGPD): only register data the patient gave the clinic. POST /patient/create.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Full name (max 200 characters)."
    },
    "cpf": {
      "type": "string",
      "pattern": "^\\d{1,11}$",
      "description": "CPF, 11 digits, numbers only."
    },
    "no_cpf": {
      "description": "true = the patient has no CPF (then cpf is ignored).",
      "type": "boolean"
    },
    "birth_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Birth date, yyyy-mm-dd."
    },
    "gender": {
      "type": "string",
      "enum": [
        "M",
        "F"
      ],
      "description": "M or F."
    },
    "social_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Social name."
    },
    "mobile": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Mobile phone, digits only."
    },
    "mobile2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second mobile phone, digits only."
    },
    "phone": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Phone, digits only."
    },
    "phone2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second phone, digits only."
    },
    "email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "E-mail."
    },
    "email2": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Second e-mail."
    },
    "address": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Street."
    },
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Street number."
    },
    "complement": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Address complement."
    },
    "district": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "District (bairro)."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "City."
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2,
      "description": "State, two letters (e.g. RJ)."
    },
    "zip": {
      "type": "string",
      "minLength": 1,
      "maxLength": 9,
      "description": "CEP (max 9 characters)."
    },
    "source_id": {
      "description": "Patient source id (feegow_list_patient_sources).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "price_table_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Private price table id."
    },
    "notes": {
      "description": "Note on the patient record.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "insurance_id": {
      "description": "Insurance (convênio) id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_plan_id": {
      "description": "Insurance plan id.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "insurance_card": {
      "description": "Insurance card number (matrícula).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "insurance_holder": {
      "description": "Insurance holder's name.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "insurance_valid_until": {
      "description": "Insurance validity, yyyy-mm-dd.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    }
  },
  "required": [
    "full_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴feegow_update_patient(patient_id, full_name, cpf, birth_date, gender, ...)

WRITE: changes a patient's registration data. Only the fields you pass are sent; they overwrite stored values. CPF can only be set when absent, never replaced after registration (vendor rejects a different existing CPF). Health data (LGPD). Feegow caches reads for 5 minutes (use fresh=true in feegow_get_patient to see the change). POST /patient/edit.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "patient_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "full_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Full name (max 200 characters)."
    },
    "cpf": {
      "type": "string",
      "pattern": "^\\d{1,11}$",
      "description": "CPF, 11 digits, numbers only."
    },
    "birth_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Birth date, yyyy-mm-dd."
    },
    "gender": {
      "type": "string",
      "enum": [
        "M",
        "F"
      ],
      "description": "M or F."
    },
    "mobile": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Mobile phone, digits only."
    },
    "mobile2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second mobile phone, digits only."
    },
    "phone": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Phone, digits only."
    },
    "phone2": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Second phone, digits only."
    },
    "email": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "E-mail."
    },
    "address": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Street."
    },
    "number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Street number."
    },
    "complement": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Address complement."
    },
    "district": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "District (bairro)."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "City."
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2,
      "description": "State, two letters (e.g. RJ)."
    },
    "zip": {
      "type": "string",
      "minLength": 1,
      "maxLength": 9,
      "description": "CEP (max 9 characters)."
    },
    "price_table_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Private price table id."
    }
  },
  "required": [
    "patient_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada26 herramientas