Skip to content
Small robotic builders connect product cards, a purchase document, a treatment plan graph, an appointment calendar, and counseling and notification signals on one workbench
The system that sells a product and the system that preserves a visit commitment have different boundaries. A clinic appointment service must connect them before one patient’s purchases can become a reliable care journey.

When a clinic appointment service starts as “pick a product and save a time on the calendar,” it hides the work between a product and a visit. An event product may represent one treatment available today. A multi-visit product represents several future visits. A package groups multiple treatments, dependencies, and resource requirements. Customer counseling needs to know whether the commitment was kept, delayed, or offered again.

This prologue follows one patient, Patient A, and maps the facts that move from the product team to the appointment service, then to customer counseling, notifications, and statistics consumers. Instead of listing implementation features, it asks one question first: “Who owns this fact?” The article uses four fact-status labels.

LabelMeaning
Current implementationA merged capability or contract confirmed in the observed develop source
Approved designAn approved contract that may still be a follow-up implementation scope
Awaiting operationsCode or design exists, but canary, backfill, or production validation remains
RoadmapA planned follow-up that is not a currently available feature

Why a purchase is not a visit commitment yet

Section titled “Why a purchase is not a visit commitment yet”

Suppose Patient A buys the following products from the same clinic. We keep the scheduling characteristics and omit real product names and prices.

StepPatient A’s eventBusiness meaningWhat the appointment service does next
1Buys a same-day event productA benefit usable once within a defined windowReceive the purchase fact and product version so it can be interpreted as a schedulable obligation
2Adds a multi-visit productA contract fulfilled over several visitsCreate a plan that tracks each remaining visit
3Buys a package of treatmentsA BOM fulfilled in one or more visitsPreserve items, dependencies, and required resources in the plan
4Requests a preferred dateA patient preference or scheduling proposalCalculate candidate times and a temporary hold
5Agrees to the time and itemsA visit commitment between patient and clinicRecord consent and a policy snapshot with the confirmed visit
6Checks in and receives part of the careAn event at the clinicKeep appointment facts separate from clinical completion and emit follow-up clues

Collapsing the three purchases into one appointment looks simple at first. But the one-time event benefit, the third visit of the multi-visit product, and one item in the package have different remaining obligations and dependencies. If Patient A receives items from several purchases in one visit, that still does not mean “three purchases became one appointment.” Only the items agreed for that visit belong in its AppointmentItem records, while each purchase plan remains traceable.

The important distinction A purchase is the commercial fact of what the patient acquired the right to use. An appointment is the operational commitment about when, which items, and which resources will fulfill it.

How product information enters the appointment service

Section titled “How product information enters the appointment service”

The product team owns product definitions, BOMs, scheduling rules, and product versions. The appointment service does not become the owner of product prices or sales copy. It needs a contract that can answer which product version created which scheduling obligation at the time of purchase.

The shortened flow looks like this:

Product catalog definition ──projection/event──> catalog view read by scheduling │ └─ commerce contract ──purchase-source-qualified event──> AppointmentPlan

Putting only a product identifier in the purchase event and looking up the current catalog later is dangerous. A changed treatment item or visit rule could silently change the meaning of an old purchase. The plan therefore needs enough of the time-specific interpretation to reproduce the obligation:

  • the approved product version and catalog hash
  • the items and repeat count available to scheduling at purchase time
  • correlation and idempotency information for the external contract
  • a purchase reference for a later refund or cancellation

This does not make the appointment service the owner of the product source. The product and commerce systems remain the sources of record; scheduling preserves the interpretation it needs to reproduce its own plan. If a purchase event arrives twice or a catalog projection is briefly late, inbox/outbox and idempotent handling must prevent two plans for one purchase.

That boundary is described in the Appointment Plan design. Receiving the purchase event still does not mean that an empty slot or a device has already been occupied.

The Current implementation boundary of AppointmentPlan represents the scheduling obligations created by one purchase. Its PlannedTreatment entries separate repeat visits and package items so remaining work stays visible. The product types make the difference concrete.

Product typeWhat the plan keepsThe scheduling question
Event productOne PlannedTreatment, validity window, and use conditionsIs a date and clinical resource available for this benefit?
Multi-visit productPlannedTreatment 1..N with order and remaining countDid the previous visit and required interval complete?
Package productItem plans, dependency/DAG, and per-item resourcesWhich items fit this visit and which must move to a later visit?

