How to use it

Short answers to “how do I actually do this”. Find what you want to do below — you do not need to read it in order.

If you only read one thing

Everything starts with an assistant — you set one up once by telling it what its job is, then ask it things. Everything else on this page is a different way of using that: several working together, talking out loud instead of typing, or running on its own overnight. If you are stuck, start by making one assistant and asking it a question.

Set up an assistant

An assistant is set up once and then does the same job whenever you ask. You might have one for checking supplier invoices, one for answering questions about leaflets, and one for writing customer messages.

For example

A pharmacy sets up “Invoice checker”, told to compare a wholesaler invoice against what was ordered, list anything that differs in price or quantity, and say plainly when a line is unclear rather than guessing.

  1. 1Open Agents in the menu on the left, then choose New agent.
  2. 2Give it a name that says what it is for — “Invoice checker” is better than “Assistant 1”.
  3. 3In the instructions box, write what you want it to do and how, in ordinary sentences. Tell it what to avoid as well as what to do.
  4. 4Save. It is ready to use straight away.

Worth knowing

  • Be specific in the instructions. “Answer in German, keep it under five sentences, and say when you are not sure” works far better than “be helpful”.
  • You can change the instructions at any time. Nothing is lost.

Ask an assistant something

The everyday way to use it: type a question, get an answer.

For example

Attach a Beipackzettel and ask “what is the maximum daily dose for a six-year-old, and what should I warn the parent about?” The answer quotes the leaflet you attached, not general knowledge.

  1. 1Open Agents, click the assistant you want, then Chat.
  2. 2Type your question and press Enter.
  3. 3To ask about a document, use the paperclip to attach it first, then ask.

Worth knowing

  • Turn on the speaker icon and the answer is read aloud as it is written.
  • If an answer looks wrong, say so in the next message — “that is not right, the invoice says 240” — and it will correct itself.

Have several assistants work together

A team is a group of assistants that hand work to each other — one gathers the information, another checks it, a third writes the summary. Use a team when one assistant would be doing too many different jobs at once.

For example

A three-part goods-in check: the first assistant reads the wholesaler invoice, the second compares it against the order, the third drafts the query email for anything that does not match. One assistant doing all three would do each of them worse.

  1. 1Open Teams, then New team.
  2. 2Add the assistants you want in it, and say which one starts.
  3. 3Type what you want done and press Run.
  4. 4You can watch each assistant's turn as it happens.

Worth knowing

  • Start with one assistant. Only make a team when you notice a single one is being asked to do two unrelated things.

Talk to it out loud

Speak instead of typing, and hear the answer spoken back. Useful when your hands are busy at the counter.

For example

Mid-dispensing, hands full: “Is there anything that interacts with warfarin in what I just read out?” — asked and answered without putting anything down.

  1. 1Open Voice in the menu.
  2. 2Choose an assistant or a team, and the language.
  3. 3Press the microphone, say what you want, then stop speaking.
  4. 4The answer appears on screen and is spoken at the same time.

Worth knowing

  • Press the microphone again while it is talking to interrupt and ask something else.
  • If the microphone will not turn on, the address you are using is not secure. Ask whoever set the system up for the https address rather than a number like 192.168.…

Ask questions about your own documents

Upload leaflets, procedures or guidance, then ask questions and get answers that point at the page they came from.

For example

Upload your own standard operating procedures and ask “what is our procedure when a customer reports a suspected side effect?” The answer points at the page in your own document, so you can check it.

  1. 1Open RAG Search in the menu.
  2. 2Upload the documents you want it to read.
  3. 3Wait until they show as ready, then ask your question.

Worth knowing

  • Answers show which document and page they came from. If it cannot find an answer in your documents it says so rather than guessing.
  • Medical documents need two-step sign-in. If you are asked to sign in again with a code, that is why.

Turn prescriptions and invoices into data

Photograph or upload a prescription or supplier invoice and get the details back as fields you can use, instead of retyping them.

For example

A morning's TCM prescriptions photographed at the counter come back as patient, preparation, each herb and its dosage, and the total — ready to check rather than retype.

  1. 1Open Extraction in the menu.
  2. 2Set up what you want pulled out — patient, preparation, dosage, totals, whatever matters to you. You only do this once.
  3. 3Upload the document. The details come back filled in.

Worth knowing

  • It reads printed text. Handwriting will not come out reliably.
  • Always check the result against the original before acting on it.

Put a leaflet into plain language

Turn a Beipackzettel into something a patient can actually follow, at the reading level you choose.

For example

A methotrexate leaflet turned into something an elderly patient can follow, at a reading level you choose, with the original beside it so the pharmacist can confirm nothing important was lost.

  1. 1Open Leichte Sprache in the menu.
  2. 2Paste or upload the leaflet text.
  3. 3Choose how simple you need it, then run it.
  4. 4The original stays alongside so you can compare.

Worth knowing

  • Read it before giving it to anyone. It is a first draft, not a replacement for your judgement.

Make something happen automatically

Have an assistant or a team run on its own — every hour, every morning, every month — without anyone remembering to start it.

For example

Every Monday at seven: check which lines have fallen below their reorder level over the weekend and draft the wholesaler order, so it is waiting when the pharmacy opens.

  1. 1Open Schedules, then New schedule.
  2. 2Choose the assistant or team, and type what it should do each time.
  3. 3Pick how often. There are buttons for the common ones — hourly, daily, weekly, monthly.
  4. 4Check the list of upcoming times it shows you, then save.

Worth knowing

  • It keeps running when your computer is off and nobody is signed in.
  • Pause it any time. Resuming does not try to catch up on everything it missed.
  • Results appear on the Runs page.

Practise and check counter skills

Staff hold a spoken conversation with a made-up patient who only answers what they are asked — like a real customer who does not mention everything. Afterwards they are scored on what they asked, whether they spotted anything serious, and what they decided to do.

For example

A new apprentice practises cough triage before serving alone. The patient mentions only tiredness — the blood in the sputum comes out solely if asked, which is exactly the habit being trained.

  1. 1Open Training simulator, then Practise a consultation.
  2. 2Choose the language and how hard it should be, then start.
  3. 3Talk to the patient as you would at the counter.
  4. 4When you are ready, choose what you would do — sell something, advise, or refer — and finish.
  5. 5You get a score and an explanation of anything you missed.

Worth knowing

  • About half the patients are hiding something that needs referring. You are not told which, on purpose.
  • Add your own procedures under Reference material and the practice cases will follow them instead of general advice.
  • The Team performance section shows who needs help and with which question.

When it asks a person first

Some actions wait for a pharmacist before they happen — sending a patient message, releasing a batch. Nothing is done behind your back.

For example

An assistant has drafted a message to two hundred customers about a recalled batch. It waits under Approvals until a pharmacist has read it and pressed approve.

  1. 1When something is waiting, it appears under Approvals.
  2. 2Open it to see exactly what the assistant wants to do.
  3. 3Approve or reject. If you approve, it carries on from where it stopped.

Worth knowing

  • You decide which actions need approval when you connect a system. You can require it always, never, or only for the sensitive ones.

Setting rules it cannot break

Beyond asking politely in the instructions, you can set hard rules — a maximum dose, who may do what — that are checked before the assistant is allowed to act. It cannot talk its way around them.

For example

A rule that no paracetamol dose above fifteen milligrams per kilogram of body weight may ever be recommended. Ask the assistant in any way you like and it still refuses, and records that it did.

  1. 1Open Guardrails in the menu.
  2. 2Write the rule as a limit or a table of what is allowed.
  3. 3Test it against examples before turning it on.
  4. 4Choose whether a broken rule blocks the action or asks a person.

Worth knowing

  • Start in watch-only mode. It records what it would have stopped without stopping anything, so you can see the effect before it affects anyone.

Look up a medicine

The Austrian medicines catalogue: every product and pack on the market, what is in them, what they cost, what they must not be taken with. Search by name, by ingredient, by the PZN on the box or by barcode. Your own notes sit beside it under “our own notes” and stay yours.

For example

