Αναφορά MCP / Φόρμες
Εργαλεία φορμών
Πέντε εργαλεία για φόρμες εισαγωγής και συγκατάθεσης και τις υποβολές τους. Η ανάγνωση μιας φόρμας, η ανάγνωση των απαντήσεων και η αποστολή μιας φόρμας σε ασθενή είναι ανοιχτές σε κάθε μέλος του ιατρείου. Η δημιουργία φόρμας θέλει ρόλο ιδιοκτήτη.
Πώς διαβάζεται
Κάθε εργαλείο παρακάτω παραθέτει τις παραμέτρους του ακριβώς όπως τις δηλώνει το σχήμα εισόδου: τον τύπο, αν είναι υποχρεωτική, τις επιτρεπτές τιμές όπου τις ορίζει το σχήμα, και τι σημαίνει η κάθε παράμετρος σύμφωνα με το σχήμα. Τίποτα από αυτά δεν γράφεται εδώ: ένα ποσό σε λεπτά, μια προεπιλογή που ισχύει αν παραλείψετε ένα πεδίο, ποια ενέργεια χρειάζεται ποιο id, όλα έρχονται από το ίδιο το εργαλείο.
Το practiceId δεν είναι ποτέ παράμετρος. Προέρχεται από το token σας, και οι διαδρομές εγγραφής το αφαιρούν αν το στείλει ο client.
Ένα εργαλείο που γράφει δείχνει ένα παράδειγμα για κάθε ενέργεια, γιατί αυτό που χρειάζεται μια ενέργεια δεν είναι ό,τι ορίζει υποχρεωτικό το σχήμα εισόδου: το σχήμα ζητά το action και τα υπόλοιπα τα αφήνει στην ενέργεια. Κάθε παράδειγμα είναι πλήρες αίτημα tools/call, και οι παράμετροί του ελέγχονται, όταν φτιάχνεται αυτή η σελίδα, με το ίδιο αντικείμενο που διαβάζει ο server. Τα σφάλματα επιστρέφονται μέσα σε απόκριση 200 με isError: δείτε την επισκόπηση MCP και τον πλήρη κατάλογο.
Φόρμες
Φόρμες εισαγωγής και συγκατάθεσης. Η ανάγνωση μιας φόρμας, η ανάγνωση των απαντήσεων και η αποστολή μιας φόρμας σε ασθενή είναι ανοιχτές σε κάθε μέλος του ιατρείου. Η δημιουργία φόρμας θέλει ρόλο ιδιοκτήτη.
list_forms
Λίστα των φορμών εισαγωγής και συγκατάθεσης του ιατρείου.
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_forms",
"arguments": {}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
get_form
Ανάγνωση μιας φόρμας με τα πεδία της.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| formId | string | Υποχρεωτικό |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_form",
"arguments": {
"formId": "b962ee2a-b962-4c3a-9e21-7b84c5d10f33"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
list_form_submissions
Μία σελίδα υποβολών μιας φόρμας, νεότερες πρώτα, με το σύνολο όλων των σελίδων.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| formId | string | Υποχρεωτικό | |
| status | string: all | submitted | pending | Προαιρετικό | submitted = completed forms, pending = links not yet filled in, all = both (default). |
| page | integer | Προαιρετικό | 1-based page number. Default 1. |
| pageSize | integer | Προαιρετικό | Submissions per page. Default 25, maximum 100. |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_form_submissions",
"arguments": {
"formId": "b962ee2a-b962-4c3a-9e21-7b84c5d10f33"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
get_form_submission
Ανάγνωση μιας υποβολής και των απαντήσεών της.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| formId | string | Υποχρεωτικό | |
| submissionId | string | Υποχρεωτικό |
Παράδειγμα κλήσης
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_form_submission",
"arguments": {
"formId": "b962ee2a-b962-4c3a-9e21-7b84c5d10f33",
"submissionId": "a396314c-a396-4c3a-9e21-7b84c5d10f33"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the requested records" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
write_form
Το action=create_link είναι ανοιχτό σε κάθε μέλος· κάθε άλλο action θέλει ρόλο ιδιοκτήτη. Το create_link εκδίδει ΔΗΜΟΣΙΟ σύνδεσμο μίας χρήσης που λήγει σε 3 ημέρες (προαιρετικά δεσμευμένο σε ασθενή, του οποίου τον φάκελο οι απαντήσεις τότε ενημερώνουν: ποτέ το όνομα, και email ή κινητό μόνο όπου το ιατρείο δεν έχει καταχωρημένο) και με send=email|sms τον στέλνει στον ασθενή· create φτιάχνει φόρμα· update επεξεργάζεται μεταδεδομένα· delete τη διαγράφει· replace_fields αντικαθιστά όλη τη λίστα πεδίων· seed_defaults εγκαθιστά τα πρότυπα του pack.
Παράμετροι
| Εργαλείο | Τύπος | Υποχρεωτικό; | Τι σημαίνει |
|---|---|---|---|
| action | string: create | update | delete | replace_fields | create_link | seed_defaults | Υποχρεωτικό | |
| formId | string | Προαιρετικό | The form to act on. Required for every action except create and seed_defaults. |
| patientId | string | Προαιρετικό | For action=create_link only: bind the link to an existing patient. Omit to have the submission create a new patient from its own answers. The answers go onto the bound record, but NOT as a blanket overwrite (`submissionPatient.ts`): the patient's name is never written from a form, and an email or mobile only fills a blank rather than replacing what the practice holds. A submission that was not sent to a named patient, and reached a record by matching a contact detail, is weaker still: it fills blanks only, and writes no name, email, mobile or consent at all. So a form is not a way to correct a patient's details. |
| send | string: email | sms | Προαιρετικό | For action=create_link only: send the link to that patient as well as returning it. Requires patientId, and goes only to the address or number on that patient's own record — a recipient cannot be typed in. sms spends the practice's credits. Omit to mint the link without sending, which is what to do when the practice wants to hand it over themselves. A send that fails still returns a usable link, with the reason on `delivery`: read the URL out rather than trying again. |
| name | string | Προαιρετικό | The form's name. Required for action=create. Name it for what the form is for («Εγγραφή νέου ασθενούς», "Reminder consent"), from the practice's words or from its questions. Never a placeholder such as «Νέα φόρμα» or "New form": the practice reads this name on the confirmation card and on every link it sends. |
| description | string | Προαιρετικό | Optional blurb shown to the patient above the form. |
| isActive | boolean | Προαιρετικό | Whether the form can currently be sent out. |
| fields | array<object> | Προαιρετικό | The form's questions, for action=create (saved with the new form) and action=replace_fields. Each item is { label, type } plus optional required, options (for type=select), bindTo and id — see the item schema for what each one does. On replace_fields it is a FULL replacement: existing fields left out are deleted, so send every field you want to keep, and send an existing field's id (from get_form) to keep its answers, which are keyed by field id. Array order is the order they are shown in. Two rules bite: a type=signature field must not set bindTo, and bindTo of notifyBySms, notifyByEmail or fileUseConsent is CONSENT, needs type=checkbox, and in the case of fileUseConsent is the patient agreeing their x-rays, scans and photos may be used for teaching or promotion. Do not put one on a form unless the practice asked for it. |
Παράδειγμα κλήσης
action=create
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "create",
"name": "New patient details",
"description": "Filled in before the first visit.",
"fields": [
{
"label": "Όνομα",
"type": "text",
"required": true,
"bindTo": "firstName"
},
{
"label": "Επώνυμο",
"type": "text",
"required": true,
"bindTo": "lastName"
},
{
"label": "Κινητό",
"type": "text",
"bindTo": "phoneMobile"
}
]
}
}
}action=update
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "update",
"formId": "81920314-4f50-41a2-9d6e-7f8091a2b3c4",
"isActive": false
}
}
}action=delete
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "delete",
"formId": "81920314-4f50-41a2-9d6e-7f8091a2b3c4"
}
}
}action=replace_fields
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "replace_fields",
"formId": "81920314-4f50-41a2-9d6e-7f8091a2b3c4",
"fields": [
{
"label": "Any allergies?",
"type": "textarea"
},
{
"label": "Signature",
"type": "signature",
"required": true
}
]
}
}
}action=create_link
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "create_link",
"formId": "81920314-4f50-41a2-9d6e-7f8091a2b3c4",
"patientId": "0f1c7a2e-5b6d-4c3a-9e21-7b84c5d10f33",
"send": true
}
}
}action=seed_defaults
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "write_form",
"arguments": {
"action": "seed_defaults"
}
}
}Αποτέλεσμα
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": { "...": "the written record" },
"content": [{ "type": "text", "text": "<the same JSON>" }]
}
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει παράμετρος, έχει λάθος τύπο, ή είναι εκτός των επιτρεπτών τιμών. |
| not_found | 404 | Το id δεν υπάρχει στο ιατρείο σας. Ένα κακοσχηματισμένο id φαίνεται ίδιο. |
| plan_limit_reached | 403 | action=create πάνω από τις φόρμες που περιλαμβάνει το πακέτο. Το Complete δεν έχει όριο· στο Essential η απάντηση λέει το όριο. |
| plan_feature_required | 403 | Το πακέτο του ιατρείου δεν το περιλαμβάνει. Το MCP χρειάζεται Complete. |
| subscription_read_only | 403 | Η συνδρομή έχει λήξει, οπότε το ιατρείο είναι μόνο για ανάγνωση και δεν γράφεται τίποτα. |
Συχνές ερωτήσεις
Οι καρτέλες ασθενών κρυπτογραφούνται, και εκεί που φυλάσσονται και καθώς έρχονται στην οθόνη σας. Τα αρχεία είναι ιδιωτικά, και ο σύνδεσμος προς ένα αρχείο σταματά να δουλεύει μετά από λίγο. Οι αλλαγές στις καρτέλες των ασθενών καταγράφονται, με το ποιος τις έκανε και πότε. Δεν υπάρχει κοινός κωδικός ιατρείου: ο καθένας έχει τον δικό του λογαριασμό. Στο πακέτο Complete, ο ιδιοκτήτης του ιατρείου μπορεί επίσης να απαιτεί σύνδεση σε δύο βήματα για όλη την ομάδα.
Ναι. Ο ιδιοκτήτης του ιατρείου μπορεί να εξάγει τον κατάλογο ασθενών, τις αναφορές και το ιστορικό ενεργειών σε αρχείο υπολογιστικού φύλλου (CSV) μέσα από την εφαρμογή, και οποιοσδήποτε στο ιατρείο μπορεί να κατεβάσει τα αρχεία του οποιαδήποτε στιγμή. Τα δεδομένα του ιατρείου σας ανήκουν σε εσάς, χωρίς χρέωση ή καθυστέρηση εξαγωγής. Αυτό ισχύει και στα δύο πακέτα, στη δοκιμή, αλλά και μετά την ακύρωση.
Το HyperCRM είναι λογισμικό επί πληρωμή. Κάθε ιατρείο ξεκινά με δωρεάν δοκιμή 30 ημερών στο πακέτο Complete, χωρίς κάρτα. Στη συνέχεια τα πακέτα ξεκινούν από 19 € και 34 € τον μήνα, με ΦΠΑ. Η τιμή εξαρτάται από το πόσους επαγγελματίες υγείας απασχολείτε. Κάθε τιμή βρίσκεται στη σελίδα τιμών, οπότε δεν χρειάζεται να μιλήσετε με πωλητή.