A plan may exist before a calendar slot, but it is not the confirmed commitment on that calendar. If the full package cannot fit in one visit, some items can be proposed now while the remaining obligations stay in the future plan. Booking the second visit of a multi-visit product does not guarantee the same doctor or equipment for its third visit.

Purchase event └─> AppointmentPlan └─> PlannedTreatment 1..N ── dependency/DAG ▲ │ fulfills / attempts Appointment ──> AppointmentItem 1..N ──> ResourceAllocation 1..N

Patient A's actions move through appointment-service processing into PurchaseCompleted, AppointmentPlanCreated, AppointmentCreated, and TreatmentFulfillmentEvent
The upper lane shows an intentional action or observed visit behavior; the lower lane shows an objective event committed by the appointment service. A purchase creates a plan, not an immediate slot or clinical completion.

Keeping these axes separate prevents the overreach of “the patient bought it, so reserve every future slot now.” AppointmentPlan represents obligations to fulfill. Appointment represents the time, resources, and consent of an actual visit. AppointmentItem connects that visit to the plan entries it attempts to fulfill, while ResourceAllocation records the resources considered for that visit.

When the plan becomes a patient-and-clinic commitment

Section titled “When the plan becomes a patient-and-clinic commitment”

When Patient A requests a date, the appointment service calculates candidates and may hold a resource for a limited time. It must not label that temporary state as the final visit.

  1. PROPOSED — a visit proposal that may satisfy the plan and operating constraints.
  2. HELD — a bounded hold that protects a candidate from competing bookings for a limited period.
  3. CONFIRMED — the visit commitment agreed by the patient and clinic for its time, items, and policy.

CONFIRMED contains more than a date. The system must be able to reproduce the plan revision and catalog hash behind the proposal, the policy snapshot and capacity ceiling applied, and the version of the patient’s consent. Otherwise a later product or clinic-policy change can silently rewrite an agreement that was already made.

The approved design separates this agreement axis as AppointmentCommitment instead of mixing it with clinical state. The agreement about when an item will be fulfilled and the fact about what care actually finished need different histories and change rules.

Read this distinction as an Approved design boundary for multi-item visit commitments. Do not present the proposal/hold/consent model and an operational rollout as the same thing.

The same protection applies when a customer profile changes. The profile-change reassessment boundary keeps the raw profile in CRM and sends scheduling only an opaque reference, fingerprint, and minimal reassessment outcome. Reassessment may revisit PROPOSED and HELD, but a valid hold and the snapshot, consent, and resource occupancy of CONFIRMED must be protected.

Source-of-record and responsibility boundaries

Section titled “Source-of-record and responsibility boundaries”

Several teams may read facts about Patient A’s purchase, but their source-of-record data and responsibilities remain different. The appointment service receives only the facts it needs and emits objective appointment facts in return.

DomainSource-of-record dataFact entering schedulingScheduling responsibility
Product management/developmentProduct definitions, BOMs, scheduling rules, product versionsCatalog projection or synchronization eventPreserve the projection needed to interpret the purchase-time version
Commerce/purchasesPurchase contracts, add-ons, refundsPurchase-source-qualified purchase and refund eventsCreate one plan per purchase and reflect future scheduling obligations
Appointment servicePlans, visit commitments, resources, policy snapshotsPlan and appointment events read by other servicesOwn schedule, capacity, consent, state, and history
Clinical/treatmentTreatment start, completion, and partial completionCompletion eventReflect completed items and their effect on future obligations
Customer counseling/CRMCustomer profile, assessment, counseling, complaints, compensationMinimal profile outcome or appointment objective factProvide facts for change proposals and counseling handoff
NotificationContact, language, consent, delivery historyAppointment event and outbox resultKeep appointment transactions separate from channel delivery
Statistics/external consumersProjections, current status, SLA metricsAppointment event and schema contractNever transfer ownership of the appointment source to a projection
Product, commerce, clinical, and CRM source-of-record services provide facts to the appointment service, which emits objective events to notification and statistics consumers
Each source-of-record service decides its own facts. Scheduling owns the plan, visit commitment, capacity, policy snapshot, state, and history; notification, CRM, and statistics consume appointment facts without becoming the appointment source of truth.

