splose MCP by usefulapi
Read splose patients, appointments, invoices, cases; book and cancel appointments, record payments.
我该使用它吗
质量与安全性
发现(2)
- LOW在 splose_list_cancellation_reasons 中
- LOW在 splose_get_practitioner_availability 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"splose": {
"url": "https://splose.usefulapi.io/mcp"
}
}
}远程端点
https://splose.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(36)
🟢splose_get_account
The organisation and the practitioner who owns the API key, plus the key's expiry date. Good first call. GET /me.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_patients(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Patients (clients) of the practice, filtered, in id order, as short rows: id, name, email, birthdate, phones, tags, alert, archived. Use splose_get_patient for the full record. HEALTH DATA: only look people up when the user asks. GET /patients.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"ids": {
"description": "Only these patient ids (max 100).",
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"firstname": {
"description": "Patient first name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"description": "Patient last name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"description": "Patient email.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"birthdate": {
"description": "Patient birth date, yyyy-mm-dd.",
"type": "string"
},
"phoneNumber": {
"description": "Phone number without the country code.",
"type": "string",
"minLength": 3,
"maxLength": 32
},
"patientTag": {
"description": "A patient tag, e.g. Self-managed.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_patient(patient_id)
One patient in full: contact details, address, NDIS number and plan info, Medicare/health fund, emergency contact, tags and custom fields. HEALTH DATA. GET /patients/{id}.
输入模式
{
"type": "object",
"properties": {
"patient_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Patient id."
}
},
"required": [
"patient_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_appointments(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Appointments in id order: start/end (UTC), service, location, practitioner, price, note and the per-patient status (Arrived, Did not arrive, Cancelled, Completed, cancellation reason, invoice id). Filter by time window, patient, practitioner or status. GET /appointments.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"start_gt": {
"description": "Only appointments starting after this date or date-time.",
"type": "string"
},
"start_lt": {
"description": "Only appointments starting before this date or date-time.",
"type": "string"
},
"patientId": {
"description": "Only appointments of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "Only appointments of this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "Patient status of the appointment.",
"type": "string",
"enum": [
"Arrived",
"Did not arrive",
"Cancelled",
"Completed"
]
},
"status_update_gt": {
"description": "Only appointments whose status changed after this date or date-time.",
"type": "string"
},
"status_update_lt": {
"description": "Only appointments whose status changed before this date or date-time.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_appointment(appointment_id)
One appointment in full, with each patient's status, case, invoice and cancellation details. GET /appointments/{id}.
输入模式
{
"type": "object",
"properties": {
"appointment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Appointment id."
}
},
"required": [
"appointment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_practitioners(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Practitioners (staff): name, email, profession, role, active flag, online-booking flag, timezone and their location/service connections. GET /practitioners.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"firstname": {
"description": "Practitioner first name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"description": "Practitioner last name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"description": "Practitioner email.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"isActive": {
"description": "true = only active practitioners, false = only inactive.",
"type": "boolean"
},
"roleName": {
"description": "A predefined or custom role name.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_practitioner(practitioner_id)
One practitioner in full, including provider numbers and connections. GET /practitioners/{id}.
输入模式
{
"type": "object",
"properties": {
"practitioner_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Practitioner id."
}
},
"required": [
"practitioner_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_locations(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Practice locations: title, address, phone, email, timezone, online-booking flag and the ids of the services offered there. GET /locations.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"title": {
"description": "Location title.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_location(location_id)
One location in full. GET /locations/{id}.
输入模式
{
"type": "object",
"properties": {
"location_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Location id."
}
},
"required": [
"location_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_services(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
The service catalogue: name, type, code, duration (minutes), unit (Hour or Each), price, tax type, group size and tags. GET /services.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"name": {
"description": "Service name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"type": {
"description": "Service type.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"code": {
"description": "Service code.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"serviceTag": {
"description": "A service tag.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_service(service_id)
One service in full, including provider-travel pricing. GET /services/{id}.
输入模式
{
"type": "object",
"properties": {
"service_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Service id."
}
},
"required": [
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_contacts(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Contacts (GPs, plan managers, referrers, invoice recipients): name, type, email, address, phones and the ids of their patients, invoices and cases. GET /contacts.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"firstname": {
"description": "Contact first name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"lastname": {
"description": "Contact last name.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"description": "Contact email.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"phoneNumber": {
"description": "Phone number without the country code.",
"type": "string",
"minLength": 3,
"maxLength": 32
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_contact(contact_id)
One contact in full. GET /contacts/{id}.
输入模式
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Contact id."
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_cases(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Cases (funding referrals and plans): case number, budget, hours or appointment allowance, issue and expiry dates, tracking type, open flag and utilisation alert. HEALTH/FUNDING DATA. GET /cases.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"patientId": {
"description": "Only cases of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "Only cases of this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"contactId": {
"description": "Only cases referred by / billed to this contact.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"trackType": {
"description": "How the case is tracked.",
"type": "string",
"enum": [
"Appointments",
"Hours",
"Budget"
]
},
"status": {
"description": "Case status.",
"type": "string",
"enum": [
"Open",
"Closed",
"Expired"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_case(case_id)
One case in full, with its appointment connections. GET /cases/{id}.
输入模式
{
"type": "object",
"properties": {
"case_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Case id."
}
},
"required": [
"case_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_invoices(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Invoices: number, issue/due dates, patient, contact, location, practitioner, subtotal, tax, total, paid amount, status (Draft, Awaiting Payment, Paid), line items and payment ids. Use status=Awaiting Payment for what is owed. GET /invoices.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"patientId": {
"description": "Only invoices of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"locationId": {
"description": "Only invoices created at this location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "Only invoices created by this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "Invoice status.",
"type": "string",
"enum": [
"Draft",
"Awaiting Payment",
"Paid"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_invoice(invoice_id)
One invoice in full with its line items and payments. GET /invoices/{id}.
输入模式
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Invoice id."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_payments(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Payments received: payment number, amount, date, patient, location, payment method, the invoices each payment settles and credit allocations. GET /payments.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"patientId": {
"description": "Only payments of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"locationId": {
"description": "Only payments created at this location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_payment(payment_id)
One payment in full. GET /payments/{id}.
输入模式
{
"type": "object",
"properties": {
"payment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Payment id."
}
},
"required": [
"payment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_payment_methods(id_gt, id_lt, update_gt, update_lt, include_archived)
Payment methods (cash, card, bank transfer and so on) with their ids, needed to record a payment. GET /payment-methods.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_credit_notes(id_gt, id_lt, update_gt, update_lt, patientId, ...)
Credit notes: number, invoice, patient, subtotal, tax, total, sent status, items and allocations. GET /credit-notes.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"patientId": {
"description": "Only credit notes of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"invoiceId": {
"description": "Only credit notes of this invoice.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "Only credit notes created by this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"sentStatus": {
"description": "Sent status.",
"type": "string",
"enum": [
"Sent",
"Viewed"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_waitlist(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Waitlist entries: patient, practitioner, location, wanted services, preferred days and time, tags and active flag. GET /waitlists.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"practitionerId": {
"description": "Only items for this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"userGroupId": {
"description": "Only items for this practitioner group.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"locationId": {
"description": "Only items for this location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"patientId": {
"description": "Only items of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"dateAddedGt": {
"description": "Only items added after this date.",
"type": "string"
},
"dateAddedLt": {
"description": "Only items added before this date.",
"type": "string"
},
"isActive": {
"description": "true = still waiting, false = closed.",
"type": "boolean"
},
"serviceIds": {
"description": "Only items waiting for these services.",
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_patient_forms(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Forms sent to patients: title, status (Incomplete, In progress, Completed), patient, appointment, template and submission time. The form content is included. GET /patient-forms.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"patientId": {
"description": "Only forms of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"templateId": {
"description": "Only forms from this template.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_support_activities(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Non-appointment billable activities (NDIS support activities): patient, practitioner, service, item code, quantity, price, invoice id. GET /support-activities.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"start_gt": {
"description": "Only activities starting after this date or date-time.",
"type": "string"
},
"start_lt": {
"description": "Only activities starting before this date or date-time.",
"type": "string"
},
"patientId": {
"description": "Only activities of this patient.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_busy_times(id_gt, id_lt, update_gt, update_lt, include_archived, ...)
Blocked-out time in practitioner calendars (leave, admin time): start/end, location, practitioners, type and note. GET /busy-times.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
},
"start_gt": {
"description": "Only busy times starting after this date or date-time.",
"type": "string"
},
"start_lt": {
"description": "Only busy times starting before this date or date-time.",
"type": "string"
},
"busyTimeTypeId": {
"description": "Only busy times of this type.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "Only busy times of this practitioner.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_cancellation_reasons(id_gt, id_lt, update_gt, update_lt, include_archived)
Cancellation reasons with their ids, needed to cancel an appointment. GET /cancellation-reasons.
输入模式
{
"type": "object",
"properties": {
"id_gt": {
"description": "Only objects with an id greater than this: the next page (pass the previous reply's next_id_gt).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"id_lt": {
"description": "Only objects with an id less than this: the previous page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"update_gt": {
"description": "Only objects updated after this date or date-time (UTC).",
"type": "string"
},
"update_lt": {
"description": "Only objects updated before this date or date-time (UTC).",
"type": "string"
},
"include_archived": {
"description": "true to include archived objects (default false).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_list_custom_fields
The custom fields defined for patients: id, name, type (short text, dropdown, date and so on), required flag and options. GET /custom-field/.
输入模式
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_get_practitioner_availability(practitioner_id, startDate, endDate, locationId)
A practitioner's working-hours availability per date and location (start/end time, weekly or fortnightly repeat). The window is at most 100 days. This is the roster, not the open slots: use splose_find_free_slots for bookable times. GET /availabilities/{practitionerId}.
输入模式
{
"type": "object",
"properties": {
"practitioner_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Practitioner id."
},
"startDate": {
"type": "string",
"description": "First date of the window."
},
"endDate": {
"type": "string",
"description": "Last date of the window, at most 100 days after startDate."
},
"locationId": {
"description": "Only this location.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"practitioner_id",
"startDate",
"endDate"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢splose_find_free_slots(serviceId, locationId, practitionerIds, from, to, ...)
Bookable free slots for one or more practitioners at a location for one patient service, between from and to (the window is at most 7 days). Returns, per practitioner, the start/end of each open slot in UTC. Read-only. GET /free-slots.
输入模式
{
"type": "object",
"properties": {
"serviceId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Service id (splose_list_services)."
},
"locationId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Location id (splose_list_locations)."
},
"practitionerIds": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"description": "One or more practitioner ids."
},
"from": {
"type": "string",
"description": "Start of the search window (UTC)."
},
"to": {
"description": "End of the search window, up to 7 days after from.",
"type": "string"
},
"interval": {
"description": "Slot step in minutes (default 15).",
"type": "integer",
"minimum": 5,
"maximum": 240
}
},
"required": [
"serviceId",
"locationId",
"practitionerIds",
"from"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴splose_create_appointment(start, end, serviceId, locationId, practitionerId, ...)
WRITE: books ONE appointment for one patient with one practitioner, service and location, from start to end (UTC). Splose may send the patient its normal booking confirmation or reminders according to the practice's settings, and the appointment can later be invoiced. Check splose_find_free_slots first. Not idempotent: calling twice books twice. POST /appointments.
输入模式
{
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "Appointment start (UTC)."
},
"end": {
"type": "string",
"description": "Appointment end (UTC), after start."
},
"serviceId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Service id."
},
"locationId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Location id."
},
"practitionerId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Practitioner id."
},
"patientId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Patient id."
},
"caseId": {
"description": "Case (funding plan) id to attach.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"note": {
"description": "Appointment note.",
"type": "string",
"maxLength": 5000
}
},
"required": [
"start",
"end",
"serviceId",
"locationId",
"practitionerId",
"patientId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴splose_update_appointment(appointment_id, start, end, serviceId, locationId, ...)
WRITE: changes the time, service, location, practitioner, case or patient of ONE existing appointment; send only the fields to change. Splose may notify the patient of a change according to the practice's settings. Same input twice gives the same result. PUT /appointments/{id}.
输入模式
{
"type": "object",
"properties": {
"appointment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Appointment id."
},
"start": {
"description": "New start (UTC).",
"type": "string"
},
"end": {
"description": "New end (UTC).",
"type": "string"
},
"serviceId": {
"description": "New service id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"locationId": {
"description": "New location id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"practitionerId": {
"description": "New practitioner id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"caseId": {
"description": "New case id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"patientId": {
"description": "New patient id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"appointment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴splose_cancel_appointment(appointment_id, reasonId, note, patient_id, confirm)
WRITE: cancels ONE appointment with a cancellation reason (ids from splose_list_cancellation_reasons) and an optional note. The reason's billable rate may create a cancellation charge, and the patient may be notified per the practice's settings. For a group appointment pass patient_id to cancel only that patient's place; without it the whole appointment is cancelled. Cannot be undone through this server: confirm with the user first and pass confirm: true. POST /appointments/{id}/cancellation or /appointments/{id}/patients/{patientId}/cancellation.
输入模式
{
"type": "object",
"properties": {
"appointment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Appointment id."
},
"reasonId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cancellation reason id."
},
"note": {
"description": "Optional cancellation note.",
"type": "string",
"maxLength": 5000
},
"patient_id": {
"description": "Group appointments only: cancel just this patient's participation.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: the user has confirmed this cancellation (it may charge a fee and notify the patient)."
}
},
"required": [
"appointment_id",
"reasonId",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡splose_mark_patient_arrived(appointment_id, patient_id)
WRITE: marks the patient of ONE appointment as arrived (check-in). For a group appointment pass patient_id to mark just that patient. Marking twice has the same effect. POST /appointments/{id}/arrival or /appointments/{id}/patients/{patientId}/arrival.
输入模式
{
"type": "object",
"properties": {
"appointment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Appointment id."
},
"patient_id": {
"description": "Group appointments only: the patient who arrived.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"appointment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡splose_create_patient(firstname, lastname, middleName, preferredName, title, ...)
WRITE: adds ONE new patient record (first and last name required). Search with splose_list_patients first to avoid a duplicate. Patient messaging follows the practice's settings and communicationPreference. Not idempotent: calling twice creates two patients. HEALTH DATA: only enter what the user supplied. POST /patients.
输入模式
{
"type": "object",
"properties": {
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "First name."
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Last name."
},
"middleName": {
"type": "string",
"maxLength": 100
},
"preferredName": {
"type": "string",
"maxLength": 100
},
"title": {
"description": "e.g. Mr., Ms., Dr.",
"type": "string",
"maxLength": 30
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"sex": {
"type": "string",
"maxLength": 50
},
"genderIdentity": {
"type": "string",
"maxLength": 100
},
"pronouns": {
"type": "string",
"maxLength": 50
},
"birthdate": {
"description": "Birth date, yyyy-mm-dd.",
"type": "string"
},
"timezone": {
"description": "IANA timezone, e.g. Australia/Adelaide.",
"type": "string",
"maxLength": 64
},
"phoneNumbers": {
"maxItems": 5,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Mobile",
"Home",
"Work",
"Fax",
"Other"
]
},
"code": {
"description": "Country code, e.g. +61.",
"type": "string",
"maxLength": 8
},
"phoneNumber": {
"type": "string",
"minLength": 3,
"maxLength": 32,
"description": "Number without the country code."
}
},
"required": [
"phoneNumber"
],
"additionalProperties": false
}
},
"addressL1": {
"type": "string",
"maxLength": 200
},
"addressL2": {
"type": "string",
"maxLength": 200
},
"city": {
"type": "string",
"maxLength": 100
},
"state": {
"type": "string",
"maxLength": 50
},
"postalCode": {
"type": "string",
"maxLength": 20
},
"country": {
"type": "string",
"maxLength": 100
},
"ndisNumber": {
"description": "NDIS participant number.",
"type": "string",
"maxLength": 20
},
"medicareNum": {
"type": "string",
"maxLength": 20
},
"irn": {
"description": "Medicare reference number.",
"type": "string",
"maxLength": 5
},
"emergencyContactName": {
"type": "string",
"maxLength": 200
},
"emergencyContactNumber": {
"type": "string",
"maxLength": 32
},
"emergencyContactRelationship": {
"type": "string",
"maxLength": 100
},
"alert": {
"description": "Alert message shown on the patient record.",
"type": "string",
"maxLength": 5000
},
"extraInfo": {
"type": "string",
"maxLength": 5000
},
"invoiceRecipientId": {
"description": "Contact id that receives the invoices.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"communicationPreference": {
"description": "Defaults to the organisation's preference.",
"type": "string",
"enum": [
"NONE",
"SMS",
"SMS_EMAIL",
"EMAIL"
]
}
},
"required": [
"firstname",
"lastname"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡splose_create_contact(type, name, email, title, firstName, ...)
WRITE: adds ONE contact (GP, plan manager, referrer, payer). type, name and email are required (type is Splose's contact type, e.g. Standard; see splose_list_contacts for the values in use). Not idempotent: calling twice creates two contacts. POST /contacts.
输入模式
{
"type": "object",
"properties": {
"type": {
"type": "string",
"minLength": 1,
"maxLength": 50,
"description": "Contact type, e.g. Standard (copy the value from an existing contact)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Display name, e.g. a plan manager's business name."
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"title": {
"type": "string",
"maxLength": 30
},
"firstName": {
"type": "string",
"maxLength": 100
},
"lastName": {
"type": "string",
"maxLength": 100
},
"preferredName": {
"type": "string",
"maxLength": 100
},
"occupation": {
"type": "string",
"maxLength": 100
},
"companyName": {
"type": "string",
"maxLength": 200
},
"providerNumber": {
"type": "string",
"maxLength": 50
},
"doctorType": {
"type": "string",
"enum": [
"GP",
"Specialist"
]
},
"addressL1": {
"type": "string",
"maxLength": 200
},
"addressL2": {
"type": "string",
"maxLength": 200
},
"suburb": {
"type": "string",
"maxLength": 100
},
"state": {
"type": "string",
"maxLength": 50
},
"postalCode": {
"type": "string",
"maxLength": 20
},
"country": {
"type": "string",
"maxLength": 100
},
"phoneNumbers": {
"maxItems": 5,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"Mobile",
"Home",
"Work",
"Fax",
"Other"
]
},
"code": {
"description": "Country code, e.g. +61.",
"type": "string",
"maxLength": 8
},
"phoneNumber": {
"type": "string",
"minLength": 3,
"maxLength": 32,
"description": "Number without the country code."
}
},
"required": [
"phoneNumber"
],
"additionalProperties": false
}
}
},
"required": [
"type",
"name",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴splose_record_payment(invoiceId, patientId, locationId, paymentMethodId, amount, ...)
WRITE, MONEY: records ONE payment received (cash, card, transfer) against ONE invoice; it moves the invoice towards Paid and is shown in the patient's account. It does NOT charge anyone's card. amount must not exceed what is owed (check splose_get_invoice). Not idempotent: calling twice records two payments, and this server cannot delete a payment, so confirm the details with the user first and pass confirm: true. Ids come from splose_get_invoice and splose_list_payment_methods. POST /payments.
输入模式
{
"type": "object",
"properties": {
"invoiceId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Invoice id the payment settles."
},
"patientId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Patient id of the invoice."
},
"locationId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Location id."
},
"paymentMethodId": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Payment method id (splose_list_payment_methods)."
},
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000,
"description": "Amount paid, in dollars."
},
"paymentDate": {
"type": "string",
"description": "Date the money was received."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: the user has confirmed the invoice, amount and payment method."
}
},
"required": [
"invoiceId",
"patientId",
"locationId",
"paymentMethodId",
"amount",
"paymentDate",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据