A customer brings in a box with PZN 1322935 and asks what it is. Typing the number gives Aciclovir +pharma 200 mg tablets, one active ingredient at 200 mg, four excipients, prescription only, €30.05 on the shelf and €16.49 to buy in.

  1. 1Open Austria Codex in the menu.
  2. 2Type a name, an ingredient, a PZN or an ATC code and press Search the catalogue.
  3. 3Pick a result, then use the tabs: how it is used, safety, supply and price, alternatives, where it sits, what has been written about it.
  4. 4Use Interactions to check two to twenty products against each other.

Worth knowing

  • The banner at the top says which month of the catalogue is loaded. If it says not connected, the catalogue is not switched on for this deployment and only your own notes will answer.
  • The catalogue is licensed. It can be read on screen but is never saved, exported or used as training material — that is enforced, not a matter of remembering.

Try everything, in order

Ten steps that touch every part of the system, with the exact wording to copy at each one. Nothing here depends on you inventing a good example on the spot — that is where most first attempts stall. About an hour end to end.

1

Make an assistant that knows its limits

Everything else builds on this. The instructions decide how it behaves, so they are worth writing properly once.

Agents → New agent

Name
Counter Advisor
Instructions
You help pharmacy counter staff in Austria with over-the-counter questions.

Always ask who the medicine is for, how long the symptoms have lasted, what has already been tried, and what else the person is taking, before suggesting anything.

Refer to the pharmacist whenever symptoms have lasted more than ten days, the person is pregnant or breastfeeding, the patient is under two years old, or anything sounds like it needs a doctor.

Answer in short sentences. Say plainly when you are not sure. Never invent a product name, a dose or a licence status — if you do not know, say so.
What should happenThe assistant appears in your list and can be opened in Chat straight away.
2

Ask it something real

Checks it follows your instructions rather than answering from thin air.

Agents → Counter Advisor → Chat

Ask this
A mother wants something for her four-year-old's cough. It started three days ago. What should I ask her before I recommend anything?
Then try this, to see it refuse
Just tell me a dose of codeine for a four-year-old, do not ask me anything.
What should happenThe first answer lists the questions to ask. The second should decline and point you to the pharmacist — codeine is not appropriate for a four-year-old, and the instructions told it to refer rather than guess.
3

Set a limit it cannot argue with

Instructions are guidance. This is a hard rule, checked before the assistant is allowed to act, and it cannot be talked around.

Guardrails → New policy → Limit

Name
Paracetamol paediatric ceiling
The rule
{
  "variables": [
    { "key": "dose_mg", "type": "number", "min": 0, "max": 10000 },
    { "key": "weight_kg", "type": "number", "min": 0.5, "max": 200 }
  ],
  "invariants": [
    {
      "id": "paediatric-ceiling",
      "expr": "dose_mg <= weight_kg * 15",
      "message": "That is above 15 mg per kilogram of body weight."
    }
  ],
  "on_violation": { "decision": "BLOCK", "reason_code": "DOSE_TOO_HIGH" },
  "on_unknown": { "decision": "REVIEW", "reason_code": "DOSE_UNCLEAR" }
}
Tests it must pass before you can turn it on
[
  { "name": "a safe dose is allowed", "facts": { "dose_mg": 200, "weight_kg": 20 }, "expect": "ALLOW" },
  { "name": "too much is blocked",    "facts": { "dose_mg": 400, "weight_kg": 20 }, "expect": "BLOCK" }
]
What should happenIt will not publish until both tests pass. That is deliberate — a rule nobody checked is worse than no rule.
4

Write a referral decision as a table

Some decisions are a set of conditions rather than a single limit. A table is easier to read, argue about and hand to an inspector than a paragraph of instructions.

Guardrails → New policy → Decision table

Name
When to refer instead of sell
The table
{
  "inputs": [
    { "key": "days_of_symptoms", "type": "number" },
    { "key": "age_years",        "type": "number" },
    { "key": "is_pregnant",      "type": "boolean" }
  ],
  "hit_policy": "FIRST",
  "rules": [
    {
      "id": "under-two",
      "when": [{ "input": "age_years", "op": "lt", "value": 2 }],
      "then": { "decision": "BLOCK", "reason_code": "REFER_INFANT",
                "explanation": "Under two years old — refer to the pharmacist." }
    },
    {
      "id": "pregnancy",
      "when": [{ "input": "is_pregnant", "op": "eq", "value": true }],
      "then": { "decision": "BLOCK", "reason_code": "REFER_PREGNANCY",
                "explanation": "Pregnancy — refer to the pharmacist." }
    },
    {
      "id": "persistent",
      "when": [{ "input": "days_of_symptoms", "op": "gt", "value": 10 }],
      "then": { "decision": "REVIEW", "reason_code": "REFER_DURATION",
                "explanation": "Longer than ten days — a pharmacist should see this." }
    }
  ],
  "default": { "decision": "ALLOW", "reason_code": "OTC_OK" }
}
What should happenRules are read top to bottom and the first match wins, so the most serious cases sit at the top. Anything matching none of them is allowed.
5

Turn the rules on for your assistant

A published rule does nothing until it is attached to something.

Guardrails → Bindings → New

Applies to
Counter Advisor
Start with
Watch only — records what it would have stopped, without stopping anything
What should happenRun a few real questions in watch-only mode first and look at what it would have blocked. Switch to enforcing once you agree with it.
6

Turn a prescription into fields

Stops anyone retyping what a photograph already contains.

Extraction

Fields to pull out
patient name
date
preparation name
each herb and its quantity in grams
total quantity
number of days supplied
pharmacist signature present (yes or no)
What should happenPaste that list into “Describe the fields” and the technical part is written for you — you never have to open it. Upload a printed prescription and the fields come back filled in. Check it against the original — it reads printed text, not handwriting.
7

Have Monday morning happen by itself

Anything you would otherwise have to remember.

Schedules → New schedule

Runs
Counter Advisor
Do this each time
List everything that fell below its reorder level over the weekend, and draft the wholesaler order for it. Flag anything unusual rather than ordering it.
How often
Weekly
What should happenIt shows the next five times it will run before you save. Results appear on the Runs page, and it keeps running with nobody signed in.
8

Put your own procedure into the training

Otherwise staff practise against generic advice rather than how your pharmacy actually works.

Training simulator → Reference material

Module topic
Cough at the counter
Paste this as a reference document
STANDARD OPERATING PROCEDURE — COUGH AT THE COUNTER

First-line product for a dry cough in this pharmacy is dextromethorphan syrup.
Refer to the pharmacist if the cough has lasted longer than ten days.
Refer immediately if there is blood in the sputum, breathlessness at rest, or chest pain.
Always ask what other medicines the customer is taking before recommending anything.
What should happenPractice cases for this topic now follow your thresholds and your first-line product instead of general advice.
9

Sit a consultation yourself

It is the fastest way to understand what the training actually measures.

Training simulator → Practise a consultation

Try asking only this, deliberately
What can I get you?
Then finish and choose
Recommend an over-the-counter treatment
What should happenYou should score poorly, and it should tell you exactly which of the five questions you never asked. Then do it properly and watch the score move.
10

Say it out loud

Confirms the microphone and the voice both work before you rely on them at the counter.

Voice

Say this
A customer is taking warfarin and wants something for a headache. What should I be careful about?
What should happenYou hear the first sentence spoken within about a second, while the rest is still being written on screen.

Everything else

The rest of the application, in the same form. These are not a sequence — read whichever you need.

Your pharmacy day

The customer-facing work: who they are, what to send them, and what was said.

Get fields out of a document without writing anything technical

Extraction → New schema → Build it for me

Setting one of these up used to mean writing out a technical description of every field by hand. Two easier ways in now sit above that, and the hand-written version is still there for anyone who prefers it.

For example — Say what you want in words — “invoice number, who issued it, the date, the total” — and it is written out for you. Or upload a real invoice and click the words you want: clicking 2024-118 spots the words Rechnungsnummer printed beside it and names the field from them, and clicking 1.234,56 reads it as an amount, because 1.234,56 is one thousand two hundred and thirty-four in Austria and that takes no cleverness to know. Two words clicked next to each other become one value, so Anna Berger is a name rather than two fields. A table only needs one click. Click a price on the first item line and it notices the other lines laid out the same way — “3 lines in this document have the same layout” — and offers to treat them as a list, so what comes back is every row rather than the one you happened to click.

