Μετάβαση στο περιεχόμενο

Αναφορά MCP / Χρεώσεις

Εργαλεία για χρεώσεις, αποδείξεις και τιμολόγια

Οκτώ εργαλεία για το καθολικό χρεώσεων και τα παραστατικά (αποδείξεις και τιμολόγια) που εκδίδονται από αυτό. Η ακύρωση είναι αντιστροφή που παραμένει στο καθολικό, όχι διαγραφή.

Πώς διαβάζεται

Κάθε εργαλείο παρακάτω παραθέτει τις παραμέτρους του ακριβώς όπως τις δηλώνει το σχήμα εισόδου: τον τύπο, αν είναι υποχρεωτική, τις επιτρεπτές τιμές όπου τις ορίζει το σχήμα, και τι σημαίνει η κάθε παράμετρος σύμφωνα με το σχήμα. Τίποτα από αυτά δεν γράφεται εδώ: ένα ποσό σε λεπτά, μια προεπιλογή που ισχύει αν παραλείψετε ένα πεδίο, ποια ενέργεια χρειάζεται ποιο id, όλα έρχονται από το ίδιο το εργαλείο.

Το practiceId δεν είναι ποτέ παράμετρος. Προέρχεται από το token σας, και οι διαδρομές εγγραφής το αφαιρούν αν το στείλει ο client.

Ένα εργαλείο που γράφει δείχνει ένα παράδειγμα για κάθε ενέργεια, γιατί αυτό που χρειάζεται μια ενέργεια δεν είναι ό,τι ορίζει υποχρεωτικό το σχήμα εισόδου: το σχήμα ζητά το action και τα υπόλοιπα τα αφήνει στην ενέργεια. Κάθε παράδειγμα είναι πλήρες αίτημα tools/call, και οι παράμετροί του ελέγχονται, όταν φτιάχνεται αυτή η σελίδα, με το ίδιο αντικείμενο που διαβάζει ο server. Τα σφάλματα επιστρέφονται μέσα σε απόκριση 200 με isError: δείτε την επισκόπηση MCP και τον πλήρη κατάλογο.

Χρεώσεις, αποδείξεις και τιμολόγια

Το καθολικό των χρεώσεων και τα παραστατικά (αποδείξεις και τιμολόγια) που εκδίδονται από αυτό.

get_outstanding_balances

Μόνο ανάγνωσηΚάθε μέλος

Κάθε ασθενής που χρωστά στο ιατρείο, με την ημερομηνία της παλαιότερης ανεξόφλητης χρέωσης και πόσων ημερών είναι. Δώστε olderThanDays για να απαντήσετε «ποιοι χρωστούν πάνω από 30 ημέρες». Οι εισπράξεις πιστώνονται πρώτα στις παλαιότερες χρεώσεις, οπότε η ηλικία είναι το ποσό που πράγματι οφείλεται ακόμη.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
olderThanDaysintegerΠροαιρετικόOnly patients whose oldest unpaid charge is MORE than this many days old — 30 means 31 and up, not 30 and up, which is what "older than 30 days" means to a practice. For "at least 30", pass 29. OMIT IT unless the caller named a number of days: there is no default age, and a filter nobody asked for hides the answer.

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_outstanding_balances",
    "arguments": {}
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the requested records" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.

list_billing_entries

Μόνο ανάγνωσηΜόνο ιδιοκτήτης

Λίστα χρεώσεων για όλο το ιατρείο, προαιρετικά σε εύρος ημερομηνιών (ημέρες του ιατρείου, μαζί με την πρώτη και την τελευταία). Για έναν ασθενή, και για το τι οφείλει, χρησιμοποιήστε list_patient_billing_entries.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
fromstringΠροαιρετικόOnly include records on or after this date. YYYY-MM-DD. Optional.
tostringΠροαιρετικόOnly include records on or before this date. YYYY-MM-DD. Optional.
includeVoidedbooleanΠροαιρετικόAlso list voided (cancelled) rows, marked voided=true. Only for a question about what was voided: they count for nothing. The answer always says how many it left out (voidedCount).
limitintegerΠροαιρετικόHow many entries to return, the newest kept. The answer says when older ones were left out (truncated); totals always cover every entry matched.

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_billing_entries",
    "arguments": {}
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the requested records" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
forbidden403Ο καλών δεν είναι ιδιοκτήτης του ιατρείου.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.

