splose MCP by usefulapi

Read splose patients, appointments, invoices, cases; book and cancel appointments, record payments.

我該用這個嗎

品質與安全性

A
說明品質
97%
結構描述完整度
91%
命名品質
79%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(2)

  • LOWTool 'splose_list_cancellation_reasons' name length outside 3-30 range在 splose_list_cancellation_reasons 中
  • LOWTool 'splose_get_practitioner_availability' name length outside 3-30 range在 splose_get_practitioner_availability 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~9,773Token(工具定義)
~2.5 KB典型回應大小
顯著的注意力影響(128k 上下文的 7.64%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 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"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本36 個工具