What should happen — Clicking the values is the better of the two: each field arrives with the value you picked, the words printed beside it, and one worked example, which teaches the layout of your documents in a way a description never can. Only the name of a field is suggested for you — whether something is an amount or a date is read from what you clicked. Nothing is saved until you press Save, and nothing you upload here is kept.

Customer records

Pharmacy AI → CRM

The list everything else works from. Import what you already have rather than typing it again.

Add a customer to try it
Name: Maria Gruber
Email: maria.gruber@example.at
Notes: Takes warfarin. Prefers German. Collects monthly.

What should happen — The record appears in the list and can be pulled into a segment or a campaign.

Groups of customers

Pharmacy AI → Segments

So a message goes to the right people instead of everyone.

Describe the group in plain words
Customers on long-term blood thinners who have not collected in the last eight weeks

What should happen — Paste that into Generate with AI and the group is worked out from your records — you do not build the conditions by hand. Check who landed in it before using it as the audience for a campaign; the description is interpreted, not executed literally.

Send something to a group

Pharmacy AI → Campaigns

Reminders, recalls, seasonal advice — written once and checked before it goes.

Ask for a draft
Write a short, warm reminder in German for customers on blood thinners who are due a review. Mention that they should bring a list of everything they are taking. No more than four sentences.

What should happen — A draft you can edit. Nothing is sent until a person approves it — it waits under Approvals.

Write up a consultation

Pharmacy AI → Consultations

Turns rough notes into a record you can find later, without retyping.

Paste rough notes
customer asked about heartburn after meals, 3 weeks, tried rennies no help, on ramipril, no red flags, advised see GP, gave leaflet

What should happen — A tidy summary with the follow-up and any safety points pulled out. Personal details are removed before anything is stored.

The medicines catalogue

Austria-Codex, read live: what is on the market, what is in it, what it costs and what it must not be combined with. And a medication review built on top of it — one patient's whole list screened at once, triaged, and carried through to an intervention and its outcome.

Find a medicine and read everything behind it

Austria Codex → Look up

One box searches products, the packs they are sold as, the substances in them and the ATC classifications, because the thing someone says at the counter could be any of the four.

For example — A customer holds up a box and says “is this the same as what I had before?”. Typing the PZN off the box — 1322935 — brings back Aciclovir +pharma 200 mg tablets; opening it shows one active ingredient at 200 mg and four excipients, ATC J05AB01, prescription only, and fifty-two other products the catalogue lists as alternatives. The one they had before is in that list.

Try any of these
1322935
aciclovir
J05AB01
9088881322931

What should happen — Four groups of results. Pick one and you get the composition, the packs with all four prices, the prescription and reimbursement signs written out in words, the authorisation holder, and the cross references. Every code the catalogue publishes a meaning for is shown as that meaning — “Serious”, not “50”.

Check several medicines against each other

Austria Codex → Interactions → Check a basket

The counter question is never “what does this interact with”, it is “these together, is that a problem”. Two things get checked at once: whether any of them react, and whether the same medicine is in the basket twice.

For example — Someone is collecting a lithium prescription and asks for something for a cold sore. Adding QUILONORM retard 450 mg and ACICLOVIR Hikma 500 mg to the basket and pressing check brings back one hit, graded Serious: lithium levels can rise when aciclovir is given by infusion. The monograph says what to monitor and what to do, and cites where it comes from.

Add these two
QUILONORM retard 450
ACICLOVIR Hikma 500

What should happen — Only interactions that actually run between two things in your basket, said as which one affects which. Two products containing the same substance are not reported as interacting with each other — they are reported as a duplicate instead, which is the quieter mistake and the more common one. If nothing comes back it says so in words — “the catalogue lists no interaction between these” is not the same as “safe”, and it says that too.

Spot the same medicine twice in one basket

Austria Codex → Interactions → Check a basket

Two strengths of the same tablet do not react with each other — they add up. Nothing about that basket looks alarming, which is exactly why it gets missed.

For example — Someone brings Aprednislon 1 mg and Aprednislon 25 mg to the counter, one from a repeat and one just prescribed. The check says the same medicine appears more than once: Prednisolon is in both, and both are systemic corticosteroids. No interaction is reported, because there is none — the problem is the total dose.

Add these two
Aprednislon 1 mg
Aprednislon 25 mg

What should happen — A duplicate is matched two ways: on the shared active substance, and on a shared third-level ATC group — so two different brands of the same thing are caught as well as two strengths of one.

Find the dosing band your patient falls into

Pharmaceutical Care → Medication review → Renal and hepatic

The catalogue holds no dosing rule table, so no application built on it can adapt a dose. What 473 of its dosing sections do hold is the rule written out in German — and finding which line applies to one patient is a job worth doing.

For example — Frau Berger is on Metformin 1000 mg with an eGFR of 38. The catalogue's dosing text reads “MTD 2 g (GFR 45-59 ml/min) bzw. 1 g (GFR 30-44 ml/min). Bei GFR < 30 ml/min kontraindiziert.” The review shows the 30–44 sentence, because that is the band containing 38. At an eGFR of 28 it shows the contraindication instead, marked to act on now rather than filed with the reading.

What should happen — The publisher's sentence, located — nothing is calculated, adjusted or recommended, and the finding says so in those words. Creatinine clearance and eGFR are not treated as interchangeable: where a passage measures one and you recorded the other, it says so, because the two diverge most at exactly the thresholds these bands sit on. Products whose text states no band fall back to showing the paragraphs that mention the organ.

Search for a disease, not just a drug name

Austria Codex → Text search

The publisher's own screens navigate a tree of drug classes. That answers “what is in this class” and cannot answer “what is licensed for breast cancer”, because the disease is a sentence in Anwendungsgebiete and appears in no coded field anywhere.

For example — Typing Mammakarzinom returns 252 medicines, each showing the line that matched. The catalogue also says Brustkrebs — a different word for the same disease — so “Mammakarzinom OR Brustkrebs” returns 494, and searching either alone would have found half of what you meant. If you do not know the German, type “breast cancer” into the suggestion box and the local model offers the words the catalogue actually uses.

What should happen — Nine sections are searchable: what it is for, how it is given, the dose, contraindications, pregnancy, adverse effects, interactions, warnings and properties. Terms match inside words because the text is German — Karzinom finds Mammakarzinom and Bronchialkarzinom. Devices, foods and cosmetics carry no product information and are not searched; the page says so rather than letting their absence look like a result.

Combine conditions the tree cannot

Austria Codex → Text search

Real questions have more than one clause. Everything for colorectal cancer given with chemotherapy. Anything contraindicated in renal impairment. What this company makes, that is still available, for hypertension.

For example — “(Kolonkarzinom OR Rektumkarzinom) AND Chemotherapie” returns twelve. “gegenanzeigen:Niereninsuffizienz” returns 324 — a quarter of the 1,615 that mention renal impairment anywhere — because the term is aimed at the contraindications section rather than at the whole text. “Mammakarzinom NOT Brustkrebs” and “Mammakarzinom AND Brustkrebs” add back up to the 252 you started with.

Try these
Mammakarzinom OR Brustkrebs
(Kolonkarzinom OR Rektumkarzinom) AND Chemotherapie
gegenanzeigen:Niereninsuffizienz
anwendung:Infusion -Kinder

What should happen — AND, OR, NOT, brackets, quoted phrases, a leading minus for exclusion, and field:term to aim at one section. German operators work too. A query that does not parse is refused with the reason — a search box that quietly drops the half it did not understand returns a confident list of the wrong medicines.

Review a patient's whole list, not one medicine at a time

Pharmaceutical Care → Medication review

The counter question is about a medicine. The review question is about a person taking seven of them, and it needs the other half of the picture — age, kidneys, allergies, whether they can swallow a tablet — which the catalogue does not hold and never will.

For example — Frau Berger, 76, comes in with a discharge letter. Recording her age, an eGFR of 38 from the letter, diabetes, a lactose intolerance, a recorded ramipril allergy and difficulty swallowing, then adding the medicines through the one box — by name, by PZN, by barcode, by substance, by ATC or by authorisation number — Ramipril 10 mg, Ramipril 1,25 mg, Spironolacton “Agepha” and Dismenol forte 400 mg, gives twenty-six findings grouped into six questions rather than twenty-six alerts. The serious one is ramipril with spironolactone. The quiet one is that she has been given ramipril at two strengths by two prescribers.

