> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hi-doctor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Sviluppare su Hi-Doctor con l'IA

> Un prompt pronto da incollare, il protocollo del questionario conversazionale e le regole che un assistente deve rispettare.

Hi-Doctor è progettato per essere guidato da un assistente IA. Il
[connettore MCP](/it/mcp/connect) espone come strumenti l'intero percorso di
cura di un paziente, incluso un questionario che si può completare come
conversazione anziché come modulo.

Questa pagina è rivolta a chi costruisce quell'assistente.

## Incolli questo nel Suo prompt di sistema

<Tip>
  Copi questo testo alla lettera nel prompt di sistema di qualsiasi assistente
  collegato a Hi-Doctor. Codifica le regole descritte più sotto, così non deve
  riformularle. È volutamente in inglese: va incollato così com'è.
</Tip>

```text theme={null}
You have access to Hi-Doctor, an online medical service, through its MCP
connector. You are acting on behalf of a patient who has connected their own
account.

WHAT YOU CAN DO
- Complete a medical questionnaire with the patient, one question at a time.
- Get them a payment link for a consultation or treatment plan.
- Read their consultations, prescriptions, orders and payments.
- Send and read messages to and from their medical team.
- Track progress: log and correct weight, injections and daily notes.
- Manage their plan: cancel, reactivate, or open the billing portal.
- Pull a renewal forward (early order) — only with the payment permission.

HOW TO RUN A QUESTIONNAIRE
1. Call hidoctor_questionnaire_start with the category the patient wants.
2. Ask the patient the question exactly as it is returned. Do not rephrase
   clinical wording, and do not merge several questions into one.
3. Present the returned options as the choices. Send back the option's `value`,
   not the label you showed.
4. Call hidoctor_questionnaire_answer with their answer. It returns the next
   question. Repeat until status is "ready_to_submit".
5. Use hidoctor_questionnaire_review to read the answers back to the patient
   before submitting. Use hidoctor_questionnaire_back to change one.
6. Call hidoctor_questionnaire_submit.

RULES
- Never invent, assume or infer a medical answer. If the patient has not
  answered, ask again. "I don't know" is a real answer. If none of the options
  fits, read them out and let the PATIENT choose — never choose for them, and
  never narrow the list down on their behalf.
- Never give medical advice, and never suggest a medication or a dose. A
  registered doctor decides those after reviewing the questionnaire.
- If the questionnaire comes back ineligible, say so plainly and do not try
  other answers to get a different result.
- Before anything that costs money or cancels a plan, tell the patient exactly
  what will happen and get an explicit yes.
- Cancelling a plan takes effect at the end of the paid period, not
  immediately. Say that.
- An early order is IRREVERSIBLE: it creates the renewal consultation now and
  uses up the one early order allowed this period. Explain that and get an
  explicit yes before calling it.
- A prescription or invoice link is a medical document. Give it only to the
  patient. If the result says delivery is signed_redirect, the link opens
  WITHOUT signing in — never repeat it anywhere shared and do not store it.
- If the patient describes severe or sudden symptoms — chest pain, difficulty
  breathing, suicidal thoughts, a severe allergic reaction — stop and tell them
  to contact their local emergency number. Do not continue the questionnaire.
```

## Il protocollo del questionario conversazionale

<Steps>
  <Step title="avvio (start)">
    `hidoctor_questionnaire_start` con un `category_slug` (`weight-loss`,
    `hair-growth`, `sexual-health`, …). Restituisce la prima domanda senza
    risposta, più `answered_count` e `applicable_total`, così può mostrare
    l'avanzamento.

    Se il paziente aveva già un questionario iniziato, riprende dal punto in cui
    si era interrotto.
  </Step>

  <Step title="risposta, ripetuta (answer)">
    `hidoctor_questionnaire_answer` registra una risposta e restituisce la
    domanda **successiva**. È il server a decidere che cosa viene dopo, quindi
    le ramificazioni sono già gestite: non deve mai valutare Lei una condizione.

    Le risposte vengono unite, non sostituite. Nulla si perde tra una chiamata e
    l'altra, e il paziente può interrompere e riprendere più tardi.
  </Step>

  <Step title="revisione e correzione (review / back)">
    `hidoctor_questionnaire_review` restituisce in forma leggibile tutte le
    risposte date finora. `hidoctor_questionnaire_back` torna alla domanda
    precedente, così una risposta può essere modificata.

    Modificare una risposta può chiudere una ramificazione. Quando accade, la
    risposta del server elenca `dropped_question_keys`: le risposte che non si
    applicano più e sono state rimosse. Lo segnali se è rilevante per il
    paziente.
  </Step>

  <Step title="invio (submit)">
    `hidoctor_questionnaire_submit` restituisce un `outcome`:

    | Outcome                  | Significato                                                   |
    | ------------------------ | ------------------------------------------------------------- |
    | `submitted`              | Inviato alla revisione di un medico.                          |
    | `ineligible`             | Clinicamente inadatto. È un risultato normale, non un errore. |
    | `covered_by_active_plan` | Il piano già attivo lo copre.                                 |
  </Step>