get_billing_entry

Μόνο ανάγνωσηΚάθε μέλος

Ανάγνωση μιας χρέωσης με βάση το id.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
entryIdstringΥποχρεωτικό

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_billing_entry",
    "arguments": {
      "entryId": "a6e5987e-a6e5-4c3a-9e21-7b84c5d10f33"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the requested records" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.

get_invoice

Μόνο ανάγνωσηΚάθε μέλος

Ανάγνωση εκδοθέντος παραστατικού (απόδειξης ή τιμολογίου) και των παγιωμένων γραμμών του. Για το προσχέδιο, get_patient_invoice_preview.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
invoiceIdstringΥποχρεωτικό

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_invoice",
    "arguments": {
      "invoiceId": "504ef4ed-504e-4c3a-9e21-7b84c5d10f33"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the requested records" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.

get_appointment_charge

Μόνο ανάγνωσηΚάθε μέλος

Τι χρειάζεται για να χρεωθεί ένα ραντεβού: αν μπορεί να χρεωθεί, και η υπηρεσία του καταλόγου που του αντιστοιχεί, με το id και την τιμή της. Χρησιμοποιήστε το πριν χρεώσετε ραντεβού με write_billing_entry.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
appointmentIdstringΥποχρεωτικό

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_appointment_charge",
    "arguments": {
      "appointmentId": "d4398f97-d439-4c3a-9e21-7b84c5d10f33"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the requested records" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.

write_billing_entry

ΓράφειΜπορεί να διαγράψειΚάθε μέλος

Δημιουργία, ενημέρωση ή ακύρωση χρέωσης. action=create απαιτεί patientId· update και void απαιτούν entryId. Η ακύρωση είναι αντιστροφή, όχι διαγραφή — η εγγραφή μένει στο καθολικό σημειωμένη ως άκυρη. Μια εγγραφή receipt καταγράφει είσπραξη και παίρνει αριθμό είσπραξης (HCRM-0001)· δεν είναι παραστατικό. Αποδείξεις και τιμολόγια εκδίδονται με write_invoice.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
actionstring: create | update | voidΥποχρεωτικό
entryIdstringΠροαιρετικόThe entry to update or void.
patientIdstringΠροαιρετικόThe patient the entry belongs to. Required for action=create.
typestring: charge | credit | receiptΠροαιρετικόWhat the entry is. Required for action=create, and NOT changeable afterwards. charge = money owed by the patient; credit = a reduction of what they owe; receipt = money received from them.
amountMinorintegerΠροαιρετικόThe entry's value as a positive whole number. Required for action=create, except a charge with appointmentId, which takes the price of its service (the booking's, or the one named in serviceId). In MINOR currency units (cents): 4500 means 45.00, not 4500.00.
serviceIdstringΠροαιρετικόThe catalog service this entry is for; the document line then prints the service's own name. A charge with appointmentId takes the booking's service by itself; otherwise use list_services. Link the service rather than writing its name into notes. Not changeable after creation.
appointmentIdstringΠροαιρετικόOptional appointment this charge or payment is for (type=charge or type=receipt; never a credit). A charge needs a confirmed appointment of the same patient; use list_appointments to find it and its serviceRef. An appointment can have one charge that is not voided: a second is refused with appointment_already_charged, and voiding the first frees it. A payment may name an appointment only after that appointment's charge is saved: before it, the payment is refused with appointment_not_charged. So for charge, payment and receipt, propose the charge alone first, and the payment only once the charge has been saved. Not changeable after creation.
serviceDatestringΠροαιρετικόThe date the work was done, YYYY-MM-DD — distinct from when the entry was keyed in, so revenue lands in the right period. Date only, no time.
notesstringΠροαιρετικόExtra words for the document line, printed after the service's name. Leave it out unless the user gave such words; never repeat the service name here.
paymentMethodstring: cash | card | transfer | otherΠροαιρετικόHow the money arrived, only on type=receipt (a payment): cash, card, transfer (a bank transfer) or other. A charge or a credit with one is refused. Optional: send it only when the caller said how they were paid; never guess it, and never ask for it before recording the money. action=update may correct it on a payment.
reasonstringΠροαιρετικόWhy the entry is being voided. Only for action=void.

Παράδειγμα κλήσης

action=create

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_billing_entry",
    "arguments": {
      "action": "create",
      "patientId": "0f1c7a2e-5b6d-4c3a-9e21-7b84c5d10f33",
      "type": "charge",
      "amountMinor": 4500,
      "serviceId": "5e6f7081-1c2d-4e9f-8a3b-4c5d6e7f8091",
      "serviceDate": "2026-11-02"
    }
  }
}