What should happen — Findings triaged by what to do about them — Act now, Review, Note, Handled — as tabs with a live count on each, sorted worst first within a tab; where a finding came from (interactions, duplication, allergy, external risk databases, and so on) is a small badge on the card, not a section you scroll past. Severity is visible before you read a word: a contraindicated pregnancy finding is large and bold, a routine note is small and quiet. Facts, applicability and full provenance sit behind one “Details” toggle per card, opened only when wanted — and opening it is recorded on the review, the same as every patient value. Each finding can be accepted, marked already managed, dismissed or deferred with a reason, assigned to someone else, given a follow-up date, and later given an outcome — recorded separately and stamped when it is known, because a recommendation goes out on one day and is declined on another. A quick lookup with no intervention stays as ephemeral as ever; once one is recorded, the review itself is saved and resumes automatically if you leave and come back — it holds none of the catalogue's own text, only what you typed and decided. Once screened, the patient and medicine panels above collapse to one line — medicines, finding count, when it was screened — with Edit and Rescreen alongside; a Product information button opens the publisher's own text as a drawer instead of a panel sitting above every finding.

Screen against risk lists the catalogue itself doesn't carry

Pharmaceutical Care → Medication review → after screening

KHIX is the licensed medicines catalogue, and it stops where a catalogue stops: it has no anticholinergic burden score, no geriatric potentially-inappropriate-medication list, no pharmacogenomic gene-drug pairs. A curated reference table kept alongside it fills exactly that gap, without pretending the two are the same source.

For example — Herr Nagl, 78, is on Saroten 25 mg, Vendal retard 10 mg, Dismenol Ibuprofen 200 mg and Ezetimib/Simvastatin Accord. Screening adds a cumulative anticholinergic-burden finding of 4 — amitriptyline's 3 plus morphine's 1 — a PRISCUS 2.0 flag on the ibuprofen at his age, a LiverTox flag on the simvastatin sharpened because his recorded hepatic impairment is moderate, and a renal-elimination finding on the morphine that reads his recorded eGFR of 28 directly into the sentence. A pharmacogenomic finding on all four fires too, and because no genotype is recorded for him yet, one data-gap bar above the findings says the record is incomplete and offers the pharmacogenomic field right there — not a fourth card repeating the same sentence.

What should happen — Every one of these findings names its source — ACB-Score, PRISCUS 2.0, STOPP/START, FORTA, Embryotox, CredibleMeds, LiverTox, CPIC/DPWG pharmacogenomics, dosing.de — and a line under Screening says in words that this table is kept alongside the catalogue, not part of it, so it is never mistaken for something KHIX itself asserted. Every category that depends on an unanswered patient value is named once, in the one data-gap bar, with an inline field for each — filling it in there clears the gap immediately rather than sending you hunting for the right box in a collapsed panel.

Keep the curated reference tables current by hand

Pharmaceutical Care → Reference data

Risk reference, diagnostic groups and lab analytes are built by hand from the client's own clinical sources, unlike the licensed catalogue itself — and hand-built tables need a way to add, correct and retire rows without going near SQL. Until now there was a one-time loader and nothing else.

For example — A new PRISCUS 2.0 entry comes in for a substance already on file. On the Risk reference tab, filling in the active ingredient, category, severity, clinical relevance and source and pressing “Add row” makes it live immediately — the next medication review that screens that ingredient sees it. Editing a row's wording, or deleting one that turned out to be wrong, works the same way, and the Diagnostic groups and Lab analytes tabs follow the same add/edit/delete pattern for the other two tables. Pharmacogenomics — CPIC/DPWG gene-drug pairs — gets its own tab too, even though there is no separate table underneath it: it is the same risk-reference rows, filtered to category “Pharmakogenetik”, with the category field hidden and fixed and “Severity / specification” relabelled “Gene / allele” so the form matches what is actually being entered. A row added there also shows up in the general Risk reference tab, tagged with its category, because it is the same row. Every tab also takes a CSV or .xlsx upload for adding many rows at once — first row of headers, one row per entry, always additive so a re-upload never silently overwrites what is already there; the one-by-one form stays exactly as it was for single corrections. Risk reference itself grew a lot: the client's own integrated risk database — CredibleMeds, LiverTox, STOPP/START, FRIDs, FORTA, Lifestyle, and the full CPIC/DPWG/FDA pharmacogenomic pair catalogue — was merged in on top of what was already there, additively, so nothing hand-added or hand-edited was touched or duplicated. Rows sourced that way carry optional Gene, Authority, Evidence level, Affected subgroup and Source URL fields alongside the original five, shown on the row when present and editable from the same form (a search box appears on the list once it passes about twenty rows). Two more tabs, PGx recommendations and PGx gene reference, go a level deeper — genotype/phenotype-specific CPIC/DPWG/FDA dosing guidance, and AMP Tier 1/2 lab alleles with Meamedica gene panel descriptions grouped by gene — but read-only: that is authority-published content loaded in bulk, not something maintained row by row here.

What should happen — No separate publish step and no rebuild — a change here is read straight off the same table the next screening run queries. Writes need an admin key configured on both this app and the KHIX service (AUSTRIA_CODEX_ADMIN_KEY / KHIX_ADMIN_KEY); without it the screen still lists rows, it just cannot save changes. Reads never needed this key and still don't. A bulk upload reports exactly which column names it expected if the header row doesn't match, and continues past any row that fails rather than losing the rest of the file. Editing an existing row's wording never blanks its Gene/Authority/Evidence level metadata even though the form doesn't require filling them in. PGx recommendations filters by gene, drug or authority with paging; PGx gene reference searches by gene and expands to show alleles and haplotype evidence inline.

Carry a review through to a signed-off plan and a follow-up date

Pharmaceutical Care → Medication review → after an intervention is recorded

A review that stops at 'documented' has not finished the job a pharmaceutical care service actually promises: a letter has to go to the prescriber, an answer has to come back, the patient needs a plan they can follow and a conversation about it, and someone has to check later that it worked. Each step only appears once the one before it is done, so a five-minute counter lookup never has to see any of this.

For example — Once Herr Nagl's anticholinergic-burden finding is accepted and an intervention recorded, a consultation letter assembles itself from the accepted findings and their interventions — nothing that was only drafted, never a fact the catalogue didn't actually say. Marking it sent opens doctor feedback; the prescriber's answer is entered per medicine, and discontinuing the amitriptyline drops it from everything after. The remaining three medicines get an ELGA-style plan — a 24-hour timeline you click to add a dose and drag to retime, or a strict as-needed schedule with its own indication and maximum. Counselling turns the same findings into plain-language tips and a four-item checklist, and a follow-up records the interval, the response and the adherence, closing the review.

What should happen — Every one of the four documents — the letter, the plan, the fact sheet, the follow-up protocol — opens the same preview with a Print button and a one-click PDF download. The whole review, including everything recorded from here on, is saved as it goes and comes back exactly as left if you navigate away — but it never holds the catalogue's own product names or monograph text, only what was typed, decided and matched by id.

Scan a paper lab report straight into the review

Pharmaceutical Care → Medication review → Lab results

A patient who brings a lab report to the counter brings real numbers, not a description of them, and retyping fifteen rows by hand is exactly the kind of work this app's own OCR and schema-guided extraction already does for prescriptions and invoices. Lab results only need the same tool pointed at a document type it doesn't know the shape of yet — which the Lab results section provisions for itself the first time it is opened.

For example — Herr Nagl brings a lab printout. On the Extraction page, the 'Lab report' schema is already there — opening it, pasting or scanning the report, and pressing Extract reads every row: Kalium 5,6 mmol/l flagged H, Natrium 138, Kreatinin 1,4 flagged H, INR 1,1, Hämoglobin 11,2 flagged L, TSH 3,1. Back in the review, that scan is offered for import; one click matches Kalium, Natrium, Kreatinin and Hämoglobin to the reference table by name, guesses TSH against the reference's 'TSH basal' since a plain 'TSH' is not an exact match, and offers a dropdown for anything it cannot place at all.

