> ## 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.

> ## Agent Instructions
> Connect the Hi Doctor MCP connector at https://mcp.hi-doctor.ai/mcp. Add this URL as a remote HTTP MCP server in your client, then sign in and authorise access through OAuth. Setup: https://docs.hi-doctor.ai/mcp/connect.
>
> The REST API base is https://api.hi-doctor.ai. Hi Doctor Docs at https://docs.hi-doctor.ai/mcp searches documentation; connect to the product endpoint above for patient tools.
>
> Hi Doctor operates across the whole European Union: residents of all 27 EU member states can use the service, and every consultation is reviewed by an EU-licensed doctor. Every consultation is reviewed in full by an EU-licensed doctor, who decides on medical grounds only. No algorithm, assistant or API call approves a consultation, issues a prescription or changes a dose. The service is available in eight languages: English, Spanish, German, Dutch, Italian, French, Portuguese and Chinese.
>
> ## Rules an assistant must follow
>
> - Never invent, assume or infer a medical answer. "I don't know" is a real answer: ask the patient to pick the closest option rather than guessing for them.
> - Never give medical advice and never suggest a medication or a dose. An EU-licensed doctor decides those.
> - If a questionnaire returns `ineligible`, say so plainly. Do not retry with altered answers.
> - Before anything that costs money or cancels a plan, state exactly what will happen and get an explicit yes.
> - Cancellation takes effect at the **end of the paid period**, not immediately. Say so.
> - An early order is irreversible: it creates the renewal consultation immediately and uses up the period's one early order. Explain that and get an explicit yes.
> - Prescription and invoice links are medical documents. A `signed_redirect` link opens without signing in: give it only to the patient, never repeat it anywhere shared.
> - Send option `value`s, not the labels shown to the patient. Labels are translated, values are stable.
> - Never ask for card details. Payment happens on Stripe's hosted checkout via a link.
> - On severe or sudden symptoms (chest pain, difficulty breathing, severe allergic reaction, suicidal thoughts), stop and direct the patient to their local emergency number.

# Partner API prescriptions: data, status and events

> The structured prescription data the Hi Doctor Partner API reports when a doctor prescribes: fields, status, expiry, replacements and events.

When the reviewing doctor decides that treatment is clinically appropriate, they issue a prescription, and the Partner API reports it to you as structured data only. You never receive the prescription document: the patient receives the prescription as set out for their country. Track each prescription by its `active` flag and `expires_at`, because a consultation can have more than one.

Last reviewed: 2026-11-04