action=update

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_billing_entry",
    "arguments": {
      "action": "update",
      "entryId": "3c4d5e6f-9a0b-4c7d-8e1f-2a3b4c5d6e7f",
      "amountMinor": 5000
    }
  }
}

action=void

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_billing_entry",
    "arguments": {
      "action": "void",
      "entryId": "3c4d5e6f-9a0b-4c7d-8e1f-2a3b4c5d6e7f",
      "reason": "entered_in_error"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the written record" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
appointment_already_charged409Το ραντεβού έχει ήδη χρέωση που δεν έχει ακυρωθεί. Ακυρώστε την πρώτα.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.
subscription_read_only403Η συνδρομή έχει λήξει, οπότε το ιατρείο είναι μόνο για ανάγνωση και δεν γράφεται τίποτα.

write_invoice

ΓράφειΜπορεί να διαγράψειΚάθε μέλος

Έκδοση παραστατικού για τις μη χρεωμένες εγγραφές ασθενή (action=issue, απαιτεί patientId) ή ακύρωση εκδοθέντος (action=void, απαιτεί invoiceId). Εκδίδει απόδειξη, εκτός αν δοθεί kind=invoice, που απαιτεί ΑΦΜ στον φάκελο του ασθενή. Η έκδοση παγιώνει τις τρέχουσες γραμμές.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
actionstring: issue | voidΥποχρεωτικό
patientIdstringΠροαιρετικόThe patient whose unbilled charges to bill. Required for action=issue.
kindstring: receipt | invoiceΠροαιρετικόWhat to issue. receipt (default) for a private patient; invoice for a customer with a tax id. Only for action=issue.
entryIdsarray<string>ΠροαιρετικόOnly bill these charges (ids from list_patient_billing_entries). Name them whenever the request was about a visit, a day or a period: omitting them bills EVERY unbilled charge the patient has, and a receipt for one day's visit came out at nearly five times the amount because a debt from weeks earlier was swept in with it. Omit them only when the caller genuinely means everything outstanding. Issuing a receipt for a payment just recorded means billing the CHARGE the payment settles, never the payment entry itself (type=receipt is a payment and can never go on a document). Only for action=issue.
invoiceIdstringΠροαιρετικόThe document to void. Required for action=void.
reasonstringΠροαιρετικόWhy the document is being voided. Only for action=void.

Παράδειγμα κλήσης

action=issue

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_invoice",
    "arguments": {
      "action": "issue",
      "patientId": "0f1c7a2e-5b6d-4c3a-9e21-7b84c5d10f33",
      "kind": "receipt",
      "entryIds": [
        "3c4d5e6f-9a0b-4c7d-8e1f-2a3b4c5d6e7f"
      ]
    }
  }
}