What should happen — Kalium, Natrium, Kreatinin and INR are read twice: once into the lab-results list against their reference range and specimen, and once straight into the same patient-context fields the interaction and risk-reference screening already use — so an imported potassium of 5.6 is live in the review's own findings immediately, not sitting in a list waiting to be retyped. Every other analyte — the other 145 of them, across eleven diagnostic groups — is filed for the pharmacist to read, with the report's own out-of-range flag shown as printed. Nothing about a range is calculated or judged here; the reference range is shown for comparison, not evaluated.

Print a body-composition report from a phone screenshot

Pharmaceutical Care → Body composition report

A smart scale's own app is a long scrolling screen meant for one person's phone, not something a pharmacy hands to a patient or files in a record — and the client asked for the exact one-page layout their own template already uses, not this app's usual document style.

For example — A patient's BIA scale reading — weight, BMI, body fat, lean mass, skeletal muscle, bone, water, metabolic rate and cell mass — is screenshotted from the app on their phone (more than one screenshot if the screen had to scroll, they are read together). Scanned on the Extraction page against the 'Body composition report' schema, every metric comes back with its value, unit and status word (Standard, Sehr niedrig, Niedrig, Hoch, Ausgezeichnet), sorted into the report's six fixed sections regardless of how the scale app itself grouped them on screen.

What should happen — Importing the scan fills the same dark-header, four-headline-card, six-section layout as the client's own template, badge colors included; any reading can still be corrected or added by hand. Preview report opens it with the same Print and Download PDF actions the other pharmaceutical-care documents use. A screenshot can also arrive by email rather than through the browser — for a deployment whose OCR runs on a machine with no public port, where opening a VPN per pharmacy isn't worth it just to move one photo. Emailing the screenshot to the address configured for this, subject line as the printed patient label, gets the same PDF report back as an attachment automatically — the same OCR call, the same schema, the same six-section layout, just without anyone opening the app at all; more than one screenshot in the same email (or a follow-up email) merges into the one reading the same way importing a second scan by hand does. Reachable at /api/public/webhooks/brevo-inbound/<secret>, gated by that secret in the URL rather than a signature, since Brevo's inbound parsing has none of its own — set once when wiring up inbound routing in Brevo, never touched again. For real patient data rather than testing, Threema Gateway is the compliant channel: sending the screenshot to the pharmacy's Threema Gateway ID gets the same PDF back, end-to-end encrypted the whole way — unlike email or Telegram-style bots, Threema's own servers never hold a readable copy. That leg runs in a small dedicated Python service (threema-gateway) using Threema's own SDK for the encryption, since that is not something worth reimplementing by hand; it needs a Threema Gateway account (End-to-End mode) and its own callback URL registered the same way, at /api/public/webhooks/threema-inbound.

Tell a coded finding from a good guess

Pharmaceutical Care → Medication review → after screening

Three very different things look identical on a screen: what the publisher coded, what this app worked out, and what merely appears in a paragraph somewhere. Acting on the third as though it were the first is the way a catalogue lookup turns into a clinical claim nobody made.

For example — In Frau Berger's review, “Ramipril appears in 2 of the listed medicines” is a structured match — the publisher's own duplication check, on substance identifiers. “Nothing recorded about crushing” is derived — her swallowing difficulty joined to the product's flags, which is our reasoning, not theirs. “Renal passages found” is a document match — the word Niere appears in the product's text, and what that means for a woman at eGFR 38 is a reading only she can make.

What should happen — Every finding carries its class as a badge and its full match path in words — “Recorded allergy → substance 81433 → allergy group 1809982551 → product 42288” — so a finding can be argued with rather than only believed. The summary counts the three classes separately.

Know whether the grading is your patient's grading

Pharmaceutical Care → Medication review → any interaction finding

The publisher attaches three different kinds of thing to an interaction, and the handbook is precise about the difference: some are traits the severity depends on, some only change how likely it is, and some are not traits at all but the harm that could follow.

For example — The ramipril and spironolactone hit lists chronic renal insufficiency, age over 65, age over 75 and diabetes as patient traits — and low blood pressure, hyperkalaemia, renal failure and cardiac arrest as what it can cause. Shown in one list, someone would eventually be asked whether cardiac arrest applies to their patient. Here the four traits are tickable and the four consequences are not, and the traits Frau Berger's recorded details match are flagged as looking like a match — flagged, never ticked.

What should happen — Where a grading does depend on a trait, the finding says so and stays on the screen either way: the handbook treats several such traits as an AND, so ticking one of two is not enough, and a rule that quietly removed a serious interaction from a review would be the wrong place to apply it. Unanswered traits are collected into a finding of their own.

Ask what a medicine is for, and what it is licensed for

Pharmaceutical Care → Medication review

A box on the counter that nobody can give a reason for is the one worth stopping. The catalogue cannot say why this patient takes it, but it can say what it is authorised to treat — which turns an accusation into a question someone can answer.

For example — Frau Berger's five medicines all come back with no indication recorded. Each one names what the catalogue licenses it for — Ramipril as an ACE inhibitor under antihypertensives, Metformin as a biguanide under antidiabetics — so the reasons can be filled in at the counter rather than guessed later. Typing an indication clears the finding.

What should happen — The same drug wearing a different salt is caught too — Aripiprazol and Aripiprazol-Monohydrat are two substance ids to the publisher's own check and one drug to the patient, so the catalogue's substance hierarchy is read rather than only its identifiers. Two medicines authorised for the same kind of condition are also reported — an ACE inhibitor and a sartan are different substances in different classes and both are antihypertensives, which the substance and ATC checks cannot see. It is a note and says so: a second antihypertensive is usually a decision, not an accident. It stays quiet where the substance or ATC check already made the same point.

See which pairs were checked, not only which ones failed

Pharmaceutical Care → Medication review → Every pair at once

A list of findings cannot tell you what it looked at. A pair with nothing against it produces no row, so eight medicines with two problems look exactly like eight medicines that were never compared.

For example — Frau Berger's five medicines make ten pairs. The grid shows all ten: ramipril with spironolactone graded Serious, three Moderate, the two ramipril strengths marked as a duplicate rather than an interaction, and the rest as a dot. Clicking a cell jumps to that finding.

What should happen — A dot means the catalogue lists nothing between that pair — the legend says in words that this is the absence of a coded interaction and not a finding of safety. Pairs come from which of your medicines landed on each side of an interaction key, so a key matching three of the basket does not claim all three pairs react.

Read a product's information with your patient in mind

Pharmaceutical Care → Medication review → Product information

The screening pulls out the lines that matched. Sometimes the question runs the other way — what does this medicine's information actually say, all of it — and that needs the whole text with a way through it. It is reference material, not a finding, so it opens as a drawer on request rather than sitting above the findings that actually need attention first.

For example — Pressing “Product information” and choosing Ramipril 10 mg lists nine sections and puts a count beside each one that holds something for this patient: Indications 4, Dosage 7, Contraindications 1, Interactions 3, Warnings 2. It opens on the first section that has something rather than on whichever the publisher put first, and hovering a highlight says why it is there — “Marked because reduced renal function is recorded”.

What should happen — Search inside the document to mark your own term as well. The highlighting is this application's reading of what might matter, from what you recorded, and says so — the catalogue marked nothing. The text is rendered as text: catalogue markup is stripped rather than injected, because it arrives over the network into an authenticated page.

See whether the data underneath can be trusted today

Pharmaceutical Care → Medication review → the line above the patient

A screening run is only as good as the release it ran against, and every way that can go wrong is invisible from the findings: a release never marked active, an import that failed halfway, validation issues logged against it, or a catalogue that is simply months old. All four produce a screen full of confident findings.

For example — The line reads “1 thing to know about the data underneath this review” and opens to say an import run failed with a duplicate-key error. The release itself is fine — 202608, published, active, SHA-256 matching the published file — so nothing else is flagged, and the panel stays one quiet line until something is actually wrong.

What should happen — Release, month, module set, publication status, validation result, last good import, source file and hash, and whether raw XML is available. It turns amber and states the problem in words when the release is not active, not published, more than a month old, has validation issues, or when an import failed.

See everything about an interaction except its grading

Pharmaceutical Care → Medication review → any interaction finding

The grading says how bad. It does not say which way the interaction runs, how well the mechanism is understood, how good the evidence is, or which of the two matching paths found it — and those change what you do about it.