Patient A’s arrival at the clinic cannot be described by one state shared by every team. We need to separate the objective facts preserved or emitted by scheduling from the business results judged by other services.

EventSource of recordWhat scheduling providesWhat scheduling does not own
Check-in and attendanceClinic attendance/clinical systemAttendance event linked to the appointmentThe source clinical record
Partial or full treatment completionClinical/treatment systemObjective fact for completed and remaining itemsThe clinician’s judgment
Delay, interruption, rescheduling proposalAppointment historyFacts such as AppointmentInterrupted, AppointmentDelayExceeded, and RescheduleOfferedApology, compensation, or refund decisions
Counseling and complaintCRM/customer counselingAppointment facts and correlation for a counseling handoffCounseling content and compensation policy
Refund and purchase cancellationCommerce/paymentPurchase reference to find the affected planRefund approval and balance settlement
Reminder and result notificationNotification serviceDurable notification outbox and appointment eventSource contact, language, consent, and external channel state
Statistics and SLAExternal consumer/statistics projectionContracted event and schemaThe projection’s final read model

Notification is not a direct SMS call inside the appointment transaction. Scheduling records a durable outbox entry; the notification service reads contact, language, and consent at send time and delivers through a retryable channel. This delivery boundary must be labeled Awaiting operations until its rollout evidence is complete.

Statistics consumers likewise do not own the appointment source tables. They receive events under a schema contract and build their own projection. Until backfill and production readiness are complete, the article should not call this a finished statistics service.

Rules when several services read the same fact

Section titled “Rules when several services read the same fact”

Product, commerce, scheduling, clinical care, CRM, notifications, and statistics can all read facts about Patient A without creating one giant customer record. Four rules keep their boundaries intact:

  1. Time-specific snapshots — purchases and confirmed commitments must reproduce the product version, policy, and consent that existed at the time.
  2. Objective events — scheduling emits what was delayed and when; CRM uses that fact to decide counseling and compensation.
  3. Durable outbox — a temporary notification or consumer failure must not erase the fact that a visit was confirmed.
  4. Projection ownership — search and statistics models can provide a useful current view without becoming the appointment source of truth.

This does not mean hiding no-show or VIP-priority policy inside scheduling. Deciding what restriction or additional confirmation should apply to a patient who repeatedly misses appointments, and how VIP convenience should be balanced against a fair queue, belongs to clinic operations and customer counseling/commerce. Scheduling can preserve objective inputs such as confirmed commitments, cancellation reasons, delay counts, and rescheduling proposals. It must not promise a permanent blacklist or the cancellation of an existing confirmed appointment as a current feature. Later policy articles should start by checking the same ownership boundary.

Reading current implementation and future design separately

Section titled “Reading current implementation and future design separately”
StatusExample in this prologueThe question to keep asking
Current implementationThe foundation that creates a plan from a purchase event and preserves current appointment state/historyCan the observed source and tests confirm this contract?
Approved designExtending plan items into multi-item visits and consent-bound commitmentsAm I mistaking an unimplemented boundary for an operating feature?
Awaiting operationsNotification outbox canary and statistics backfill/production readinessHas delivery and recovery been verified in operation?
RoadmapPatient portal and mobile channelHave I claimed a patient channel that is not public yet?

These labels are not decorative. Product catalogs, commerce contracts, attendance, and counseling records change at different speeds. Quoting a design spec as if it were a current API, or treating a projection as the source, turns Patient A’s journey into the wrong commitment.

This article drew the map. The next article moves closer to product versions and purchase snapshots: why Patient A’s v1 snapshot and confirmed visit stay intact when product v2 is published, and how future items may enter a new revision only after explicit approval and consent. After that, the event-product article follows the first proposal from a purchase to a visit commitment. Repeated delivery remains a short technical boundary rather than the main business conflict.

These companions explain the source Markdown design; they do not replace it. The published snapshot is pinned to e9743337cdc1bf499af68e4e94a9f06b2833d838. If the explanation and implementation drift, check the source design and current source first. This prologue does not add a new companion route.

Comments

Leave a note or reaction with your GitHub account.