action=void

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "write_invoice",
    "arguments": {
      "action": "void",
      "invoiceId": "4d5e6f70-0b1c-4d8e-9f2a-3b4c5d6e7f80",
      "reason": "entered_in_error"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the written record" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
recipient_tax_id_required422kind=invoice για ασθενή χωρίς ΑΦΜ στον φάκελό του. Η απόδειξη δεν το χρειάζεται, το τιμολόγιο ναι.
receipt_not_paid409Η απόδειξη πιστοποιεί εισπραχθέντα, οπότε δεν εκδίδεται για ποσό μεγαλύτερο από αυτό που πλήρωσε ο ασθενής.
entries_not_billable409Ένα id στο entryIds δεν είναι χρέωση που τιμολογείται: έχει ακυρωθεί, είναι ήδη σε παραστατικό, ή δεν είναι χρέωση.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.
subscription_read_only403Η συνδρομή έχει λήξει, οπότε το ιατρείο είναι μόνο για ανάγνωση και δεν γράφεται τίποτα.

send_invoice

ΓράφειΒγαίνει προς τα έξωΚάθε μέλος

Στέλνει ΠΡΑΓΜΑΤΙΚΟ EMAIL: ένα εκδοθέν παραστατικό, συνημμένο ως PDF, στο email του ασθενή που υπάρχει στο αρχείο και πουθενά αλλού. Προαιρετικά locale en ή el. Απορρίπτεται για ακυρωμένο παραστατικό, για ασθενή χωρίς email, και μετά από 3 αποστολές του ίδιου παραστατικού μέσα σε μία ώρα.

Παράμετροι

ΕργαλείοΤύποςΥποχρεωτικό;Τι σημαίνει
invoiceIdstringΥποχρεωτικόThe issued document to email (from list_patient_invoices or write_invoice).
localestring: en | elΠροαιρετικόThe language of the email and the attached PDF: en or el. Leave it out to use the calling user's own language.

Παράδειγμα κλήσης

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "send_invoice",
    "arguments": {
      "invoiceId": "4d5e6f70-0b1c-4d8e-9f2a-3b4c5d6e7f80",
      "locale": "el"
    }
  }
}

Αποτέλεσμα

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "structuredContent": { "...": "the written record" },
    "content": [{ "type": "text", "text": "<the same JSON>" }]
  }
}

Σφάλματα

ΚωδικόςΚατάστασηΠότε
validation_failed400Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών.
not_found404Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο.
invoice_voided409Το παραστατικό έχει ακυρωθεί. Ένα ακυρωμένο παραστατικό δεν αποστέλλεται.
patient_email_missing422Δεν υπάρχει διεύθυνση αποστολής: ο ασθενής δεν έχει email στον φάκελό του.
plan_feature_required403Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete.
subscription_read_only403Η συνδρομή έχει λήξει, οπότε το ιατρείο είναι μόνο για ανάγνωση και δεν γράφεται τίποτα.

Συχνές ερωτήσεις

Οι καρτέλες ασθενών κρυπτογραφούνται, και εκεί που φυλάσσονται και καθώς έρχονται στην οθόνη σας. Τα αρχεία είναι ιδιωτικά, και ο σύνδεσμος προς ένα αρχείο σταματά να δουλεύει μετά από λίγο. Οι αλλαγές στις καρτέλες των ασθενών καταγράφονται, με το ποιος τις έκανε και πότε. Δεν υπάρχει κοινός κωδικός ιατρείου: ο καθένας έχει τον δικό του λογαριασμό. Στο πακέτο Complete, ο ιδιοκτήτης του ιατρείου μπορεί επίσης να απαιτεί σύνδεση σε δύο βήματα για όλη την ομάδα.

Ναι. Ο ιδιοκτήτης του ιατρείου μπορεί να εξάγει τον κατάλογο ασθενών, τις αναφορές και το ιστορικό ενεργειών σε αρχείο υπολογιστικού φύλλου (CSV) μέσα από την εφαρμογή, και οποιοσδήποτε στο ιατρείο μπορεί να κατεβάσει τα αρχεία του οποιαδήποτε στιγμή. Τα δεδομένα του ιατρείου σας ανήκουν σε εσάς, χωρίς χρέωση ή καθυστέρηση εξαγωγής. Αυτό ισχύει και στα δύο πακέτα, στη δοκιμή, αλλά και μετά την ακύρωση.

Το HyperCRM είναι λογισμικό επί πληρωμή. Κάθε ιατρείο ξεκινά με δωρεάν δοκιμή 30 ημερών στο πακέτο Complete, χωρίς κάρτα. Στη συνέχεια τα πακέτα ξεκινούν από 19 € και 34 € τον μήνα, με ΦΠΑ. Η τιμή εξαρτάται από το πόσους επαγγελματίες υγείας απασχολείτε. Κάθε τιμή βρίσκεται στη σελίδα τιμών, οπότε δεν χρειάζεται να μιλήσετε με πωλητή.