For example — The ramipril and spironolactone hit shows: both substances amplify each other; mechanism proven; evidence base good; matched on the product and through its substances. Where the publisher holds several keys for one pair — the same problem graded differently depending on the patient — they are folded into one finding at the worst grading, with the others named underneath so nothing has quietly disappeared.

What should happen — How often it happens is deliberately absent: the publisher retired that field, so the screen says so rather than leaving a gap someone could read as “rarely”.

Read the German without leaving the machine

Pharmaceutical Care → Medication review → open a finding's sources

The catalogue is written in German and only in German. Reading a warning at speed in a second language is where a detail goes missing, and the detail is usually a number.

For example — The ramipril and spironolactone monograph says: “Ist die gleichzeitige Anwendung unvermeidbar, sollte 2-3 Tage vor Beginn der Therapie mit einem ACE-Hemmer Spironolacton vorübergehend abgesetzt werden.” Pressing “read it in English” on that section gives it back in English with the two-to-three days intact — and then checks, digit by digit, that every number in the German survived into the English, and says so on the screen.

What should happen — A reading, never a replacement: the German stays above it and the English is captioned as a model's reading that nobody has checked. It runs on the Qwen model in this deployment, so the licensed text never leaves the machine and is not training material. It is asked for one section at a time, the literature list is not offered, and the reading never enters an evidence snapshot — a snapshot holds identifiers, and a translation is not evidence of anything.

Read one product from six sides

Austria Codex → Look up → open a product

The record is one screen; the questions are six. How is it used, what is unsafe about it, what does it cost, what could replace it, where does it sit, and what has been written about it.

For example — Aprednislon 1 mg. “How it is used” gives the effect in one line — a synthetic glucocorticoid, four times stronger than cortisol — then indications, how to take it, the dose, and that the tablet splits into two equal parts. “Safety” shows it carries lactose, galactose and glucose-galactose malabsorption warnings, that it is only for a compelling or vital indication in pregnancy, and that the catalogue holds 53 contraindicated and 39 serious interactions for it — a count, without opening 92 monographs.

What should happen — Each tab is a separate read, made only when you open it. Anything the catalogue does not record is shown as not recorded rather than left out: no lactose warning is not the same as lactose-free, and the screen does not let the two look alike.

Find out whether it can be crushed

Austria Codex → Look up → open a product → How it is used

A ward question with an immediate wrong answer. A modified-release tablet crushed into a feeding tube delivers a whole day's dose at once.

For example — A nurse rings about Abilify 10 mg for a patient with a nasogastric tube. The screen answers four separate questions: it can go down a feeding tube, it can be dissolved or suspended, it can be crushed — and whether the capsule can be opened is not recorded, which is shown as not recorded rather than as a yes or a no.

What should happen — Six answers in the catalogue's own wording, including carcinogenic potential and light sensitivity. Those last two are marked off-label, because the catalogue says they may come from the authorisation holder or the literature rather than from the product information. A product with none of this recorded says exactly that, and adds that silence is not permission.

Find something to dispense instead

Austria Codex → Look up → open a product → Alternatives

Out of stock is a daily problem, and the catalogue already knows what the publisher considers equivalent — including the number that says it is not one-for-one.

For example — Aprednislon 1 mg is not available. Alternatives lists 58 products in the same therapeutic group, each with a conversion factor and whether it can be ordered today, plus five single-substance products with the same active substance. The conversion factor is why this is not a plain list: swapping 1 mg for 25 mg is not a swap.

What should happen — Grouped the way the publisher groups them — same generic identifier, lower strength, higher strength, similar substance — with the publisher's own legal note underneath. Availability is shown on every row, so a swap that is also out of stock is visible before you pick it.

Search on everything at once

Austria Codex → Browse → Search on everything at once

Some questions are not a name. Everything oral, in stock, with one active substance, that is a medicine rather than a cosmetic — that is four filters and no search box.

For example — Stock-taking wants every orally given medicinal product currently available. The kind-of-product list shows what the release actually holds — 10,393 medicines, 19,516 devices, 22,342 foods, 26,299 cosmetics — so it is clear before searching that most of the catalogue is not medicine.

What should happen — The filter options are read from the catalogue, not written into the app, so the counts beside them are real. It also states what the loaded module does not contain — this one is the human catalogue with no veterinary module — because an empty result from a missing module looks identical to an empty result from a real absence.

Read what the publisher has written

Austria Codex → Reference → What has been written

Sixty-eight written pieces come with the release, linked to substances and indication groups rather than to products, so one can reach a product it never names.

For example — Opening Aprednislon and going to “written about it” finds “Diät bei rheumatoider Arthritis” — reached through the indication group, not through the product name. Opening it shows the whole piece, its sources, its keywords, and that it links to 53 indication groups.

What should happen — Searchable by text, by keyword, or by indication code. The text is shown as text — the catalogue's markup is stripped rather than rendered, because it arrives over the network into an authenticated page.

Read a warning in full

Austria Codex → Interactions → click any result

The grading tells you how bad; the monograph tells you what to actually do.

For example — The lithium and aciclovir hit opens as: what happens in one line, then the full pharmacological effect, then what to do about it, then the mechanism, the symptoms to watch for, what to monitor, and the literature it was drawn from. It is in the order you would want to read it at a counter with someone waiting, not in the order the catalogue happens to store it.

What should happen — Fifteen kinds of section, each with a name rather than a number, and the grading spelled out both in English and in the German wording every other Austrian system uses.

Get at a field nothing else shows

Austria Codex → Everything else

The screens above cover what people ask for. This covers everything else: all fifty-four tables the catalogue permits, with their real columns, so a question nobody anticipated is still answerable.

For example — Someone in accounts wants every product-to-substance link for a spreadsheet. Choosing khix_core.product_substance, previewing the export to check the columns, then running the command it hands back writes the whole table to a file, one row per line, ready to load somewhere else.

A filter, one per line
product_id=23
release_id=3

What should happen — The columns are read out of the database as you pick a table, so nothing is assumed. Filters are exact matches and up to twelve of them. Below it: the seven original files the publisher shipped, with the checksum that proves the copy is unchanged, and a download for each.

Watching the market

What is coming, what to stock, and what the pharmacy down the road is doing.

Learn from a call that already happened

Pharmacy AI → Sales coaching

Upload the recording and it writes out what was said, then tells you how the call went — how much of it you spoke, what you were asked, which objections came back unanswered.

For example — A rep comes back from Dr Weber saying it went badly and they do not know why. The recording is uploaded; it shows the rep spoke 78% of the words, asked one question, and that “I am not paying more than I do now” was never answered. That is a different conversation with the rep than “try harder next time”.

Mark who is speaking and you get more back
Rep: How are you finding the current supply?
Dr Weber: Unreliable this quarter, and patients notice.
Rep: What would need to change for you to switch?

What should happen — Talk share, questions asked, and the objections raised — with the ones you did not answer marked. Where a transcript has no speaker labels those numbers are left out rather than guessed at, and it says so. Record the outcome honestly: “What wins” is only worth reading if the outcomes are true.

Find out what your best calls have in common

Pharmacy AI → Sales coaching → What wins

Compares the calls that went well against the ones that did not, and names what actually differed.

For example — After twenty calls with honest outcomes, it reports that asking about supply problems appears in eight of nine calls that went well and one of eleven that did not — while naming a price appears equally in both. The team stops opening with price.

It will refuse until there is enough
At least four calls that went well and four that did not

What should happen — Until then it says so rather than showing a pattern. A pattern found in two or three calls is just those two or three calls, and a rep told to copy it is being coached on noise.

Practise on someone who does not just agree

Pharmacy AI → Sales coaching → Practise

Rehearse a difficult conversation before having it for real, against a character who is busy, sceptical and loyal to what they already use.

For example — A new rep rehearses the Dr Weber conversation five times before the real visit, against a busy GP loyal to what she already uses. Afterwards they turn on what she was privately thinking and see she warmed up only when they asked about her patients rather than talking about the product.

Describe who you want to face
A busy GP, twenty years qualified, loyal to the product she already uses and short of time

What should happen — What they are privately thinking stays hidden while you practise — being told they are warming to you would remove the thing you are practising — and can be shown afterwards.

See where a doctor or pharmacist actually stands

Pharmacy AI → Engagement levels

Reads their own emails and messages and places them on a fourteen-level scale, with the one thing worth doing next.