</Steps>

### Formati delle risposte

È la domanda a dirLe come rispondere. Legga `kind`:

| `kind`                      | Da inviare                                               |
| --------------------------- | -------------------------------------------------------- |
| `single`, `select`          | `value: "<option value>"`                                |
| `multi`, `multi-with-input` | `values: ["<option value>", …]`                          |
| `input`                     | `values: { "<field name>": <value>, … }`                 |
| `confirm`                   | `value: "understood"`                                    |
| `option-input`              | `option_inputs: { "<option_input_key>": "<free text>" }` |

I nodi di follow-up contengono una stringa `answer_instructions` che indica
esattamente dove va il valore. La segua.

## Le regole qui sopra non sono imposte tecnicamente

Hi-Doctor non può sapere se una risposta è arrivata dal paziente o è stata
dedotta dall'assistente. Nulla nell'API lo verifica.

<Warning>
  L'integrità della documentazione clinica dipende dal rispetto di queste regole
  da parte del Suo assistente. Un assistente che inserisce una risposta plausibile
  riuscirà a inviare il questionario, e un medico prescriverà a partire da quella.
  Tratti «non inventare mai una risposta» come un vincolo rigido del Suo prompt di
  sistema, non come un suggerimento.
</Warning>

Ciò che il server *impone* davvero è l'idoneità.

## L'idoneità la decide il server

Le controindicazioni, la soglia di IMC, il limite di età e il controllo sui
Paesi supportati sono applicati al momento dell'invio del questionario: non
dall'assistente e non dal sito.

<Warning>
  Non provi a effettuare uno screening preliminare del paziente e non ripeta un
  questionario con risposte modificate dopo un esito `ineligible`. Il controllo
  esiste per tutelare le persone, e aggirarlo metterebbe un paziente a rischio.
</Warning>

## Cose che Le creeranno problemi

<AccordionGroup>
  <Accordion title="Invii i valori delle opzioni, non le etichette">
    Le etichette sono testo per le persone e vengono tradotte nella lingua del
    paziente. `value` è l'identificativo stabile che il server si aspetta.
  </Accordion>

  <Accordion title="Il questionario è nella lingua del paziente">
    Il testo delle domande torna nella lingua impostata sul profilo del
    paziente. Faccia le domande in quella lingua.
  </Accordion>

  <Accordion title="Il pagamento avviene su Stripe, non in chat">
    `hidoctor_checkout_create` restituisce un link. Non chieda mai i dati della
    carta: non ha modo di riceverli, e chiederli abitua i pazienti a consegnare
    i numeri di carta ai chatbot.
  </Accordion>

  <Accordion title="Il monitoraggio dei progressi riguarda solo la perdita di peso">
    Su un normale collegamento da paziente ogni autorizzazione viene concessa,
    pagamento compreso. Ma il diario dei progressi è costruito attorno a peso,
    iniezioni e piano di iniezioni, quindi è **disponibile solo per il
    trattamento della perdita di peso**, non per i piani di crescita dei capelli
    o di salute sessuale.

    Chiami `hidoctor_progress_status` prima di proporre qualsiasi monitoraggio.
    Se uno strumento manca del tutto, significa che il paziente ha rifiutato
    quell'autorizzazione al momento del collegamento: lo dica, invece di
    ipotizzare una soluzione alternativa.
  </Accordion>

  <Accordion title="Il peso è una voce al giorno; note e iniezioni no">
    Registrare il peso per una data sostituisce la voce di quel giorno. Note e
    iniezioni si aggiungono, quindi registrandole due volte se ne creano due.
  </Accordion>
</AccordionGroup>

## Senza MCP

Se non usa un client MCP, le stesse funzionalità sono disponibili tramite
l'[API REST](/api-reference/introduction), inclusa la
[registrazione programmatica](/api-reference/signup), così anche un'interfaccia
di chat può creare l'account.
