← Patient Ops Guides
    Clinic ops · Systems

    Choosing and Running Practice Management Software

    Thirteen short guides to the questions that are rarely on the checklist.

    Thirteen short guides to the questions that sit outside the standard PMS evaluation checklist — where each one tends to go wrong, and a way to test it for yourself before you commit.

    Practice management software13 chapters45 min read

    What this guide covers

    Thirteen chapters. They are independent and can be read in any order.

    This is a collection of short guides on practice management software. Each one takes a single topic that sits outside the standard evaluation checklist, explains where it tends to go wrong, and gives you a way to test it for yourself before you commit.

    They are not vendor reviews. No system in this market is uniformly good or bad. Every one of them encodes a set of assumptions about how a healthcare business runs, and those assumptions are usually invisible until they start costing you something. The purpose of these guides is to make the assumptions visible early enough that you can make a deliberate choice about them.

    The guides are deliberately neutral in register. They describe what to be aware of rather than what to do. The right answer depends on the size, shape and ambition of the organisation asking the question, and a configuration that would be negligent in a twelve-site group may be entirely sensible in a single-room practice.

    How to use this collection. The chapters are independent and can be read in any order. Chapters One to Three are the broadest and work well as an entry point. Chapters Four to Eleven are operational. Chapters Twelve and Thirteen cover the end of a vendor relationship and the beginning of the next one, and are best read together.

    Each chapter follows the same shape: the problem, what is actually at stake, a numbered list of things to work through, a set of tests you can run yourself, and a short closing position. The tests matter most. A vendor's answer to a question is a statement of intent. The result of a test is a fact.

    Chapter One

    Your PMS Is a Clinical System of Record. It Is Not a Customer System of Record.

    The problem

    Practice management software is organised around the episode of care. The patient exists because there is a chart. The chart exists because there was, or will be, a clinical encounter. Every other record in the system hangs off that spine.

    That is the correct design for a clinical system. It becomes a constraint the moment you start asking commercial questions.

    Try three of them against your current system.

    Which people enquired in the last ninety days and never booked. What has your practice said to a given patient in the last year that was not an appointment reminder or a recall. Which acquisition channel produced patients who are still attending three years later.

    Most systems cannot answer any of the three. Not because the software is poor, but because a person who never booked has no chart, a conversation that was not an appointment has no encounter to attach to, and the channel someone came from is not clinical information.

    Two different records of the same human being

    The clinical record holds diagnosis, treatment, prescriptions, outcomes, correspondence and consent. It is organised by encounter. It is governed by retention rules and duty of care. Access to it is restricted by clinical role, correctly and by design.

    The commercial record holds enquiries, conversations, complaints, stated preferences, how the person found you, what they were quoted, what they declined, who in their household also attends, who they referred, and why they stopped coming. It is organised by relationship over time rather than by encounter.

    The same person appears in both. The two systems answer different questions, and neither is a substitute for the other.

    Where the difference shows up

    Communication. Clinical and appointment communication is transactional. It is triggered by calendar state, it is templated, and it is effectively one-way. It tells someone that an appointment exists. Relationship communication is segmented, conversational, threaded across channels, and measured by response. A reminder system asked to run a reactivation campaign will send the same message to everyone on a list and record nothing about who replied.

    Workflow. A clinical system routes work by encounter. A commercial system routes work by owner, stage and follow-up date. There is no natural home in a PMS for a task that says someone needs calling back on Thursday about a treatment plan they have not accepted.

    Reporting. A clinical system counts activity. A commercial system counts conversion, retention and value over time.

    Access. Front desk, marketing, patient experience and finance teams all need a view of the person. Very few of them should have a view of the chart.

    Five things to work through

    1
    Decide where the non-clinical truth lives
    The answer can legitimately be the PMS, a separate platform, or a mix. What causes damage is not making the decision, so the same information ends up in three places with no agreement on which one is correct.
    2
    Establish direction for every shared field
    Contact details, communication preferences, name changes and consent flags will exist in both systems. For each one, decide which system is master and which accepts updates. Two-way sync without a master is how you get a patient whose mobile number oscillates between two values.
    3
    Separate clinical consent from marketing consent
    They are different permissions with different legal bases. A patient who has opted out of marketing still needs their appointment reminders. If a single flag controls both, you will either send marketing to people who declined it or stop reminders to people who need them.
    4
    Work out where a conversation is recorded
    A phone call about a bill, a complaint, a question about parking. In most PMS deployments these are either written into a clinical note, which is the wrong place, or written nowhere at all.
    5
    Understand what leaves the clinical boundary
    Anything you push into a commercial system carries obligations with it. Being clear about which fields cross, and which explicitly do not, is easier to design at the start than to unpick later.

    How to test it

    Run the three questions
    Ask a vendor to demonstrate, in their product, the answers to the enquiry, conversation history and cohort retention questions above. Watch what they do rather than what they say.
    Trace one non-clinical interaction
    Pick a plausible scenario, such as a patient who calls to complain about a wait, is promised a call back, and receives one two days later. Ask to see every step recorded in the system.
    Ask for the communication log export
    If you cannot export a record of what was said to whom and when, you do not have a customer record, regardless of what the interface displays.
    The bottom line

    A practice management system is built to be excellent at holding the clinical record, and most of them are. Expecting it to also be the system of record for the commercial relationship is a reasonable assumption to test, and an expensive one to assume.

    Chapter Two

    Ask What You Can Get Out Before You Ask What Goes In

    The problem

    Software evaluation focuses almost entirely on what a system can do. Demonstrations are built around workflows, screens and features. The question that determines what the system is worth to you in year four is a different one. What can you get back out, in what shape, how often, and who controls the tap.

    This is rarely on the scoring matrix. It should be, because every analysis you will ever want to run, every integration you will ever want to build, and every migration you will ever be forced into depends on the answer.

    "Do you have an API" is not the question. It is one of at least six different answers, and they are not interchangeable.

    The six routes data leaves a system

    Manual export. Someone clicks a button and gets a CSV. Useful for one-off analysis. Useless as infrastructure, because it depends on a person remembering.

    Scheduled bulk export. A nightly or hourly drop of full tables to a location you control. This is what you need if you intend to build any kind of reporting warehouse. It is the least glamorous capability and the most valuable.

    Read API. Query specific records on demand. Good for integrations that need to look something up. Poor for analysis, because pulling three years of appointments one record at a time through a rate-limited endpoint is not practical.

    Write API. Push data in. Separate permission, separate risk, frequently not offered even when read access is.

    Webhooks and event streams. The system tells you when something happened. This is the only mechanism that gives you near-real-time reaction, and the only one that captures events rather than states.

    Direct database or read replica access. Complete and fast. Rare, usually reserved for on-premise deployments or large accounts, and increasingly withdrawn as vendors move to cloud hosting.

    Most organisations need at least three of these. Many buy a system that offers one.

    What you actually want to be able to pull

    Beyond the obvious patient demographics and appointment records, the list that matters includes financial transactions at line level, the communications log, recall and waiting list state, treatment plans including the ones not accepted, referral and acquisition source, user and rota data, document metadata, consent and opt-out state, and the audit log.

    Two categories are almost always forgotten and almost always missed later.

    Documents and images. These are commonly stored separately from the structured data, sometimes by a third party. An export of the database that does not include the files is a partial export. Ask specifically.

    The audit log. Who did what and when. It is the only record of how your operation actually behaved, and it is the first thing excluded from a standard export.

    Five things to work through

    1
    Distinguish current state from change history
    Almost every export gives you the present. It tells you a patient is inactive. It does not tell you when they became inactive, or what they were before. If you want to analyse trends in anything that changes over time, you need either historical snapshots or an event stream. Ask the vendor directly whether status changes are timestamped and retrievable.
    2
    Ask what happens to deleted records
    Soft delete leaves the data present but flagged. Hard delete removes it. If a receptionist deletes an appointment, can you still see that it existed and who removed it. This affects both governance and your no-show numbers.
    3
    Confirm the commercial terms of access
    API access is frequently a paid module, sometimes charged per call, sometimes gated behind a partner programme that your chosen integration partner must join and pay for. Find out the cost, the rate limits, and whether there is a sandbox you can develop against.
    4
    Check whether the export includes the joins
    A set of CSV files with no stable identifiers linking them is a pile of tables, not a dataset. Confirm that primary and foreign keys are present in exports, and that they are stable.
    5
    Establish the scope of your own entitlement
    Your right to your data should be written into the contract rather than assumed. Include format, frequency, cost, and whether the vendor is permitted to charge for access to information you put in.

    How to test it

    Request a real export during evaluation
    Not a specification document, not a screenshot. Ask for a sample export from a live demo environment with a meaningful volume of data in it, and open the files yourself.
    Pick three business questions and answer them end to end
    Something like monthly revenue per provider per site, or the retention rate of patients acquired in a given quarter. Go from the export to the number. The friction you meet is the friction you will live with.
    Test the API with a real developer for one day
    Documentation quality, error messages, rate limit behaviour and sandbox availability tell you more in eight hours than a sales process will in eight weeks.
    The bottom line

    Data that you can see on screen but cannot get out at will is data you are renting. It is worth knowing the terms of the tenancy before you move in.

    Chapter Three

    Two Systems, Two Numbers, Same Week

    The problem

    Every report your practice management system produces rests on definitions that somebody at the vendor chose, probably years ago, for reasons that were never written down.

    You will make hiring decisions, marketing decisions and capacity decisions on those numbers. They will go into board packs and lender conversations. Very few buyers ever ask what the numbers mean.

    The question is not whether the reports are accurate. They usually are, against their own definitions. The question is whether their definitions match yours.

    Where the definitions hide

    New patient. Is someone new when they first book, when they first attend, or when a chart is first created. A practice with a high first-appointment cancellation rate will see wildly different new patient numbers depending on which is used. If the definition is booking-based, your acquisition figures include people who never walked through the door.

    Active patient. Seen in the last twelve months, eighteen, twenty-four. Some systems let you configure this. Some do not. Your patient base can shrink by a third on paper because a threshold changed.

    Utilisation. The numerator is usually booked minutes. The denominator is the interesting part. Does it include unopened sessions, lunch breaks, admin time, annual leave, or the hours a room sat empty because nobody was rostered. Two systems can report 68 per cent and 91 per cent for the same clinic on the same day and both be internally correct.

    No-show rate. Does a patient who cancels forty minutes before count as a cancellation or a failure to attend. Does an appointment that was rescheduled twice and then missed count once or three times.

    Revenue. Recognised on the date of service, the date of invoice, or the date of payment. All three are legitimate. They produce different monthly trend lines, and the gap between them widens with the proportion of insurer work you do.

    Five things to work through

    1
    Get the definitions in writing
    Not the report description in the help documentation, but the actual logic. Which table, which date field, which filters, which exclusions. A vendor who cannot supply this is telling you something.
    2
    Find out which definitions are configurable and which are fixed
    Configurability is not automatically better. A fixed definition you understand is more useful than a configurable one that three people have quietly changed.
    3
    Establish whether reports run on live data or a snapshot
    Overnight snapshots are common and entirely reasonable. They also mean a report run on Monday morning describes Sunday night, which matters if anyone is making same-day staffing calls.
    4
    Check how amendments affect historic reports
    If an appointment status is corrected six weeks after the fact, does last month's report change when you rerun it. Retrospective mutation is normal in clinical systems and catastrophic for anyone who has already circulated a number.
    5
    Understand the time basis
    Time zone, week start day, whether the financial period follows calendar months or four-week cycles, and how the system handles clock changes. These sound trivial until two reports disagree by one day's worth of activity and nobody can work out why.

    How to test it

    Rerun last month's report in three months
    Save the output today. Run the identical report at the end of the quarter and compare. If the number has moved, you need to know why, and you need to know before you present it to anyone.
    Rebuild one headline number by hand
    Take utilisation or new patients for a single week, export the underlying records, and calculate it yourself. The gap between your number and the system's number is the definition you did not know about.
    Ask two vendors the same question
    During evaluation, give each vendor the same clinic scenario and ask what their system would report as utilisation. The way they answer tells you how much thought has gone into it.

    A note on benchmarks

    Industry benchmarks for utilisation, no-show rates and recall compliance circulate widely and are quoted with confidence. They are aggregated across organisations running different systems with different definitions. Treating them as directly comparable to your own numbers is a reasonable thing to want to do and a difficult thing to do correctly.

    The bottom line

    A number is a measurement plus a definition. Practice management systems supply both, and they only publish one of them.

    Chapter Four

    The Calendar Is a Model of How You Think You Work

    The problem

    Every scheduling system encodes a theory of how care is delivered. The most common one is simple. An appointment is one patient, with one provider, in one time slot.

    That theory holds for a single-handed practitioner in one room. It starts to break the moment anything else is true.

    Consider a clinic where two treatment rooms share one specialist piece of equipment, an assistant is required for certain procedures but not others, a clinician supervises two chairs simultaneously, group sessions run on Thursdays, rooms need fifteen minutes of turnaround between certain appointment types, and one provider works across three sites on a rotating pattern.

    None of that is exotic. All of it is difficult to represent in a system built on the simple theory.

    What you lose when the model does not fit

    The immediate cost is workflow friction. Staff invent workarounds. They create dummy provider columns to represent rooms. They block out time with fake appointments. They keep a paper sheet for equipment.

    The durable cost is data. Anything the system cannot represent as a first-class object, it cannot report on.

    Room utilisation is the classic example. If rooms are not modelled as bookable resources, you will never know your estate utilisation. You will know how busy your clinicians were, which is a different question, and you will make property decisions without the number that matters most.

    The same applies to equipment, assistants, and any shared constraint. If it is not in the model, it is invisible in the analysis, and it will be invisible for as long as you run the system.

    Six things to work through

    1
    List your bookable resources before you look at any software
    Clinicians, rooms, chairs, equipment, support staff, vehicles. Then ask each vendor which of those the system treats as a resource that can be independently booked, reported on, and constrained.
    2
    Check whether an appointment can require more than one resource
    A procedure that needs a clinician, a room and an assistant is a single appointment with three dependencies. Some systems handle this natively. Others require three separate bookings that nothing keeps in sync.
    3
    Understand how buffers and turnaround are handled
    Is preparation and clean-down time part of the appointment duration, a separate block, or a rule attached to the appointment type. This determines whether your utilisation figures include time you cannot sell.
    4
    Ask what happens to history when templates change
    Provider session templates change constantly. If you shorten a clinic's Friday sessions, does the system's view of last year's Friday capacity change with it. A denominator that moves retroactively makes historic utilisation meaningless.
    5
    Work out how capacity is expressed
    Can you ask the system what your theoretical capacity is, distinct from what was booked. Without this you can measure demand but not headroom, which makes questions about adding a Saturday or a fourth room unanswerable.
    6
    Look at the rules layer
    Which appointment types can be booked by whom, into which resources, how far ahead, with what constraints. A rich rules layer prevents errors and produces cleaner data. An absent one means every rule lives in a receptionist's head, and leaves when they do.

    How to test it

    Draw your busiest day on paper, then build it
    Take a real Tuesday, with every clinician, room, piece of equipment and support person. Try to construct it in a trial environment. Count the compromises.
    Ask for a room utilisation report
    Specifically rooms, not providers. The answer to this one request separates systems that model resources from systems that pretend providers are rooms.
    Change a template and check the past
    Alter a provider's working pattern in a demo environment, then rerun a historic utilisation report. See whether the number moves.

    A note on flexibility

    More configurability is not automatically better. A scheduling engine that can express anything will express a great many things inconsistently, because twelve receptionists will interpret it twelve ways. The useful question is whether the model can represent your actual operating constraints, not whether it can represent every conceivable one.

    The bottom line

    The calendar is not an administrative convenience. It is the record of how your capacity was used, and it can only record what its data model is capable of describing.

    Chapter Five

    Who Owns the Number the Message Comes From

    The problem

    Appointment reminders are usually evaluated on a single criterion. Do they go out.

    They do. Every system in the market sends them. The differences that matter are elsewhere, in a set of questions almost nobody asks during procurement, and they concern ownership rather than function.

    Whose number does the message come from. Where does a reply go. Whose domain is the email sent from. Where is the record of what was sent. And who holds the list of people who have asked you to stop.

    Reply handling

    Patients reply to text messages. They reply to confirm, to ask a question, to cancel, and to tell you they have moved.

    Many reminder services send from a shared pool number or an alphanumeric sender ID that cannot receive messages. The replies go nowhere. The patient believes they have cancelled. Your calendar still shows them booked, and you record a failure to attend against someone who did exactly what they were asked to do.

    Where replies are received, the next question is where they land. A shared inbox that nobody owns is functionally the same as no inbox. Find out whether replies attach to the patient record, whether they generate a task, and who is responsible for clearing them.

    Sender identity and deliverability

    If your appointment emails are sent from the vendor's domain, the sending reputation being built belongs to the vendor. It is shared with every other practice on the platform, and you cannot take it with you.

    If they are sent from your domain, you need the authentication records configured correctly, and you inherit responsibility for the reputation. That is more work and considerably more control.

    The same logic applies to SMS. A dedicated number that you own can be ported to another provider. A number allocated from a vendor pool cannot. If patients have saved that number in their phones over five years, that is a real asset sitting on somebody else's balance sheet.

    Five things to work through

    1
    Establish where opt-out state is stored and whether it is exportable
    This is both a compliance question and a migration question. Losing a record of who asked you to stop contacting them is one of the few genuinely serious data failures in this category.
    2
    Separate transactional and marketing consent, then check the system can too
    A patient who has withdrawn marketing consent still needs appointment reminders. Many systems have a single contactable flag. Find out which behaviour you get when it is switched off.
    3
    Confirm that sent messages form part of the retrievable record
    Ask how long message history is retained, whether it is visible on the patient record, and whether it is included in a data export. Communications history is frequently held in a sub-processor's system and excluded from the main export.
    4
    Understand the cost structure
    Message pricing is often marked up on wholesale rates, sometimes substantially, and sometimes charged per segment rather than per message. Long messages and non-standard characters silently multiply the count. Ask for the per-message rate and the segmentation rules.
    5
    Ask what the system does when delivery fails
    A bounced email or an undeliverable number should update the patient record so somebody can correct it. Many systems discard the failure, which means a patient with a wrong number receives nothing for years and nobody notices.
    6
    The world of WhatsApp
    WhatsApp is an absolutely essential channel for patient communication and engagement. It has revenue-level impact if used correctly. Many PMS providers fail to understand the nuances around WhatsApp use, for example, rate limiting and sender status, which Meta can modify based on correspondence success. There are also nuances around WhatsApp handling. For example, an initial outbound message needs to be responded to within 24 hours; otherwise, its status may change, and you might not be able to reply to a patient who asks a question. Can you configure the outbound deliverability to ensure that someone on your team can respond to whatever comes back in within an appropriate window?

    How to test it

    Send yourself a reminder and reply to it
    Then find the reply in the system. This single test, which takes four minutes, answers more questions than a feature comparison.
    Ask to see the opt-out export
    Not a screen showing opt-out status, an exportable file.
    Check the sender on a real message
    Look at the from address and the sender ID on a message from an existing customer of the vendor. Note whether it identifies the practice or the platform.
    Send yourself a WhatsApp
    Respond to it, and then see what happens 23 hours later before the 24 hour cutoff.

    The wider point

    There is a distinction between messaging that serves the appointment and messaging that serves the relationship. The first is triggered by calendar state, templated, and largely one-way. It is what a practice management system is built to do, and most do it well.

    The second is segmented by behaviour, conversational, measured by response, and attributable to an outcome. Systems designed for the first are rarely capable of the second, and asking them to attempt it usually produces the worst of both.

    The bottom line

    The channel you reach your patients through is part of your business. It is worth knowing whether you own it or are borrowing it.

    Chapter Six

    Your PMS Knows What You Earned. It May Not Know Where It Came From.

    The problem

    The financial module in a practice management system is built to do three things well. Raise charges, take payments, and reconcile the ledger. Most do all three competently.

    Attribution is a different discipline, and it is rarely designed for. Attribution is the ability to connect a pound of revenue to the thing that caused it.

    Ask your system what revenue each provider generated last quarter. Then ask which appointment types were most profitable per hour of room time. Then ask what the average lifetime value is of a patient acquired through a particular channel.

    The first question is usually answerable. The second sometimes. The third almost never.

    Where the joins break

    Payments post at account level, not appointment level. A patient pays £340 against a balance built from three visits. Unless the system allocates that payment to specific charges, you can report cash received but not revenue per appointment or per provider.

    Household and guarantor accounts confuse the subject. A parent pays for three children. Revenue attributed to the account holder rather than the person treated will distort every per-patient metric you run.

    Insurer payments arrive late and in bulk. A single remittance covers ninety patients across four months and is posted as one transaction. Splitting it back out to the originating episodes is a specific capability. If the system does not do it, your revenue-by-month line and your activity-by-month line will never agree.

    Discounts, write-offs and credits. These are frequently applied at account level with a free-text reason. That makes it impossible to analyse where margin is leaking.

    Who gets the credit. An appointment booked by one clinician and delivered by another, or a plan prescribed by one and carried out over six visits by a second. The system attributes to whichever field it was designed around, and it is often not the one you would choose.

    The date basis question

    Revenue can be recognised on the date of service, the date of invoice, or the date of payment. Each is legitimate for different purposes. The gap between them is large in any practice with significant insurer or plan-based income.

    What matters is knowing which basis a given report uses, and whether you can switch. A board pack that quietly mixes two bases across different reports is a common and difficult problem to spot.

    Five things to work through

    1
    Find out whether payments can be allocated to line items
    This single capability determines whether provider-level, treatment-level and site-level profitability are possible at all.
    2
    Ask whether proposed treatment is recorded separately from delivered treatment
    Treatment plans presented, accepted and declined are among the most commercially useful data a healthcare business can hold. Many systems record only what was done, which means your acceptance rate is unmeasurable.
    3
    Check whether acquisition source is a field on the patient or a field on the episode
    A patient acquired through one route may return three years later through another. A single overwritable field loses the original, and the original is the one you paid for.
    4
    Establish how costs can be attached, if at all
    Consumables, lab fees, materials and technician charges. Without these, you have revenue analysis rather than margin analysis, and the two can point in opposite directions.
    5
    Understand what happens to historic financial data when prices change
    Charges should be stored as the amount charged at the time. Some systems recalculate against the current price list, which silently rewrites history.

    How to test it

    Reconstruct one patient completely
    Pick a patient with a mixed history of private and insured work, a discount, a refund and a family member on the same account. Trace every charge, allocation and payment from the export. Whatever you cannot reconstruct for one patient, you cannot report for ten thousand.
    Run revenue by provider three ways
    By booking clinician, by delivering clinician, and by supervising clinician. If only one of the three is available, find out which, and whether it is the one your remuneration model uses.
    Compare two date bases for the same quarter
    Service date and payment date. The size of the gap tells you how careful you need to be.
    The bottom line

    Billing tells you what came in. Attribution tells you what to do more of. They are not the same capability, and buying one does not deliver the other.

    Chapter Seven

    One Person, Several Records

    The problem

    Every patient database contains duplicates. This is not a failure of discipline. It is what happens when humans type names under time pressure, people marry and change surnames, children are booked under a parent's details, online booking creates a record before anyone checks, and a second site enters the same family independently.

    A practice of any size will have between two and eight per cent duplication. Larger groups that have grown by acquisition run higher.

    Duplicates are usually discussed as a tidiness problem. They are actually three separate problems, and only one of them is about tidiness.

    The clinical problem is that a clinician may be looking at half a history. The commercial problem is that every per-patient metric you calculate is wrong by the duplication rate, in a direction you cannot easily determine. The structural problem is that if the identifier you use to join your PMS to anything else is unstable, every integration you build inherits the instability.

    The identifier question

    This is the part that gets missed.

    At some point you will connect your practice management system to something else. A reporting warehouse, a customer platform, a patient app, a review tool. All of those connections depend on a key that reliably identifies the same person in both systems.

    So the questions are: is the patient identifier permanent, is it exposed through the API and in exports, and what happens to it when two records are merged.

    If merging retires one identifier, every external system holding that identifier now points at nothing. If merging generates a third identifier, both external references break. If the system reuses identifiers after deletion, you have a genuinely difficult problem, because an external record can silently attach to the wrong human being.

    Five things to work through

    1
    Find out exactly what merge does
    Does it combine both clinical histories or keep one and archive the other. Is it reversible. Is there an audit record of the merge. Does the retired identifier resolve to the surviving record, or does it simply stop working.
    2
    Look at the matching rules on record creation
    What does the system check before allowing a new patient. Name and date of birth, name and postcode, email, mobile number, or nothing at all. Then ask the same question about the online booking path, which frequently applies weaker rules than the front desk.
    3
    Understand the household and relationship model
    Who is the patient, who is the guarantor, who receives the communication, and who pays. A child's reminder needs to reach a parent without the child's clinical information becoming visible to the wrong adult. These relationships change, sometimes acrimoniously.
    4
    Check how many contact points a record can hold
    One mobile number per patient sounds fine until you have a shared family handset, a work number, and a patient whose adult child manages their appointments. Where the model allows only one, staff overwrite, and you lose the history of what you contacted.
    5
    Establish what happens across sites
    In a multi-location group, is a patient one record visible everywhere, or one record per location. Both designs exist. One of them means your patient count is wrong and your cross-site referral data does not exist.

    How to test it

    Count your duplicates now
    Export your patient list and look for matches on date of birth plus surname, then on mobile number, then on email address. The result is usually higher than the estimate anyone in the building would have given.
    Create a duplicate deliberately, then merge it
    In a trial environment, make two records for the same person, put an appointment and a payment on each, then merge them. Check that both survive, check the audit trail, and check what happened to the identifiers.
    Ask what a merge does to the API
    Specifically, whether a request using the retired identifier returns the surviving record, returns an error, or returns nothing.
    The bottom line

    Duplication is a permanent condition rather than a one-off cleanup. What differs between systems is how well they resist it, how cleanly they resolve it, and whether resolving it breaks everything you have connected to them.

    Chapter Eight

    The Decisions You Make in Week One Become the Reports You Cannot Run in Year Three

    The problem

    Configuration is usually treated as a setup task. It happens under time pressure, during implementation, often delegated to whoever has capacity, and it is almost always shaped by the question "how do we get live on Monday" rather than "what will we want to measure in 2029".

    Appointment types, cancellation reasons, treatment codes, statuses, custom fields and picklists are all decided in that window. Every one of them becomes a permanent constraint on what you can analyse.

    Nobody thinks of this as a data decision at the time. It is the most consequential data decision in the whole project.

    Free text is a report you cannot run

    The clearest example is the cancellation reason.

    If cancellation reason is a free-text box, you will accumulate fifty thousand records containing "pt called", "pt called to cancel", "cx", "unwell", "sick", "poorly", "work", "at work", "couldn't get out of work" and two thousand blanks. You will never be able to answer what proportion of your cancellations are avoidable, which is the only reason you collect the field.

    If it is a picklist with six options, you can answer it on day one.

    The same trade-off applies everywhere. Structured data is harder to enter and trivial to analyse. Free text is the reverse. The decision about which fields deserve structure is made once, quickly, and lives for the life of the system.

    The appointment type problem

    Appointment types are the backbone of nearly every operational report you will run. Getting the granularity wrong in either direction causes damage.

    Too few and you cannot segment. A single "consultation" type tells you nothing about the difference between a first assessment and a six-month check.

    Too many and staff choose wrong. When a receptionist faces a dropdown of ninety options with similar names, under pressure, with a queue, they will pick the one nearest the top or the one they used last time. The data is now worse than if you had ten options, because it looks precise and is not.

    There is a second trap in naming. Appointment types are usually named for scheduling convenience, using internal abbreviations and duration codes. Those names then appear in every report, every export and every board pack for the next decade.

    Five things to work through

    1
    Decide which fields must be structured before you decide anything else
    Cancellation reason, acquisition source, appointment type, appointment status and outcome are the usual candidates. Everything else can be free text with less consequence.
    2
    Find out what renaming does to history
    If you rename an appointment type, do historic appointments display the new name or the old one. Both behaviours exist. One rewrites your history, the other fragments it. You need to know which you have before you ever rename anything.
    3
    Establish the difference between retiring and deleting
    You will stop using configuration items. They need to become unselectable for new bookings while remaining intact on historic records. A system that only offers deletion forces you to choose between a cluttered dropdown and a broken history.
    4
    Check whether custom fields are actually reportable
    Many systems allow custom fields that appear on screen but are invisible to the reporting engine, the search function, and the export. Ask specifically about all three. A custom field you cannot query is a note.
    5
    Assign ownership of the taxonomy
    Somebody needs to own the list of appointment types and the right to change it, with a process attached. Without that, every clinician who joins adds two of their own, and in four years you have a hundred and forty.

    How to test it

    Write your reports before you write your configuration
    List the twenty questions you want to answer routinely. Work backwards to the fields required. Anything not required by a question on the list is optional.
    Run a report in the trial environment
    Before go-live, put a week of realistic bookings into the trial system and produce one of your twenty reports from it. This surfaces missing structure while it is still cheap to fix.
    Show the dropdown to a receptionist
    Give the appointment type list to someone who will use it forty times a day and ask them to pick the right one for five scenarios. Count the hesitations.
    The bottom line

    Configuration looks like a technical exercise carried out during implementation. It is really the act of deciding, in advance and largely irreversibly, which questions your business will be able to ask itself.

    Chapter Nine

    The System Has an Opinion About What Shape You Are

    The problem

    Practice management systems are built around an assumed organisational shape. Usually it is a single site, with a fixed group of clinicians, one price list, one brand and one set of rules.

    Most of them then add multi-site capability later. There is a meaningful difference between a system designed for multiple locations and a system that has had multiple locations bolted onto it, and the difference is invisible in a demonstration of a single site.

    It becomes visible the first time you try to run a central function, consolidate a report, or absorb an acquisition.

    The questions that separate the two designs

    Is a patient one record across sites, or one record per site. This determines whether you can see a complete history when someone attends a second location, whether your patient count is real, and whether cross-site referral is measurable. Both designs exist in the market and vendors rarely volunteer which they use.

    Can one clinician work across sites in one diary. A peripatetic specialist who covers three locations needs a single view of their week. Where the system requires a separate diary per site, double-booking becomes a manual discipline.

    Can you report across sites in one view, without exporting. Consolidated reporting is frequently available only in a higher tier, or only through a separate analytics product, or not at all. Where it does not exist, the group finance function rebuilds it in a spreadsheet every month, in perpetuity.

    Is configuration global, per site, or both. Appointment types, price lists, document templates and communication content. You will want some of these standardised and some local. A system that forces all-or-nothing on this makes one of those two things painful forever.

    The licensing question is an operational question

    This one is genuinely non-obvious, and it is worth thinking about carefully.

    Pricing models in this market vary. Per user, per concurrent user, per clinician, per site, per patient record, or a flat platform fee. Each creates a different incentive inside your organisation.

    Per-user pricing creates pressure to share logins at the front desk. Shared logins destroy the audit trail, make it impossible to attribute an action to a person, and remove any ability to analyse individual performance or identify training needs. The cost saving is visible on the invoice. The cost is not.

    Per-site pricing makes a small satellite location disproportionately expensive, which can quietly shape estate decisions.

    Per-clinician pricing changes the calculation on part-time and locum staff.

    None of these models is wrong. The point is that the pricing structure will influence operational decisions, and it is better to notice that deliberately than to discover it in a review three years later.

    Five things to work through

    1
    Describe the organisation you intend to be in five years, not the one you are
    If acquisition is part of the plan, the system's ability to absorb a practice with its own patient base, price list and staff is a core requirement rather than a future concern.
    2
    Work out how a central booking function would operate
    Whether one team can see availability across every site, book into any of them, and be measured on it. Then check the permission model supports it without granting clinical access.
    3
    Separate legal entity from operating location
    Groups frequently have more entities than sites, or more sites than entities, and the financial reporting has to follow the entities while the clinical and scheduling view follows the locations. Ask how the system distinguishes them.
    4
    Ask what happens when a site is added or closed
    Lead time, cost, whether historic data from a closed site remains reportable, and whether patients transfer or are duplicated.
    5
    Check the permission model against a real org chart
    Regional managers, a central marketing function, a shared finance team, a bank of part-time clinicians across two sites. Most permission models are built for a flat single-site practice and stretch awkwardly.

    How to test it

    Ask for a demo environment with three sites in it
    Not one site with a location field. Three, with overlapping staff and at least one patient who has attended two of them.
    Run a consolidated report in front of them
    Total revenue by site by month, in one view. Note whether it requires an export, a separate product, or an upgrade.
    Model the licence cost at double your current size
    Then at double your current number of part-time staff. Then with a central team of six who need cross-site access. The shape of the curve matters more than the headline figure.
    The bottom line

    Every system makes assumptions about the shape of the organisation using it. Those assumptions are cheap to work around when they are close to correct, and expensive when they are not.

    Chapter Ten

    Online Booking Is a Conversion Funnel, Not a Form

    The problem

    Online booking appears on every requirements list as a single line item with a yes or no answer. It is then evaluated on whether the interface looks reasonable.

    For most healthcare businesses it is the top of the acquisition funnel. It is the point at which a person who has decided to consider you either becomes a patient or leaves. A ten per cent difference in completion rate is a ten per cent difference in new patient volume, achieved without spending anything more on marketing.

    Almost nobody measures it, because almost no practice management system reports on it.

    What the system usually throws away

    Abandonment. How many people started a booking and did not finish, and at which step they stopped. This is standard measurement in every other online transaction. In practice management software it is frequently not captured at all.

    Searches that found nothing. Somebody looked for a Saturday appointment with a particular clinician in the next two weeks and there was none. That event is the single most valuable piece of capacity intelligence a practice can hold. It tells you what demand exists that your rota does not serve. Most booking modules discard it without recording it.

    Where they came from. If the booking page is hosted on a vendor domain, or embedded in a frame, campaign tracking parameters are often lost at the boundary. Your analytics then attribute the booking to the vendor's site rather than to the campaign that paid for it.

    What they nearly booked. The appointment type selected before the person changed their mind.

    Five things to work through

    1
    Establish where the booking journey is hosted
    Your domain, a vendor subdomain, or an embedded frame. This affects search visibility, patient trust, cookie and consent handling, and whether you can instrument it with your own analytics.
    2
    Check whether you can measure the funnel at all
    Ask specifically whether the vendor records starts, step completions, drop-off and failed searches, and whether that data is available to you rather than just to them. If the answer is no, you can still instrument it yourself, but only if the page is on your domain and not inside a frame.
    3
    Look at the new patient path separately from the returning patient path
    They are different journeys with different friction. New patient registration is where abandonment concentrates, because it is where you ask for the most information. Count the fields. Ask which are genuinely required before the appointment rather than before the visit.
    4
    Understand what the system exposes and what it holds back
    Which appointment types, which clinicians, how far ahead, how close to the time, and whether deposits can be taken. These are policy decisions dressed as configuration, and they are usually set once during implementation by someone who was not thinking about conversion.
    5
    Check duplicate creation
    Online booking is the most common source of duplicate patient records, because the matching rules applied to a self-service form are usually weaker than the ones a receptionist applies. Ask what happens when a returning patient books online without recognising that they already have an account.

    How to test it

    Book as a new patient on a phone, and time it
    Use a real mobile, on mobile data, as somebody who has never seen your practice before. Count the taps and the fields. Note every point at which you would plausibly give up.
    Search for something you do not offer
    Try to book a time or a clinician with no availability. See what the patient is shown, then check whether the attempt appears anywhere in the system afterwards.
    Run a campaign parameter through the whole journey
    Add a tracking parameter to the link, complete a booking, and check whether the parameter survives to the point where the patient record is created.

    A note on proportion

    Not every practice needs a heavily instrumented booking funnel. A single-site practice with a waiting list and no acquisition problem has other priorities, and over-engineering this is a real risk.

    The distinction worth drawing is between organisations where new patient volume is the constraint and organisations where capacity is. For the first group, this is one of the highest-value areas in the entire system and one of the least examined.

    The bottom line

    A booking page is a transaction interface, and every transaction interface has a completion rate. The question worth asking early is whether your system will ever tell you what yours is.

    Chapter Eleven

    Your Data Quality Is a Function of How Fast the Software Is at 8:55 on a Monday

    The problem

    Every number your organisation will ever report comes from somebody typing it in.

    That somebody is usually at the front desk, at the busiest moment of the week, with a queue of four people, a ringing phone and a clinician waiting for an answer. Whatever the software asks of them in that moment determines the quality of everything downstream.

    This is not a training issue, although it is always described as one. It is a design issue, and it is measurable during evaluation if you look for it.

    How data degrades

    Defaults get selected. If an appointment type dropdown opens on a particular value, that value will be over-represented in your data by a wide margin. The same applies to cancellation reasons, referral sources and status fields. The first option in any list becomes the most common answer in your reporting, regardless of what actually happened.

    Optional fields get skipped. A field that takes two extra clicks will be left blank under pressure. The referral source field is the classic casualty. It is the field with the highest commercial value and the lowest completion rate in most practices, and the reason is almost always that it sits two tabs away from the booking screen.

    Mandatory fields get garbage. The obvious response to low completion is to make the field mandatory. What follows is a field that is one hundred per cent complete and entirely meaningless, because staff enter whatever clears the validation fastest.

    Workarounds become policy. Booking into a dummy patient record to block time. Recording a cancellation by deleting the appointment. Writing operational information into a clinical note because there is nowhere else. Each of these is a rational response to friction and each one removes data permanently.

    Logins get shared. Where signing in is slow, or licences are counted per user, a shared login appears. The audit trail stops being able to answer who did anything.

    Five things to work through

    1
    Count the clicks for the five most frequent actions
    Booking an appointment for an existing patient. Registering a new patient. Cancelling with a reason. Checking someone in. Taking a payment. These five account for the overwhelming majority of front desk interaction, and the difference between systems can be a factor of three.
    2
    Look at where the commercially important fields sit
    Referral source, acquisition channel, cancellation reason. If they are not on the screen where the relevant action happens, they will not be completed reliably, regardless of what the policy says.
    3
    Check what the system does when it is interrupted
    A half-completed booking when the phone rings. Whether the work is held, discarded, or locks the record. Interruption is the normal state of a front desk, and systems designed around uninterrupted sequences fail there.
    4
    Ask about performance under real conditions
    Search speed with a hundred thousand patient records rather than the four hundred in a demo environment. Calendar load time on a busy Monday across six clinicians. Behaviour on a marginal internet connection. These are reasonable things to ask an existing customer of similar size.
    5
    Consider turnover
    Front desk turnover in healthcare is high. The relevant question is not how the system performs for an expert user after two years, but how long it takes a new starter to reach competent speed, and what quality of data they produce in the meantime.

    How to test it

    Watch a real morning
    Ask to observe, or speak to, a receptionist at an existing customer site during a busy period. Not a demonstration by a product specialist who has used the software for six years.
    Give the trial to your slowest user
    Whoever on your team is least confident with software should do the trial, not whoever is most confident. They will find the friction that matters.
    Audit your current defaults
    In your existing system, pull the distribution of appointment types, cancellation reasons and referral sources. Where one value holds an implausible share, you have found a default rather than a fact.
    The bottom line

    Reporting quality is decided at the point of entry, by people who are not thinking about reporting. The software either makes the right answer the fast answer, or it does not.

    Chapter Twelve

    Ask How the Relationship Ends Before You Start It

    The problem

    Exit terms are negotiated at the point of maximum weakness, which is the point at which you have already decided to leave.

    At that moment you have no leverage, a deadline, and a vendor with no commercial reason to make the process easy. Whatever the contract says is what you get.

    The point of maximum leverage is before signature, when you are a prospect and the vendor wants the deal. Almost nobody uses it, because discussing the end of a relationship while starting one feels awkward and nobody wants to sour a procurement.

    The average tenure of a practice management system is long, often ten years or more. That is precisely why the exit terms matter. Ten years of accumulated records is the most valuable asset the business holds, and the terms governing it were agreed in a document nobody has read since.

    The obligations that outlive the contract

    Clinical record retention periods run for years, and in some categories decades, beyond the point at which a patient stops attending. Those obligations attach to you, not to the vendor.

    This creates a problem that surprises people. When you leave a system, you may still be legally required to be able to produce records held in it. If the export does not fully preserve them in a readable form, you are left paying a maintenance licence on a dormant system for an extended period, purely so the data remains accessible.

    That cost is real, it is ongoing, and it is entirely determined by how good the export is.

    Six things to establish in writing

    1
    Scope of the export
    Structured data, documents and images, communication history, audit logs, and financial transactions. Assume each is excluded unless it is explicitly named. Attachments and images are the most commonly omitted, and they are usually the bulk of the volume.
    2
    Format and structure
    Whether you receive a relational export with intact keys, a set of flat files, or a pile of PDFs. A PDF of every patient record satisfies a literal reading of "we will export your data" and is close to useless for migration.
    3
    Cost and who performs it
    Some agreements include one export. Some charge a professional services rate. Some charge per record. Establish the number, or at least the basis for it, before you sign.
    4
    Timeframe
    How many working days from request to delivery, and whether that clock starts before or after your notice period ends.
    5
    Post-termination access
    Whether read-only access is available after the contract ends, for how long, and at what cost. This is the provision that determines whether you can meet retention obligations without paying full licence fees.
    6
    Notice period and renewal mechanics
    Automatic renewal terms, the notice window, and whether missing it by a week commits you for another year. Also worth checking is whether there is a price escalation clause and what it is indexed to.

    Three further questions worth asking

    What happens if the vendor is acquired or ceases trading. Source code escrow is the traditional answer and is rarely practically useful for hosted software. A data escrow arrangement, or a contractual commitment to a final export in an insolvency scenario, is more relevant.

    Where the data physically sits, and who the sub-processors are. Messaging, document storage, backup and analytics are frequently handled by third parties. Each one is a separate export question and a separate data protection question.

    Whether the vendor asserts any rights over derived or aggregated data. Some agreements permit the vendor to use anonymised data for benchmarking or product development. This may be entirely acceptable to you. It is better to know.

    How to test it

    Ask what the last three exits cost
    Vendors know this number. How willingly they share it is informative in itself.
    Ask for a sample export file
    From a real customer who has left, anonymised. Look at the structure rather than the volume.
    Have the exit clauses read by someone who has run a migration
    Not only by a lawyer. The person who has done a data migration will spot the omission that the legal review will not.
    The bottom line

    The exit terms are the only part of a software contract that determines what you own at the end of it. They are cheapest to negotiate at the moment you are least interested in reading them.

    This guide pairs with the companion piece on preserving appointment history during migration, which covers what happens once the export is in your hands.

    Chapter Thirteen

    Don't Lose the Appointment History When You Change Practice Management Software

    The problem

    Most migrations get the clinical record right. Charts, notes, medications, documents, images. PMS migrations are good at this, and it is table stakes.

    Appointment history is where migrations can quietly fail. The chart comes across. The record of how the patient actually used your practice does not.

    You can spot it in about two minutes. Open the new system after go-live and pull appointment volume by month for the last three years. If there is an enormous spike in the month you switched, the history did not migrate properly.

    Ten thousand appointments all dated the same week means every historical visit was stamped with the import date instead of the date it happened.

    What you are trying to keep

    A timeline, not a list.

    In your current system you can look at any week from last year and see who came in, who they saw, what they came in for, when they came in, and who never showed up. That view is the patient journey and clinic room utilisation. It is essential data.

    A bulk import gives you a stack of appointment records sitting on a patient chart with no usable dates. The data is technically present, but it is not useful.

    Five things to work through before you migrate

    1
    Separate the appointment date from the import date
    Every appointment has at least two dates in a database: when the visit happened and when the record was created. Migrations often write the import date into both fields. Confirm in writing that the original appointment date and time carry over untouched, and that the import timestamp is stored somewhere else. This is the single biggest cause of a flattened history.
    2
    Bring the details, not just the slot
    Knowing someone came in on a Tuesday is not useful on its own. You need the appointment type, the reason for the visit, the provider, the location, and the duration. Without those fields you cannot tell a six-month recall from an emergency visit, and you cannot see which providers a patient has an established relationship with.
    3
    Keep the status
    Completed, cancelled, no-show, rescheduled, and who cancelled it. Many migrations import everything as completed because it is simpler. You then lose your no-show history, your cancellation patterns, and your ability to identify unreliable attendance before you book a long slot.
    4
    Confirm historical appointments show up on the calendar, not just the chart
    This is a separate question from whether the data migrated, and it gets missed. Some systems will accept historical appointment data but only render it as a list on the patient record. Ask the vendor directly: if I open the calendar for a date twelve months before go-live, will I see the appointments that were booked that day? Get the answer before you sign, not during testing.
    5
    Handle the appointments that have not happened yet
    Future bookings, recurring series, and anything booked in the old system for a date after cutover. These need to arrive as live, editable appointments that trigger reminders, not as static historical rows. Agree the cutover date and the freeze window for new bookings early.

    How to test it

    Month-by-month volume
    Pull total appointments per month for the last three years from both systems and compare. The two lines should sit on top of each other. Any spike or gap is a possible failure mode.
    Pick a random past week
    Open the same week in both systems and compare the calendar side by side. Same patients, same providers, same times, same appointment types.
    Spot-check twenty patients
    Take a mix: a long-standing patient, a lapsed patient, a frequent no-show, a recent new patient. Walk their full history in both systems and confirm it matches.
    The bottom line

    The medical record is a baseline requirement under duty of care. The appointment history is the commercial intelligence that you don't want to lose.

    Clinic ops · Systems

    Runs alongside your clinic. Not instead of it.

    Questions, edits, or anything you'd like us to adapt — write to team@coherenthealthcare.com.

    See how Coherent runs this for you →