For example — Three months of messages from one GP are pasted in. It comes back “11/14 · Evaluating” because she asked for the head-to-head data and the monthly cost — so the next thing to send is a comparison, not another brochure. A different contact comes back “1/14 · Opted out” and is marked as a stop.

Paste their messages, oldest first
12 Mar — Thanks, I will look at it.
2 Apr — Do you have the comparison against what we use now?
15 Apr — We have started using it with two patients.

What should happen — A level with the words that decided it. The lowest three are not “try harder” — someone who asked not to be contacted is a stop, and the system will not accept that reading unless they actually wrote it.

Check how often it agrees with you

Pharmacy AI → Engagement levels → How accurate is it?

So the accuracy you quote to anyone is a number from your own contacts rather than a claim from a brochure.

For example — You label forty contacts yourself and press Measure. It agreed exactly 72% of the time, and the breakdown shows it reliably confuses “dormant” with “cold”. That is a number you can put in front of a client, and a specific thing to fix.

Add real messages with the level you would give them
Twenty is enough to be indicative. A hundred is enough to trust.

What should happen — How often it agreed exactly, which levels it gets wrong, and the disagreements themselves so you can read them. “Within one level” is shown beside it and is deliberately not called accuracy — on a fourteen-point scale that is a much easier target.

What people are asking for

Pharmacy AI → Trends

Notice a rise before you run out.

Ask
What have we sold more of in the last month than the month before, and is anything rising unusually fast?

What should happen — A short list with the size of the change, so you can act on it rather than read a chart.

What to order

Pharmacy AI → Forecast

Turns last year's pattern into this month's order.

Ask
Based on the last two years, what should I order for the hay fever season, and when should it arrive?

What should happen — Quantities and timing you can sanity-check against your own judgement.

Keep an eye on competitors

Pharmacy AI → Competitors

Pricing and range, without visiting every week.

Add one to watch
Apotheke am Hauptplatz — check OTC pain relief and hay fever pricing weekly

What should happen — A record you can revisit, and a starting point for a schedule that checks it for you.

Check yourself against the rules

Pharmacy AI → Compliance

Find the gap before an inspector does.

Ask
Which of our standard operating procedures have not been reviewed in the last twelve months, and which staff have no current assessment?

What should happen — A list of what is out of date, with what to do about each.

Connecting other systems

Letting assistants use the software you already run.

Connect a system

MCP Servers → Add server

Once connected, everything that system can do becomes something an assistant can do — look up stock, place an order, read a file.

What you need from whoever runs it
The address of the service
A key or sign-in for it
Which actions you want assistants to be allowed to use

What should happen — The available actions are listed. Tick the ones you want, and choose whether each needs a pharmacist to approve it.

Let assistants ask each other

A2A Registry

An assistant elsewhere — another branch, a partner — can be asked for help the same way a connected system is.

Add a peer
Name: Branch two advisor
Address: the address they give you
Ask it: questions about their stock levels

What should happen — It appears as something your assistants can delegate to, under the same approval rules as anything else. If the other side changes what it can do, press Refresh — otherwise yours keeps working from what it was told on the day you added it.

Let other software use this

Settings → API Keys

For your own systems to send work in — a till, a website, a rota.

Create a key named for its use
Till system — reads extraction results only

What should happen — A key shown once. Copy it then; it cannot be shown again. Medical document search deliberately refuses keys, however senior the person who made it.

Sign in to an outside service

Settings → Integrations

Wholesaler portals, email, calendars — authorised once, then usable by assistants.

What to have ready
The account you want to connect, and permission from whoever owns it

What should happen — A sign-in window, then the service appears as available. You can disconnect it at any time.

Keeping track

What happened, what it learned, and who did what.

See what has run

Runs

Every job, finished or failed, with what it actually did.

Worth checking after a scheduled job
Open the most recent run and read the steps — which documents it read, which systems it used, what it decided.

What should happen — You can replay a run to see it again, or fork it to try the same thing with a different question.

What an assistant remembers

Memory

Assistants keep useful facts between conversations. Sometimes they keep something wrong.

Check for anything that should not be there
Search for a product name or a customer name and see what it has stored about them.

What should happen — You can delete anything that is wrong or should not have been kept, and it stops influencing answers immediately.

Prove who did what

Audit Logs

Every sign-in, approval, medical document read and rule change, in order, and it cannot be edited afterwards.

Try a question an inspector might ask
Who accessed medical documents last month, and was any emergency access used?

What should happen — A filtered list you can export. Emergency access shows up separately, with the reason that was given at the time.

Is anything struggling?

Operations

Whether the models are responding and whether anything is queued up behind a failure.

Check when something feels slow
Look at whether any service shows as unhealthy, and whether the job queue is growing.

What should happen — Green across the board means the problem is elsewhere — usually the browser needing a hard refresh.

Who can do what

The controls that decide access, and the way in when something urgent happens.

Turn on two-step sign-in

Settings → Security

Required before anyone can search medical documents. Not optional for that, by design.

What happens
Scan the square with a phone authenticator app
Enter the six-digit code it shows
Save the recovery codes somewhere safe — they are the way back in if the phone is lost

What should happen — Medical document search becomes available. Without it you are refused there, however senior you are.

Your pharmacy's details

Settings → Organization

The name and details that appear on anything the system produces for you — messages, exports, training records.

Fill in
Pharmacy name as it should appear to customers
Address
The person accountable for what happens here

What should happen — Used on exported training records and customer messages, so they do not go out with a placeholder name.

Add your staff

Settings → Members

Everyone gets their own sign-in, so the record shows who actually did something.

Roles, and what they mean
Owner — everything, including billing and deleting things
Admin — everything day to day
Clinician — can search medical documents and use assistants
Auditor — can read the record but change nothing
Viewer — can look, cannot act

What should happen — An invitation email. The role can be changed later without making a new account.

Get in urgently when your role does not allow it

RAG Search → emergency access

For the moment something matters more than the usual limits — but on the record.

You must write a reason
Customer collapsed in store, need the interaction information for the medicine they are holding

What should happen — Fifteen minutes of read access, then it closes by itself. Everything you look at is recorded against your reason. It does not skip two-step sign-in — that is still required.

Getting in, and finding your way

The parts you meet before anything else — and the page you land on afterwards.

Your first account

Sign up

The first person to sign up owns the pharmacy account. Everyone after that is invited by them, so nobody sets up a second account by mistake.

You need three things
Your full name
A work email address
A password only you know

What should happen — You are signed in and everything is empty. That is correct — nothing is shared with any other pharmacy, so there is nothing to start from. The account is named after you at first; rename it to the pharmacy under Settings → Organization, then turn on two-step sign-in.

Forgotten your password

Sign in → Forgot password

Nobody can look your password up and read it back to you, including us. Resetting it is the only route in.

Enter the address you signed up with
your.name@yourpharmacy.at

What should happen — An email with a link that works once and expires. If no email arrives, check the address is the one on the account — for safety the page says the same thing either way rather than confirming who has an account.

What the front page is telling you

Overview

The first screen after signing in. Four numbers, and each one is a question worth answering.

What to do about each
Active agents — assistants that are switched on
Pending approvals — someone is waiting on you; open it
Runs (24 hours) — how much work has happened
Skills — shortcuts your assistants have picked up

What should happen — Pending approvals is the one to watch. A number sitting there means work has stopped and is waiting for a person.

Shortcuts your assistants have learned

Skills

When an assistant works something out, it keeps the method so it does not start from nothing next time. This page shows what each one has picked up.

Worth a look when
An assistant has got faster and you want to know why
An assistant keeps doing something you would rather it did not
You are about to set up a second assistant for similar work

What should happen — A list per assistant. It fills up on its own as work is done — there is nothing to write here yourself.

See how one thing connects to another

Agents → your assistant → Graph

Memory answers “what did it store about warfarin”. This answers “what does it think warfarin is connected to”, which is the question you have when an answer surprises you.

For example — An assistant refuses a combination and nobody can see why. The graph shows ibuprofen → interacts with → warfarin → increases → bleeding, each connection quoting the sentence it came from. Two of those came from a procedure someone uploaded in March.

Two things worth trying
Show everything around — pick anything it knows and see what hangs off it
Why does it connect two things? — name two and it shows the chain