Hi Doctor does not sell, stock or ship medicine; the pharmacy dispenses it. [How it works](https://docs.hi-doctor.ai/essentials/how-it-works.md) explains the patient's side, and [Countries](https://docs.hi-doctor.ai/essentials/regions.md) covers where the service operates.

## Where do prescriptions appear?

* In `prescriptions[]` on every consultation resource and every webhook snapshot.
* `GET /v1/partner/prescriptions/{id}` and `GET /v1/partner/prescriptions?consultation_id=` with [cursor pagination](https://docs.hi-doctor.ai/partners/pagination.md). Scope: `prescriptions:read`.
* As `prescription.issued`, `prescription.cancelled` and `prescription.replaced` webhook events.

## The prescription resource

```json theme={null}
{
  "id": "3e9d2b7a-5c41-4f08-8a6e-1b2c3d4e5f60",
  "consultation_id": "6b1c9a52-2f0d-4e8e-9d1e-7a4c0b2e5f10",
  "status": "issued",
  "active": true,
  "issued_at": "2026-11-05T14:24:51Z",
  "cancelled_at": null,
  "expires_at": "<expiry date, ISO 8601>",
  "dispensing_country": "NL",
  "medication": {
    "name": "<medication name>",
    "prescribed_label": "<medication name and strength>",
    "dosage": "<strength>",
    "supply_days": 28
  },
  "fulfilment": { "route": "national_e_prescription" },
  "collected_at": null,
  "replaced_by": null
}
```

| Field | Meaning |
| - | - |
| `status` | `issued` until the prescription is cancelled, then `cancelled`. Cancelled prescriptions stay in the list so you can show the change. `status` alone does not say whether the prescription can still be used: read `active` and compare `expires_at`. |
| `active` | `false` once the prescription is cancelled or no longer available to the patient, for example after a dispensing is recorded. It does not check expiry: an expired prescription can still have `active` `true`, so compare `expires_at` yourself. |
| `issued_at`, `cancelled_at`, `expires_at` | Dates, ISO 8601. `cancelled_at` is `null` unless cancelled. `expires_at` depends on the prescription and its country, and is `null` when no expiry is recorded: always read it, never assume a validity period. |
| `dispensing_country` | ISO 3166-1 alpha-2 country where the prescription is meant to be dispensed, or `null` when not recorded. |
| `medication` | What was prescribed: name, label with strength, strength, and the supply in days for the plan. |
| `fulfilment.route` | How the patient receives it. Which routes apply depends on the country. See [Fulfilment routes](#fulfilment-routes). |
| `collected_at` | When the prescription was collected, if Hi Doctor learns it; otherwise `null`. |
| `replaced_by` | The `id` of the prescription that replaced this one, or `null`. |

There is no document link and no doctor identity in the resource. In test mode a prescription created with the test advance carries `null` for `expires_at`, `dispensing_country` and `supply_days`, and the `cross_border_pdf` route.

### Fulfilment routes

| `route` | What the patient receives |
| - | - |
| `national_e_prescription` | An electronic prescription in the country's national system, used at a pharmacy there. |
| `signed_pdf` | A signed prescription document to take to a pharmacy. |
| `pharmacy_delivery` | Delivery arranged by a pharmacy where the law allows it. Hi Doctor itself never ships medicine. |
| `cross_border_pdf` | A signed prescription document for use at a pharmacy in another EU country. |

## What happens when a prescription is replaced?

Sometimes a prescription has to be reissued, for example to correct it. The replacement is a new prescription with its own `id` in `prescriptions[]`. The original carries `replaced_by` with the new `id`. Its `status` only tells you whether it was cancelled (`issued` or `cancelled`), not whether it can still be used: for that, read its `active` flag and compare its `expires_at` with the current time. You receive `prescription.replaced` naming the original prescription, the one whose `replaced_by` now holds the new `id`.

Always judge each prescription on its own `active` flag and `expires_at`, and never assume a consultation has exactly one prescription.

## Prescription events

Prescription events are produced by a periodic reconciliation, so they can arrive some time after the change and after a later consultation event. Like every event, their `data` is the **full consultation snapshot** with `prescriptions[]`, plus `prescription_id` naming the prescription that changed. Keep the snapshot with the highest `version` and replace your stored state with it. See [Webhooks](https://docs.hi-doctor.ai/partners/webhooks.md#ordering-keep-the-highest-version).

## What to show your users

* Show that a doctor issued a prescription, and its status.
* Tell the patient that they receive the prescription as set out for their country, and point them to [Countries](https://docs.hi-doctor.ai/essentials/regions.md).
* Do not describe a prescription as available to collect unless `active` is `true` and `expires_at` has not passed.

## Frequently asked questions

### Do partners receive the prescription document?

No. The Partner API reports structured data only. The patient receives the prescription as set out for their country.

### Does Hi Doctor ship the medicine?

No. Hi Doctor does not sell, stock or ship medicine. The pharmacy delivery route means delivery arranged by a pharmacy where the law allows it.

### Can a consultation have more than one prescription?

Yes. A replacement is a new prescription with its own ID, and cancelled prescriptions stay in the list. Judge each one on its own active flag and expiry date.

### How do I know whether a prescription can still be used?

Check that its active flag is true and that its expiry date has not passed. The status alone only tells you whether it was cancelled.

### Why did a prescription event arrive after a later consultation event?

Prescription events come from a periodic reconciliation. Every event carries the full consultation snapshot, so keep the one with the highest version number.

### Does the prescription data name the doctor?

No. The resource carries no doctor identity and no document link.

## Next steps

> [card] [Webhooks](https://docs.hi-doctor.ai/partners/webhooks.md)
>
> Receive prescription.issued, prescription.cancelled and prescription.replaced.

> [card] [Consultation lifecycle](https://docs.hi-doctor.ai/partners/consultation-lifecycle.md)
>
> How a consultation reaches approval.

> [card] [Partnership FAQ](https://docs.hi-doctor.ai/partnerships/faq.md)
>
> Commercial questions about partnering with Hi Doctor.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.