> ## Documentation Index
> Fetch the complete documentation index at: https://help.clinikehr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Drug requests

> A connected partner sends a request for medicines for a linked customer. You decide what happens next — nothing is set aside until you say so.

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const TaskHeader = ({before, time, after}) => <div className="ck-task">
    {before ? <div className="ck-task__cell">
        <div className="ck-task__title">Before you start</div>
        <p className="ck-task__body">{before}</p>
      </div> : null}

    {time ? <div className="ck-task__cell">
        <div className="ck-task__title">Takes about</div>
        <p className="ck-task__body">{time}</p>
      </div> : null}

    {after ? <div className="ck-task__cell">
        <div className="ck-task__title">When you're done</div>
        <p className="ck-task__body">{after}</p>
      </div> : null}
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['clinic', 'pharmacy']} plans="Requires API access and a connected partner (Settings → API access)" roles="Owner, manager, or staff granted the Handle drug requests permission" />

A partner you've connected to — for example a health plan that also runs pharmacies — can send you
a **request** for medicines for one of its enrollees, once that person is linked as your own
customer. You decide what happens to every request; nothing is prepared or set aside until you say
so, and no price ever appears on a request or moves through it. Dispensing always happens at your
own till, the same way as any other sale.

<Path steps={['Sidebar', 'Requests']} />

<TaskHeader before="A connected partner has sent at least one request" time="A few minutes per request" after="The request moved to its next state, and the partner can see that" />

## What you can do with a request

| Action | What it means |
| - | - |
| **Accept** | You confirm you will prepare exactly what was asked for. Still nothing is set aside. |
| **Accept some lines, decline others** | The request becomes **Partly accepted** — the partner sees which lines you agreed to. |
| **Propose a substitute** | You offer a different medicine for a line, from your own catalogue. The partner has to confirm it before you go any further. |
| **Decline** | You tell the partner you won't fill this request, with a reason they can see. |
| **Mark ready** | You've decided what you'll hand over. This still reserves nothing — it only tells the partner the request is prepared. |
| **Cancel** | You withdraw from a request you'd already accepted or marked ready — for example, if the stock turned out to be needed elsewhere. |
| **Start a sale from a ready request** | Opens a sale at your till with this request in mind. You still confirm every line yourself before completing the sale, exactly like any other sale. |

A request the partner doesn't hear back on by its needed-by date **expires** on its own — nothing is
sent to anyone when that happens.

## Money never moves through a request

A request never carries a price, and accepting one never charges anyone. Payment happens the normal
way, at your till, when the sale is completed — the request is simply linked to that sale afterward
so you and the partner both know it was fulfilled.

## Matching a line to your catalogue

Most lines arrive with a code your system can already match automatically. When one doesn't match —
or matches more than one item — you'll see **Not found in your catalogue**, and you can match or
substitute it by hand when you decide on the request. This never guesses on your behalf.

## While you're offline

Requests can't be accepted, declined, or updated while your connection is down — you'll see your
last-known list, clearly marked, until you're back online. If you start a sale from a ready request
while offline, the sale itself is captured the same way any offline sale is, and it links back to the
request automatically once your till reconnects.

<StillStuck />


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