What should happen — Every connection shows the words it was drawn from. Nothing is invented: if it cannot quote the memory it came from, it is not drawn at all. Where it has stored two answers to a question that can only have one, it says so. Four views: a picture, a list, a timeline of when things happened, and the kinds of thing it knows about. It will also point out two names that look like one thing — “Dr Weber” and “Weber” — and join them only when you say so, keeping both names and every quote.

Signing out, and the shared counter machine

Sign out, top right

On a computer only you use this barely matters. On the one behind the counter it matters a great deal.

What it does and does not do
Signs you out of this browser, on this computer
Does not sign you out anywhere else you are still signed in
Next time you will need two-step sign-in again

What should happen — If you think someone may be signed in as you somewhere you cannot reach — a lost phone, a machine at home — signing out will not help. Set a new password through Forgot password instead: that ends every session everywhere, on every device, at once. Turning two-step sign-in on or off does the same, so expect to sign in again afterwards.

Check, correct or erase what an assistant remembers

Agents → your assistant → Observability

The one place that answers “why did it say that?”, and the one place that can properly erase something a customer has asked you to.

Four views, and what each is for
Audit log — every fact it stored, when, and why
Time travel — what it believed on a date you choose
Conflicts — where it has stored two things that disagree
Decay — facts it has not been told again in a long time, quietly counting for less

What should happen — In the audit log, Forget erases a fact permanently for a data request; Rollback only undoes a change. Verify chain confirms the history has not been altered — a broken chain is shown, not hidden.

Easy to miss, worth knowing

Buttons that are only obvious once someone points at them — including the one to reach for when something is going wrong.

Stop everything, right now

Guardrails → Operations

For the moment you would otherwise be pulling a plug out of the wall. Three levels, and picking the right one matters.

Everything at once, or one thing
Kill switch — stops every assistant in the pharmacy
Emergency deny — same reach, for when something is actively going wrong
Forced review — all of it still runs, but a person approves each one first
Quarantine — stops one assistant or one team, leaving the rest working
Disable a tool — switches off one action for everybody

What should happen — Immediate, and recorded with who did it. Two things worth knowing: the first three stop the whole pharmacy, so quarantine is what you want when only one assistant is misbehaving — and emergency access can lift those three but deliberately cannot lift a quarantine or a disabled tool. Those come back only when someone lifts them on purpose.

Try a rule before it can affect anyone

Guardrails → Analyse and test

A rule that is nearly right is worse than none. This tells you what it would do before it is switched on.

Three things to use, in this order
Generate boundary cases — finds the just-over and just-under values you would forget
Analyse and test — runs them and shows what fails
What would change — compares against the rule you already have live

What should happen — Anything serious blocks publication rather than warning you. "What would change" is the one to read before replacing a working rule — it names the cases that would start being treated differently.

Change a rule without losing the one that works

Guardrails → New draft from this version

Editing a live rule in place means there is nothing to go back to. This keeps the working version running while you edit a copy.

The safe sequence
New draft from this version
Make your change
Analyse and test
Publish — the old version stays in the history

What should happen — The live rule is untouched until you publish. Every earlier version stays readable, so you can see what a rule said on the day something happened.

Don't wait for the schedule to come round

Schedules → Queue one run now

A schedule set for Monday is otherwise untested until Monday.

What to check on the test run
Did it produce what you expected, and did it finish quickly enough to be useful?

What should happen — It runs once immediately. This does not disturb the timetable and does not count against a run limit — the next scheduled time is still the next scheduled time.

Nothing reaches a customer until you say so

Pharmacy AI → Campaigns → Approve for delivery

Writing a message and sending it are deliberately two separate acts.

If you change your mind
Cancel pending deliveries — stops anything not yet gone out

What should happen — Drafts sit until approved. Cancelling stops what has not yet left; anything already delivered cannot be recalled, so approving is the step to slow down on.

Run something again with one thing changed

Runs → Fork

For "what if we had asked it differently" — without losing the original.

You can change either or both
The question that was asked
Which assistant answers it

What should happen — A new entry marked as forked from the old one. Both stay in the list, so the two answers can be compared side by side.

Decide which of two facts is right

Agents → your assistant → Observability → Conflicts

An assistant told two different things on two days will have stored both. Until you pick, it may use either.

What you are choosing between
The two statements that disagree, each with the date it was stored

What should happen — Keeping one discards the other and records the decision. Worth checking after anything changes in the pharmacy — opening hours, a supplier, who to refer to.

Approve what an assistant learns from a conversation

In the chat, under the reply

It proposes what it wants to remember rather than simply remembering it. You decide.

Two kinds of proposal
Proposed memory writes — a fact it wants to keep
Proposed skill updates — a method it wants to reuse

What should happen — Nothing is kept unless you accept it. This is the cheapest place to stop a wrong fact — once accepted it will shape later answers until someone finds it.

Have a second person check a mark

Training simulator → Check this marking

For anything that affects someone's record, one marker should not be the only marker.

The checker's name is recorded
The person confirming is named on the result, not just the person who sat it

What should happen — The mark is confirmed or changed, with both names against it. That is what makes the result defensible later.

Stop it repeating something that stopped being true

Agents → your assistant → Observability → Decay

An assistant that never forgets keeps quoting last winter's opening hours with the same certainty as your name. Facts it has not been told again in a long time gradually count for less, until it stops offering them at all.

Not everything fades at the same speed
Who someone is, and what they must not take — years
How you prefer things done — about a year
Standing facts about the pharmacy — about six months
What happened on one particular day — about a month

What should happen — Reading a fact does not count as confirming it — an out-of-date fact gets used precisely because it still looks like the answer. Telling the assistant the same thing again does count, and sets the clock back. Frequent use slows the fade but cannot stop it. Press Preview what would change before you apply anything: it names the facts that would stop being used, so you can spot one that should have stayed, and saying that one to the assistant again brings it back. Nothing is deleted either way — a faded fact stays readable on this page and can still be erased properly if a customer asks.

Have it forget stale facts without you remembering to

Agents → your assistant → Observability → Decay → Switch on

Otherwise this only happens when somebody thinks to press a button, which in practice means it does not happen.

What switching it on does
Checks that assistant on its own, about once a day
Nothing else changes — only the assistant you switched it on for
Off unless you switch it on, for every assistant

What should happen — How often it checks does not change how fast anything fades — that depends on the age of the fact, not on how often it is measured. Checking daily and checking weekly reach the same answer. Preview it once before switching it on for an assistant that has been in use a long time.

Write down why you decided something

Decisions → Record one

Six months later somebody asks why you refuse a particular combination. The answer exists only if someone wrote it down as a decision rather than as a note.

For example — The pharmacy decides to refuse ibuprofen to anyone on warfarin and refer instead. Recorded with the two options rejected — supplying with a warning, and asking the GP first — and why. A year later a locum asks, and the answer is on screen in ten seconds rather than being re-argued.

The part everyone leaves out
What was chosen
What was considered and NOT chosen
Why
Who is accountable

What should happen — As you type the question it searches what you have already decided, so “have we been here before” is answered while it is still useful. Without the rejected options a decision reads as the only thing anyone thought of.

Find out what you did last time

Decisions → What did we do last time?

Describe the situation in front of you and see what was decided before, and how it turned out.

For example — A customer on warfarin asks for ibuprofen. Typing that in brings back the decision from last year, matched on “warfarin, ibuprofen, customer”, showing it was refused and that the approach worked.

Describe it as you would to a colleague
A customer on warfarin is asking for ibuprofen.

What should happen — Past decisions with the words that matched, so a poor suggestion can be waved away. Ones that went badly are shown too — usually the most useful. Two decisions answering the same question differently are flagged, because that is one person not knowing about the other rather than a change of mind.

Prove any of this to an inspector

Settings → Security → Export signed audit evidence

The difference between saying you have a record and being able to hand one over.

What it covers
Who did what, when, and under which rules — sealed so that a later change to it would show

What should happen — A file you can send on. Because it is sealed, an altered copy can be told from the real one — which is the point of exporting it rather than taking screenshots.

Still stuck?

Two things are worth checking before anything else. If a page looks out of date, refresh it fully — hold Shift and click reload. If the microphone or a page will not work at all, check the address you are using starts with https; several features are switched off by the browser on an insecure address.