# Using the client portal (/en/docs/client-portal)



# Using the client portal [#using-the-client-portal]

The MediSync client portal at
[app.medisync-solutions.com](https://app.medisync-solutions.com) lets you
manage your account and your clinic relationship in one place.

## What's live today [#whats-live-today]

* **[Register](/en/docs/client-portal/register)** — create an account when
  your clinic invites you or when you're a walk-in.
* **[Sign in](/en/docs/client-portal/sign-in)** — sign in with email + password
  or Google.

## Coming soon [#coming-soon]

* **[Upcoming appointments](/en/docs/client-portal/upcoming-appointments)** —
  view the next visits scheduled for you.
* **[View records](/en/docs/client-portal/view-records)** — download your
  medical records, invoices, and receipts.

For anything not yet in the portal — booking, cancelling, asking a
clinical question — contact your clinic directly. See your clinic's
profile on the portal for their phone and email.

***

**Note.** The features marked **Coming soon** are in active development.
Until they ship, each page has a placeholder pointing to the alternative
(call the clinic, email the clinic).


# Register (/en/docs/client-portal/register)



# Register a client account [#register-a-client-account]

There are two paths to a client account: your clinic invites you, or
you self-register.

## Path A — Your clinic invites you (recommended) [#path-a--your-clinic-invites-you-recommended]

1. After your first visit, your clinic sends a **Welcome to MediSync**
   email to the address they captured at intake.
2. Click **Activate my account**.
3. Set a password (at least 12 characters).
4. Enter the 6-digit verification code that MediSync sends you.
5. You're in — land on your clinic's client portal home.

The activation link expires after seven days. If yours has expired,
call the clinic and ask them to resend.

## Path B — Self-register [#path-b--self-register]

If your clinic supports walk-in self-registration, visit
[app.medisync-solutions.com/sign-up](https://app.medisync-solutions.com/sign-up).

1. Enter your name, phone, email, and a password.
2. Select your clinic from the dropdown — or paste the clinic's
   **sign-up link** shared on their website or a flyer.
3. Verify your email.

Your account is created but you'll only see clinic-specific data after
staff link it to a client record (usually at your first visit).

## What if I already have an account at another clinic? [#what-if-i-already-have-an-account-at-another-clinic]

Each MediSync account belongs to one clinic at a time. If you're
switching clinics, sign in to the old clinic's portal and choose
**Transfer my account** under settings, or ask the new clinic to help.

## Having trouble? [#having-trouble]

* **Email already registered.** You may already have an account. Try
  [Sign in → Forgot password](/en/docs/client-portal/sign-in) first.
* **No invitation email.** Check spam, then call the clinic and ask
  them to resend to the correct address.
* **Verification code not arriving.** Codes can take a minute; wait,
  then request a new one.

See [Troubleshooting](/en/docs/reference/troubleshooting) for more
fixes.


# Sign in (/en/docs/client-portal/sign-in)



# Sign in to the client portal [#sign-in-to-the-client-portal]

Open [app.medisync-solutions.com](https://app.medisync-solutions.com)
and you'll land on the sign-in page.

## With email and password [#with-email-and-password]

1. Enter your email.
2. Enter your password.
3. Click **Login**.

If you have two-factor authentication enabled, MediSync asks for a
6-digit code from your authenticator app after the password step.

## With Google [#with-google]

Click **Login with Google** on the sign-in page and pick the Google
account tied to your registered email. The first time you use this,
MediSync links the Google account to your client account.

## Forgot your password [#forgot-your-password]

1. Click &#x2A;*Forgot your password?** on the sign-in page.
2. Enter your email.
3. Check your inbox for a reset link (it expires after a short window).
4. Click the link, enter a new password, confirm it.
5. You'll be taken to the sign-in page to sign in with the new
   password.

If the email doesn't arrive:

* Check your spam folder.
* Confirm the email you entered is exactly the one your clinic has
  on file. Typos are the most common cause.
* If you're not sure which email is on your account, call the clinic
  and ask them to confirm.

## Staying signed in on shared devices [#staying-signed-in-on-shared-devices]

On a public computer (a clinic kiosk, an internet café), sign out when
you're done — click your name in the top-right → **Sign out**. If
possible, use **Private / incognito mode** so nothing about your visit
is cached locally.


# Upcoming appointments (/en/docs/client-portal/upcoming-appointments)



# Upcoming appointments [#upcoming-appointments]

> **Coming soon.** Client-side appointment viewing is in active
> development. Until it ships, your clinic will confirm appointments
> via SMS and email.

## What will be live when this ships [#what-will-be-live-when-this-ships]

* A list of your upcoming appointments with date, time, practitioner,
  and location.
* The ability to confirm you'll attend (your clinic may require this
  to hold your booking).
* A calendar-file download to add the appointment to Google / Apple /
  Outlook calendar.
* A link to the clinic's **Cancel / reschedule** policy.

## What you can do today [#what-you-can-do-today]

* **Check SMS/email reminders.** Your clinic sends a confirmation as
  soon as your appointment is booked and a reminder 24 hours before.
* **Call the clinic** to confirm, cancel, or reschedule. Use the
  **About your clinic** section in the portal for their phone number.

***

We'll update this page as the feature rolls out.


# View records (/en/docs/client-portal/view-records)



# View your records [#view-your-records]

> **Coming soon.** The client-side records download is in active
> development. Until it ships, request copies directly from your
> clinic.

## What will be live when this ships [#what-will-be-live-when-this-ships]

* A timeline of your completed visits with a PDF summary per visit.
* Your invoices with paid / outstanding status.
* Receipts you can forward to your insurance provider.
* A one-click **Export everything** bundle for any client who wants
  a complete copy of their file.

## What you can do today [#what-you-can-do-today]

* **Call or email the clinic** to ask for records. Most clinics can
  provide them the same day.
* **In-person.** Ask at reception — they can print or email a copy
  on the spot.

Your records are your property. Clinics are legally required to
provide copies on request (timelines vary by jurisdiction).

***

We'll update this page as the feature rolls out.


# Analytics (/en/docs/clinic-admin/analytics)



# Analytics [#analytics]

**Organization → Analytics** gives you a single dashboard summarising
what's happening across the clinic. It's scoped to whatever modules you
have enabled — disabling **Billing** hides the revenue block, disabling
**Appointments** hides the appointment charts, and so on.

## Time range [#time-range]

The date range selector at the top applies to every widget on the page.
Common presets:

* **Today** — live snapshot, useful first thing in the morning.
* **This week / This month** — compared to the previous period.
* **Quarter / Year** — for trend lines.
* **Custom** — pick an arbitrary start + end date.

## What you see [#what-you-see]

* **Clients** — new clients in the period, total active clients.
* **Appointments** — booked, completed, no-show, cancelled; trend chart.
* **Revenue** — invoiced, collected, outstanding (requires Billing module).
* **Occupancy** — % of available practitioner slots actually booked.
* **Top practitioners** — ranked by appointment count.

Each card has an **Export CSV** action in its menu for deeper analysis in
Excel / Google Sheets.

## Sharing access [#sharing-access]

Analytics is admin-only by default. To give a non-admin person access
(e.g. a clinic manager who isn't technically an admin):

1. Open **Organization → Staff → Active**.
2. Click their row, scroll to **Permissions**.
3. Enable **View analytics**.

They'll see the Analytics page in their sidebar on next sign-in.

## Caveats [#caveats]

* Numbers are computed in your clinic's timezone (set in
  [Organization setup](/en/docs/clinic-admin/organization-setup)).
* "No-show" counts include cancellations within the cancellation window,
  not just silent no-shows. See
  [Receptionist → Cancel / reschedule](/en/docs/receptionist/reschedule-cancel).
* Revenue is **invoiced** (not accrued). If you invoice on completion
  rather than on booking, charts lag real activity by a day or two.

***

**In-app help:** no dedicated in-app article yet — the analytics
dashboard's own widgets have contextual tooltips.


# WhatsApp messages from automation rules (/en/docs/clinic-admin/automation-messaging-providers)



# WhatsApp messages from automation rules [#whatsapp-messages-from-automation-rules]

Automation rules can send a WhatsApp message as an action — for example, "when a new client is
added, send them a WhatsApp welcome message." This page covers turning that on and, optionally,
sending it from your own WhatsApp Business number instead of MediSync's shared one.

<Callout>
  This needs both the **Automations** module and the **WhatsApp** module active. Enable them under
  **Organization → Settings → Modules** if you don't see them — see [Modules](/docs/clinic-admin/modules).
</Callout>

## Do I need to do anything? [#do-i-need-to-do-anything]

No. If you leave this alone, WhatsApp messages from your automation rules still send — just
through MediSync's own WhatsApp sender rather than a number your clients recognize as yours. You
only need the steps below if you want messages to come from your own WhatsApp Business number.

## Adding your own WhatsApp sender [#adding-your-own-whatsapp-sender]

Go to **Automations → Settings → Provider credentials** and add a credential for the **WhatsApp**
channel:

1. Enter the **phone number ID** and **access token** for your WhatsApp Business number (from
   Meta's WhatsApp Business Platform — your integration partner or Meta Business Manager gives you
   these).
2. Add a **sender identity** — a label for the number, e.g. `+20 123 456 7890`, so you can tell
   your credentials apart in the list. This is not secret and is shown as-is.
3. Save. It becomes your organization's **default** WhatsApp sender immediately.

<Callout type="warn">
  Your access token is encrypted and is **never shown again** after you save it — not to you, not
  to MediSync staff. Editing the credential without retyping it is safe: leaving the secret field
  blank keeps the saved value.
</Callout>

You can add a credential for **SMS** or **Email** in the same place — those channels are reserved
for future automation actions and don't affect anything today; only **WhatsApp** is live.

### Removing a sender [#removing-a-sender]

Delete a credential from the same list at any time. Automation rules using that channel fall back
to MediSync's own sender immediately — a rule never fails or pauses because a credential was
removed.

## The "Send WhatsApp message" action [#the-send-whatsapp-message-action]

When building or editing an automation rule, **Send WhatsApp message** is available as an action
alongside **Notify the owner**, **Send email**, and **Send SMS**. It sends to the client the rule's
trigger fired for (e.g. the client who was just created, or whose appointment just completed) —
or, if you choose, to the organization owner instead.

A rule using this action needs a client with a WhatsApp-reachable phone number on file; if the
triggering record has no phone number, that run's WhatsApp step is skipped rather than failing the
whole rule.

See [Get alerted before stock expires](/docs/clinic-admin/stock-expiry-alerts) for a walkthrough of
building a rule end to end — the same **New rule** flow applies to any trigger and action
combination, including a WhatsApp welcome message on **Client created**.

## Checking what was sent [#checking-what-was-sent]

**Automations → Runs** shows every time a rule has fired, including whether its WhatsApp step
succeeded, and lets you re-run one that failed. This page doesn't yet show WhatsApp-specific
delivery detail (message status per recipient) the way [SMS providers and
fallback](/docs/clinic-admin/sms-providers) does for SMS — that level of detail is on the roadmap.


# Billing & plans (/en/docs/clinic-admin/billing-plans)



# Billing & plans [#billing--plans]

**Organization → Settings → Billing** is where you pick a plan, see your
invoices, and manage how you pay.

## The five billing tabs [#the-five-billing-tabs]

Billing is split into five tabs. Whichever one you're on, a banner across
the top shows your trial or past-due status.

| Tab             | What's on it                                                        |
| --------------- | ------------------------------------------------------------------- |
| **Overview**    | Your current plan and monthly fee, and the charge building up now   |
| **Payment**     | The cards we charge                                                 |
| **Invoices**    | Every closed billing period, with a Pay button on anything unpaid   |
| **Credits**     | Redeem a coupon, request a credit, and see everything credited      |
| **Preferences** | Your spend alert threshold, and whether we charge your card for you |

## Plan tiers [#plan-tiers]

MediSync offers three baseline plans and a free trial. The feature matrix
varies; the most up-to-date list is in the **Change plan** dialog in-app.
Here's the broad shape:

| Plan        | Who it's for                                       |
| ----------- | -------------------------------------------------- |
| **Trial**   | Exploring MediSync for 14 days, no card required   |
| **Starter** | Small clinics, one practitioner, essential modules |
| **Clinic**  | Most multi-practitioner clinics                    |
| **Group**   | Multi-site organizations and clinic chains         |

Each plan is billed **monthly** or **yearly**. Yearly billing saves around
15 % and is a single invoice per year.

## Free-trial organization limit [#free-trial-organization-limit]

You can have at most **2 organizations on a free trial at the same time**.
This only applies to trials — organizations on a paid plan don't count
toward the limit, so it's really a cap on how many trials you can run at
once, not on how many clinics you can own.

If you try to create a third trial organization, MediSync blocks it and
shows the limit on the **Create organization** screen. To start a new one:

* **Upgrade** one of your existing trial organizations to a paid plan
  (frees a slot immediately), or
* **Archive** a trial organization you no longer need from
  **Organization → Settings**.

## Usage & limits [#usage--limits]

**Organization → Administration → Usage & limits** shows two things, for
clinic admins and owners only:

* **This period** — how much your organization has used each metered
  module so far in the current billing period (e.g. SMS messages sent),
  what your plan includes, and the module's cap with where that cap comes
  from: your plan, or a limit set specifically for your organization. A
  module with no cap shows **No limit**.
* **Limits** — your lifetime entity limits (clients, staff members,
  branches, and the rest), each shown against its cap, or **No limit** if
  none is set. File storage is shown as a size (for example, 5.00 GB of
  10.00 GB); everything else is a count.

Limits come from your **plan**: each plan tier includes its own set of
lifetime limits, and every organization on that plan gets them automatically
— you don't need anyone to set them up for you, and they take effect the
moment you're on the plan, not just when you first subscribe to it. If
MediSync sets a limit for your organization specifically (rather than as
part of your plan), that shows the same way and simply takes priority over
the plan's number.

**Reaching a limit only blocks adding more — it never removes or disables
anything you already have.** If your clinic is over a limit (for example,
after a downgrade), your existing clients, staff, pages, or posts stay
exactly as they are; you just can't add another one of that kind until
you're back under the limit or you upgrade. Freeing up room — for example,
archiving a client or removing a staff member — brings you back under the
limit right away.

This page is read-only — it shows what's configured, it doesn't let you
change it. If you're approaching a limit and need it raised, contact
support or upgrade your plan.

## Choose or change a plan [#choose-or-change-a-plan]

1. Open **Organization → Settings → Billing → Overview**.
2. On the **Current cost** card, click **Change plan**.
3. Each plan is a card. Plans you can upgrade to show a **Choose** button;
   plans below your current tier show a **Downgrade** button.
4. Click the button for your target plan, and the confirmation shows:
   * The new monthly/yearly price.
   * Any pro-rated charge or credit for the current period.
   * When the change takes effect (immediately for upgrades, at the end of
     the current period for downgrades).
5. Add a card on the **Payment** tab first if you don't have one on file,
   then click **Confirm**.

## Add-ons [#add-ons]

Some modules are paid add-ons, priced per month. Enabling an add-on
charges a pro-rated amount for the rest of the current period and then
includes it on each renewal — it shows up in the **Upcoming charge** card
on the **Overview** tab as soon as it's on.

Disabling an add-on takes effect at the end of the current period — you
keep access until then.

## Invoices [#invoices]

The **Invoices** tab lists every invoice MediSync has issued. For each
one:

* **Status** — paid, open, past due, refunded.
* **Download PDF** — stamped invoice for your accountant.
* **Retry payment** — only on past-due invoices; re-tries the card on file.

## Payment methods [#payment-methods]

Add, replace, or remove cards on the **Payment** tab. Only clinic admins
can see it.

Cards are processed by whichever payment provider is resolved for your
organization's country (Stripe in most countries; Kashier for Egypt) — the
card lists this next to the section title. If your organization is in
Egypt, see [Payments in Egypt (Kashier)](/docs/clinic-admin/egypt-payments)
for the Kashier-specific walkthrough.

## Credits and coupons [#credits-and-coupons]

The **Credits** tab is where money comes back to you:

* **Redeem a coupon** — apply a promo code at any time. The discount
  becomes a credit that your next invoice picks up automatically.
* **Credit requests** — ask for a credit on a specific invoice and say
  why. A MediSync admin reviews it and, if approved, books the credit to
  your account.
* **Credit & adjustment history** — every credit, write-off, and one-off
  charge that's been booked against you.

## Spend alerts and automatic billing [#spend-alerts-and-automatic-billing]

Both switches live on the **Preferences** tab:

* **Budget warning** — email every owner once the projected spend for the
  current period reaches an amount you set. It's a heads-up only; nothing
  is paused or cut off.
* **Automatic billing** — charge your default card as soon as an invoice
  is issued. With it off, you pay each invoice yourself from the
  **Invoices** tab.

## Suspended accounts [#suspended-accounts]

If payment fails three times, MediSync automatically suspends the
organization. Staff can't sign in until the outstanding invoice is paid.
Pay the invoice and reactivation happens within a minute.

***

**In-app help:** `admin_billing_current_cost`,
`admin_billing_plan_selection`, `admin_billing_plan_tier`,
`admin_billing_interval`, `admin_billing_addon_modules`.


# Managing blog posts (/en/docs/clinic-admin/blog-posts)



# Managing blog posts [#managing-blog-posts]

The Blog page is the home for everything you publish from your clinic.

## Create a new draft [#create-a-new-draft]

Click **New draft** in the top right of the Blog page. A new untitled
draft opens directly in the editor — type a title, write your content,
and it saves automatically as you go. Drafts stay private until you
publish them.

## Write with the editor [#write-with-the-editor]

The post body is a document-style editor — no toolbar to hunt through.
Three shortcuts cover most of what you need:

* **Insert blocks with `/`.** On an empty line, type `/` to open a menu
  of blocks: headings, bullet and numbered lists, a quote, a code block,
  a divider, and images. Keep typing to filter (for example `/h1`), then
  press Enter or click to insert.
* **Format with the selection bar.** Select any text and a small bar
  appears above it for **bold**, *italic*, underline, strikethrough,
  inline code, and adding a link.
* **Reorder by dragging.** Hover over a block and grab the handle on its
  left edge to drag it to a new position.

Empty lines show a faint "Type '/' for commands…" hint. To add an
image, use the `/` menu and paste the image's public URL. Everything you
type autosaves; there's no separate Save button for the body. Long
titles wrap onto multiple lines instead of being cut off.

## Publish, schedule, and update [#publish-schedule-and-update]

The editor's right-hand panel holds everything about getting a post
live. The current state shows at the top (Draft, In review, Scheduled,
Published) next to the autosave indicator.

* **Publish now** sends the post live immediately.
* **Schedule for later…** reveals a date-and-time picker; the post goes
  to **Scheduled** and publishes automatically at that moment. The
  go-live time also shows under the post's status in the list and on the
  **Goes live** row in the editor's Details.
* **Submit for review** (for contributors) hands the draft to an editor,
  who can **Approve & publish** or send it back.

### Updating a post that's already live [#updating-a-post-thats-already-live]

Editing a published post &#x2A;*autosaves to a draft copy — it does not change
the live page yet.** When you're ready, click **Publish changes** to push
your edits to the public site. A reminder under the button says so. Use
**Unpublish** to pull a post off the site (it returns to Draft; you can
publish it again later).

### View the live post [#view-the-live-post]

On a published post, click **View live post** in the status panel to open
its public page in a new tab.

## Find posts quickly [#find-posts-quickly]

Use the **Search** box to filter posts by title. Combine it with the
labelled &#x2A;*Status:** dropdown (Draft / In review / Scheduled / Published
/ Archived) or &#x2A;*Type:** dropdown (Article / Video / Case study / News)
to narrow the list. Scheduled posts show their go-live date and time, and
archived posts appear dimmed. URLs are shareable — copy and send a
teammate a filtered view.

## Per-post actions [#per-post-actions]

Click the more-actions icon (three dots) on any row:

* **Edit** opens the post in the editor.
* **Publish** is available for drafts, scheduled posts, and posts in
  review.
* **Archive** removes the post from the public site. Archived posts
  are not deleted — change their status back to bring them online
  again.

## Bulk archive [#bulk-archive]

If you have permission to delete posts, each row gains a checkbox.
Select the rows you want to archive in bulk and click **Archive
selected**. You'll be asked to confirm. The bulk action archives each
post in parallel and tells you exactly how many succeeded.

## Organize with categories [#organize-with-categories]

Open **Categories** from the Blog menu to manage your editorial
categories. Type a **Label** and the **Slug** (the part that appears in
the URL) fills in automatically — edit it yourself if you want something
different. Drag the handle on the left of any row to reorder categories,
and use the pencil and trash icons to rename or remove one.

Assign categories to a post from the **Categories** panel in the editor:
its boxes are pre-ticked with the post's current categories, and ticking
or unticking one saves right away.

## On a phone [#on-a-phone]

The Blog works on small screens. The list becomes a stack of cards (with
the same row menu), and in the editor the main action — Publish, Submit
for review, or Publish changes — stays pinned to the bottom of the screen
so it's always within reach.


# Bookable resources & procedure roles (/en/docs/clinic-admin/bookable-resources)



# Bookable resources & procedure roles [#bookable-resources--procedure-roles]

Before the booking engine can offer a slot, it needs to know two things: **what
you have** (your resource catalogue) and **what each procedure needs** (its
procedure template). This page covers both, and the link between them.

## The resource catalogue [#the-resource-catalogue]

Open **Core → Resources**. Every bookable thing in your clinic lives
here, in one of four kinds:

| Kind          | What it covers                                              |
| ------------- | ----------------------------------------------------------- |
| **Doctor**    | Physicians                                                  |
| **Staff**     | Nurses, technicians, anesthetists, interpreters, chaperones |
| **Room**      | Consultation rooms, operating theatres                      |
| **Equipment** | Lasers, scanners, and other schedulable devices             |

Use the **kind** filter in the sidebar to narrow the list, and the search box
to find a resource by name.

### Adding a resource [#adding-a-resource]

1. Pick the **branch** the resource belongs to. The **Add resource** button
   stays disabled until you do — every resource is branch-scoped.
2. Click **Add resource** and choose the kind.
3. Fill in the form. Every kind needs a **name** and a **concurrency limit**
   (how many appointments it can hold at once — usually 1).

**Doctor** and **Staff** additionally require a **team member**. That link is
what connects the bookable resource to a real person in your organization, so
the **Create** button stays disabled until you pick one.

Doctors have optional **specialties** — pick as many as the doctor actually
practises, since a template requiring any one of them will then find them —
and staff an optional **staff role**. Both are pickers drawn from your
organization's managed lists (see
[Managing resource attribute lists](#managing-resource-attribute-lists)
below) rather than plain text boxes — you pick an existing entry, or type a
new one to add it to the list on the spot. Free text that doesn't match a
list entry is no longer accepted here: this is what makes the consistency
guarantee below actually hold, instead of just being good advice.

<Callout type="warn">
  Consistency here is not cosmetic. A procedure template can require, say, a
  doctor whose specialty is "Ophthalmology". Before this list existed, if half
  your ophthalmologists were recorded as "Ophthalmology" and half as
  "ophthalmology" or "Eye", the template only ever found the matching half —
  and the failure showed up as &#x2A;*"no available slots"** when someone tried to
  book, not as an error on the template. Picking from one shared list is what
  prevents that split from happening again.
</Callout>

Rooms take a **capabilities** picker — the same managed list, so you can
select several values, or type a new one and add it on the spot. A room's
**Sterile** flag is a separate checkbox, not a capability. Equipment takes a
**model** and **serial**, both still plain text.

### Changing a resource [#changing-a-resource]

Click **Edit** on any row in the resource list, or open the resource and use
the **Edit** button in its header. You can change the name, the concurrency
limit, the linked team member, and the kind-specific fields — including a
a doctor's specialties, so a resource entered with the wrong one can be
corrected rather than recreated.

Clearing a specialty or staff role is allowed: reopen the picker and click the
selected value again to deselect it, then save. A doctor with no specialties
at all is valid — they simply won't match a template that requires one.

Two things the edit form deliberately does not change: a resource's **kind**
and its **branch**. Both are structural — schedules, appointments and
templates are all anchored to them — so a resource that needs a different kind
or branch should be deactivated and replaced. Schedules and time off stay on
the resource's own page, not in this form.

<Callout type="warn">
  A brand-new resource has **no schedule**, and the booking engine only ever
  offers slots from a recurring schedule. Until you open the resource and add
  one, it will never be suggested — the catalogue flags these with a **No
  schedule** badge. Add the schedule as soon as you create the resource.
</Callout>

## Managing resource attribute lists [#managing-resource-attribute-lists]

Open **Core → Resource attributes**. This page holds the four lists staff
choose from when describing a doctor, room, or piece of equipment —
specialty, subspecialty, staff role, and capability. Keeping each list tidy
is what lets procedure templates actually find the right resources, rather
than silently finding none.

Pick a list from the sidebar on the left. Each list shows every
entry's **Name** (what staff see), **Identifier** (the fixed value your
resources and templates actually store — see below), whether it's currently
**in use**, and a status switch.

### Adding a value from inside a form [#adding-a-value-from-inside-a-form]

You don't have to come to this page to add a new specialty, staff role, or
similar — type it directly into the picker on the resource form (or a
procedure template's narrowing filters) and choose &#x2A;*Create "…"**. It's
added to the shared list immediately and selected on the spot. Values added
this way show up here too, so this page is also where you go to tidy up
anything that got added a little too casually.

### Renaming is always safe [#renaming-is-always-safe]

Editing a value's **Name** changes only how it's displayed — every resource
and procedure template already using it keeps working, unaffected, and
immediately shows the new wording everywhere it appears. That's because
what's actually stored on your resources and templates is the row's
**Identifier**, not the name, and renaming never touches the identifier.
Use this to fix a typo or clean up wording without worrying about breaking
anything currently in use.

### Deactivating vs. deleting [#deactivating-vs-deleting]

* **Deactivating** a value (the status switch) removes it from the picker
  for anything *new* — staff creating or editing a resource or template
  won't be offered it going forward. It changes nothing else: any resource
  or template already using it keeps working exactly as before, and still
  displays its name normally.
* **Deleting** a value removes it permanently, but only once nothing is
  using it. If any resource or procedure template still references it, the
  delete is refused and you're shown exactly how many resources and how many
  procedure requirements are still using it. Deactivate instead if you want
  to retire a value without hunting down every place it's used first.

<Callout>
  Prefer deactivating over deleting unless you're sure a value was created by
  mistake and never used. Deactivated values stay available for cleanup or
  reactivation later; deleted ones are gone.
</Callout>

<Callout type="warn">
  The **In use** count is fetched one row at a time, so a very long list can
  take a moment to fully populate. This doesn't affect accuracy — each count
  that appears is live — it's only a loading-speed note for organizations with
  unusually large lists.
</Callout>

## Procedure templates and roles [#procedure-templates-and-roles]

Open **Core → Procedure templates**. A template describes what a
procedure needs: how long it runs, which checks are required, and one
**requirement** row per role.

Each requirement row sets:

* **Role** — a label you choose, e.g. "Surgeon", "Assistant", "OR". The field
  suggests roles your clinic already uses elsewhere, grouped under *Already
  used in this organization*, plus a few common starters. You can still type
  anything you like — pick from the list where one fits, so the same job keeps
  the same name everywhere and your reports don't split "Surgeon" across two
  spellings.
* **Kind** — which kind of resource fills this role.
* **How many** — how many resources of this role each booking reserves.
* **Pre-buffer / post-buffer** — extra minutes the resource stays held before
  and after the appointment, for setup, cleaning or turnaround.

<Callout>
  Two rows on the same template can't share a role name — the name is how a
  booking reports which resource filled which slot. If you need two of the same
  thing, either raise **How many** on one row, or give the rows distinct names
  like "Surgeon" and "Assisting surgeon".
</Callout>

<Callout type="warn">
  If a template asks for a kind you have no matching resources for, the template
  looks fine but can never actually be booked — the booking screen simply finds
  no available slots. If you add a **Staff** role, make sure you have staff
  resources (with schedules) that can fill it.
</Callout>

### The primary role [#the-primary-role]

One requirement row can be marked as the **primary role**. That row's resource
becomes the appointment's **doctor of record** — the name shown in appointment
lists, detail views, and reporting.

A few rules worth knowing:

* Only **Doctor** and **Staff** rows can be primary. The radio button is
  disabled for rooms and equipment, and switching an already-primary row to a
  room or equipment kind clears the mark.
* Only **one** row can be primary at a time. Marking a second row moves the
  mark rather than adding one.
* If a template has exactly **one** human role and you don't mark anything, it
  is treated as the primary automatically.
* If a template has **several** human roles and none is marked, appointments
  fall back to a doctor row ahead of a staff row. Which one is picked beyond
  that is not something you can influence by naming — renaming a role never
  changes who is reported as the main provider. **Mark one explicitly** if
  reporting matters to you; it is the only way to control the outcome.
* A template with only rooms and equipment has no primary role at all. That's
  perfectly valid.

<Callout>
  Editing a template's primary role does **not** change appointments that were
  already booked. They keep the doctor of record they were booked with until
  someone reschedules them, at which point the current template is re-applied.
</Callout>

## Editing a procedure template [#editing-a-procedure-template]

Open **Core → Procedure templates**, then choose **Edit** on any row. The
drawer opens with the template's current details.

You can change the name, duration, description, required checks, whether the
template is **Active**, and the list of resource requirements.

**The code can't be changed.** It identifies the procedure across billing and
reporting, so it's fixed once the template is created — the field is shown but
disabled in the edit drawer. If a code is wrong, create a replacement template
with the right code and deactivate the old one instead.

**Active** controls whether the template can be used for a *new* booking.
Turning it off doesn't touch appointments already booked against it — it just
stops new appointments from being booked against it going forward. Use this
instead of deleting a template you may need again.

**Removing or renaming a requirement asks you to confirm.** Adding a row, or
adjusting a row's count, buffers or resource filters, saves straight away.
Saving only pauses for a confirmation when you've **removed** a row or changed
an existing row's role or kind — the changes where something you had before is
going away. It's safe to confirm: appointments already booked keep the
resources and roles they were booked with, so past and upcoming bookings are
unaffected. New bookings use the updated requirements right away; older
appointments only pick them up if they're rescheduled.

**Closing with unsaved changes asks first.** If you've edited anything and then
press Escape, click outside the drawer, or hit Cancel, you'll be asked whether
to discard your changes — choose **Keep editing** to go back. Closing a drawer
you haven't touched just closes it, with no prompt.


# Client field configuration (/en/docs/clinic-admin/client-field-config)



# Configure client fields [#configure-client-fields]

Every clinic collects different data about its clients. In
&#x2A;*Organization → Clients (config)** you decide which fields appear on
the client intake form, which are required, and which new custom fields
to add.

## Name mode [#name-mode]

MediSync supports three naming conventions. Pick the one that matches
your clinic's practice:

| Mode           | Fields captured                              | When to use                               |
| -------------- | -------------------------------------------- | ----------------------------------------- |
| **Two-part**   | Given name, family name                      | Most western practices                    |
| **Three-part** | Given name, middle name, family name         | English/US practices                      |
| **Four-part**  | Given name, father, grandfather, family name | Many Arab clinics                         |
| **Single**     | Full name                                    | When full-name strings are recorded as-is |

Changing name mode:

* **Doesn't delete** any existing client data — fields that don't apply to
  the new mode stay on old records and aren't prompted on new intake.
* Takes effect on the next **Add client** form. Open client profiles
  keep showing whatever data was already captured.

## Required fields [#required-fields]

Mark a field as **Required** and the intake form won't submit without it.
Use this for data your clinic genuinely can't operate without (e.g. date
of birth for paediatric dosing).

> **Don't over-require.** Every required field slows down reception and
> locks out walk-ins. Leave fields optional unless missing them is a
> blocker downstream.

## Visible columns [#visible-columns]

Separate from required: mark which fields show up as columns on the
**Clients** list by default. Common picks: name, phone, date of birth,
insurance status.

Beyond that default set, each staff member can tailor their own view.
Open the **Columns** menu above the clients table to show or hide any
field — every field from the **Add client** form (address, emergency
contact, insurance, blood type, allergies, and more), your clinic's
custom fields, and record-audit details (**Created** date, **Created by**,
**Last update**) are all available there. These extra columns are **hidden
by default**, and each person's choice is remembered in their own browser,
so customising your columns never changes what a colleague sees.

## Available sex values [#available-sex-values]

Most clinics only need **Male** and **Female**, so the client form ships
with those two and lets you opt in to **Other** and **Prefer not to say**
when the clinic actually needs them.

In **Organization → Clients (config) → Demographics**, tick the values
you want and click **Save**:

* The client **Add** form's sex dropdown only shows enabled values.
* The list filter only offers enabled values as filter chips.
* **Existing clients keep their stored value** — if a client already has
  `Other` and you disable it, that record still saves cleanly when edited.
  You won't be forced to migrate old data.
* An empty selection is rejected — at least one sex value must always be
  enabled or staff couldn't create a client.

## Custom fields [#custom-fields]

Custom fields live in their own page: **Clients → Custom fields** in
the staff sidebar.

1. Pick the **module** at the top of the page. By default this is
   **Clients**, but if your platform admin has registered other modules
   (e.g. Appointments) they appear here too.
2. Click **Add field**, then for each row choose a type — short text,
   long text, number, yes/no, date, choice (dropdown), or list.
3. Name the field. The **Key** is the machine identifier (lower-case,
   underscores) and the **Label** is what receptionists see on the form.
4. For **Choice** fields, enter the options as a comma-separated list.
5. Optionally set a **Group** name — fields with the same group render
   together on the client form.
6. Toggle **Required** if relevant. For numeric and text fields, you can
   set **min** / **max** bounds and a regex **pattern**.
7. Use the up/down arrows to reorder the rows, then click **Save changes**.

The new fields appear on the client intake form's clinical step, the
review summary, the client profile sidebar, the API, and — as optional,
hidden-by-default columns — the **Clients** list (toggle them on from the
**Columns** menu) immediately.
The **Key** is permanent once a field is in use — renaming it would
break records that already store data under that name. Removing a field
hides it from new intake but does **not** delete values on existing
clients (so you can safely undo a mistake by re-adding the same key).

## Grouping clients [#grouping-clients]

Custom fields that are select-type can be used to **group** clients on
the list view (think insurance plan, referral source, primary
practitioner). Toggle **Use for grouping** when creating the field.

***

**In-app help:** `clients_name_mode_setting`,
`clients_required_fields_setting`, `clients_visible_columns_setting`,
`clients_group_by_setting`, `clients_custom_fields`.


# Invoices (/en/docs/clinic-admin/client-invoices)



# Invoices [#invoices]

The **Organization → Invoices** page is where your team bills a client for the
services and products they received, records the money that comes in, and sends
them a tidy PDF. Invoices are gated by the **Invoices** module — enable it under
**Organization → Settings → Modules** if you don't see the menu item.

> Invoices are for billing your **clients**. They are completely separate from
> the subscription invoices MediSync sends *your clinic* — those live under
> **Settings → Billing**.

## Finding your invoices [#finding-your-invoices]

Expand **Organization → Invoices** in the sidebar. It opens into a group with
three items — **Invoices** (the list), **Reports**, and **Invoice settings**.
The list works like the rest of the app:

* **Search** by number, client, or amount.
* **Filter by status** — tick any combination of Draft, Issued, Partially paid,
  Paid, or Void to narrow the list.
* **Sort and paginate** the columns, and click a row to open its full details in
  a side panel.

The **Invoice settings** item in the group takes you to the invoice defaults —
see [Invoice settings](#invoice-settings).

## Issuing or deleting several invoices at once [#issuing-or-deleting-several-invoices-at-once]

When you have a batch of drafts to process, you don't have to open them one by
one. On the list:

1. **Tick the checkboxes** next to the invoices you want (or the header checkbox
   to select the whole page).
2. A **bulk bar** appears with two actions:
   * **Issue drafts** — issues every selected draft at once, giving each its own
     number and due date, just like issuing them individually.
   * **Delete drafts** — removes the selected drafts.

Both actions apply only to **drafts** — an invoice that's already issued is
skipped (it can't be deleted, and there's nothing to issue). If any item in the
batch can't be processed, the rest still go through, and you're told which ones
were skipped and why.

## Creating an invoice [#creating-an-invoice]

Click **New invoice** to open the two-step wizard.

**Step 1 — who and what:**

* **Client** — search and pick the client you're billing (required).
* **Attending doctor** — optional; recorded on the invoice for reference.
* **Line items** — add each service or product. Pick an item from your catalog to
  fill its name, price, and tax rate automatically, or type a custom line by
  hand. Set the quantity on each line.

**Step 2 — the money and the fine print:**

* **Currency** — defaults to your usual currency; a catalog pick can set it.
* **Discount** — a fixed amount or a percentage off the whole invoice.
* **Tax** — the tax rate applied to taxable lines.
* **Payment terms** — how many days the client has to pay (used to set the due
  date when you issue).
* **Notes** — anything you want printed on the invoice.

A **live preview** on the right shows the subtotal, discount, tax, and total
recalculating as you type, so you always see exactly what the client will be
charged before you save.

Saving creates the invoice as a **Draft** — nothing is final yet, and you can
keep editing it.

## Issuing an invoice [#issuing-an-invoice]

A draft has no number and isn't official. When the invoice is ready, click
**Issue**. Issuing:

1. Assigns the next **invoice number** (in your configured format).
2. Sets the **due date** from your payment terms.
3. Moves the invoice to **Issued**.

Once issued, an invoice can no longer be deleted — if you need to cancel it, use
**Void** instead (see [Statuses](#statuses)). This keeps a clean, auditable
record of everything you ever billed.

## Recording payments [#recording-payments]

Open an issued invoice and click **Record payment**. Enter the amount, the
payment method (cash, card, bank transfer, and so on), and an optional reference
or note.

* You can record **several partial payments** over time; the invoice tracks the
  running **balance** (total minus what's been paid).
* When the payments add up to the full total, the invoice automatically becomes
  **Paid**. Until then it shows as **Partially paid**.
* You can't record more than the outstanding balance — overpayments are rejected.

Every payment is listed in the invoice's payment history.

## Refunding a payment [#refunding-a-payment]

If you need to return money to a client — a cancelled service, an overcharge —
open the invoice and click **Record refund** (also available from the row's "•••"
menu). Enter the amount, the method you're refunding by, and an optional reason.

* You can refund **up to the amount the client has paid** — you can't refund
  more than was actually received.
* A refund **reopens the invoice**. A fully **Paid** invoice drops back to
  **Partially paid** (a balance is owed again), and if the refund returns
  everything that was paid it goes back to **Issued**.
* Refunds aren't allowed on a **Draft** or **Void** invoice — there's no payment
  to return.

Refunds appear alongside payments under the **Payments & refunds** tab, so you
always have the full money trail for an invoice.

## Statuses [#statuses]

| Status             | What it means                                                                                                                            |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **Draft**          | Still being prepared. No number yet; editable and deletable.                                                                             |
| **Issued**         | Finalized and numbered. Awaiting payment.                                                                                                |
| **Partially paid** | Some money received, but a balance remains.                                                                                              |
| **Paid**           | Paid in full.                                                                                                                            |
| **Void**           | Cancelled after issue. Kept for the record, but no longer owed.                                                                          |
| **Overdue**        | Shown automatically on an Issued / Partially paid invoice whose due date has passed and still has a balance. It clears itself once paid. |

## Sending a PDF to the client [#sending-a-pdf-to-the-client]

From an invoice you can:

* **Generate PDF** — render the invoice as a PDF (choose a basic or detailed
  layout) and open it.
* **Email** — send the client a link to the PDF. The email goes to the client's
  email on file by default, or you can type a different address. The link is
  valid for 7 days.

The PDF is cached, so re-sending the same invoice is instant unless its contents
changed.

## Turning a quote into an invoice [#turning-a-quote-into-an-invoice]

If you use [Quotations](/clinic-admin/quotations), you don't have to retype an
accepted quote. From an accepted quote — or from the **New invoice** screen —
use **Create from quote** to draft an invoice that copies the quote's client and
catalog-backed line items. Review it, then issue it like any other invoice.

## Receivables report [#receivables-report]

Open the **Reports** page from the Invoices nav for an at-a-glance view of where
your billing stands. At the top, a row of **KPI cards** summarises the money:

* **Invoiced** — the total value of everything you've issued (drafts and
  voided invoices don't count).
* **Collected** — how much you've actually been paid.
* **Outstanding** — what's still owed on issued and partially-paid invoices.
* **Overdue** — the slice of that outstanding amount that's already past its due
  date.

Below the cards, a **status breakdown** shows how many invoices sit in each
status, and a **receivables aging** table groups what you're owed by how long
it's been overdue:

| Bucket         | What it covers                                             |
| -------------- | ---------------------------------------------------------- |
| **Current**    | Not yet due (or with no due date set).                     |
| **1–30 days**  | Up to a month past due.                                    |
| **31–60 days** | One to two months past due.                                |
| **61–90 days** | Two to three months past due.                              |
| **90+ days**   | More than three months past due — the ones to chase first. |

Aging counts only **open** invoices (issued or partially paid with a balance
left); paid and voided invoices drop off.

## Invoice settings [#invoice-settings]

Open **Invoices → Invoice settings** from the sidebar group to set the defaults
applied to every new invoice:

* **Number format** — the prefix and pattern used when you issue (for example
  `INV-2026-0001`).
* **Default tax rate** — pre-filled on new invoices.
* **Default payment terms** — the default number of days clients get to pay.

Changing these affects future invoices only; invoices you've already issued keep
their original numbers and terms.


# Dashboard templates (/en/docs/clinic-admin/dashboard-templates)



# Dashboard templates [#dashboard-templates]

A **template** is a ready-made dashboard new members start from on their first
visit, so your team lands on something useful instead of a blank grid. You can
publish one org-wide default and, optionally, a different default per role
(e.g. doctors lead with their schedule, front desk with check-ins).

Open **Settings → Dashboard templates** (the tab is visible to admins). The
tab opens with a short **How dashboard templates work** guide and is laid out
as two steps: **Step 1 · Templates** (create them) and **Step 2 · Role
defaults** (assign them).

## How a member inherits a template [#how-a-member-inherits-a-template]

The first time a member opens their Overview — before they've saved anything:

* If their role has a template assigned, they start from it.
* If several of their roles have templates, they're asked to **choose** one.
* Otherwise they start from the **org default** (if you've set one), or a blank
  grid.

Whatever they start from, their first save makes a **private copy** — editing
or deleting a template never disturbs members who've already saved their own
layout.

## Create a template [#create-a-template]

Templates are seeded from a layout, so the easiest path is:

1. On your **Overview**, build and **save** the layout you want (see
   [Customize your dashboard](/en/docs/getting-started/customize-dashboard)).
   Until you have a saved layout, **Step 1** shows a **Go to Overview** prompt
   instead of the **New template** button.
2. Go to **Settings → Dashboard templates** and, under **Step 1 · Templates**,
   click **New template**.
3. Name it and pick what to **seed from** — one of your saved layouts, or a
   blank dashboard.
4. Click **Create template**.

## Set the org default [#set-the-org-default]

In the templates table, click **Set default** on the template every new member
should start from. Only one template can be the org default at a time —
choosing a new one replaces the old.

## Assign a template to a role [#assign-a-template-to-a-role]

**Step 2 · Role defaults** unlocks once you have at least one template. Each
role then has a dropdown:

* Pick a template to make it that role's starting dashboard.
* Choose **Org default** to clear the assignment (the role falls back to the
  org-wide default).

Changes save as soon as you pick. Roles come from
[Staff & roles](/en/docs/clinic-admin/staff-roles); base roles (Admin,
Receptionist, etc.) always use the org default.

## Delete a template [#delete-a-template]

Click the trash icon on a template row and confirm. Any role pointing at it
falls back to the org default. Members who already saved a copy keep theirs.

***

**In-app help:** no dedicated in-app article yet for dashboard templates.


# Document storage (/en/docs/clinic-admin/document-storage)



# Document storage [#document-storage]

**Organization → Documents** is where your clinic stores shared files —
uploaded client records, medical history attachments, voice notes, and
anything else you need archived against an organization or a client.

## Storage usage at a glance [#storage-usage-at-a-glance]

The page opens with a **storage-usage card** that shows how much of your
plan's storage cap you're consuming and what's taking up the space. It
breaks the used bytes down by file type:

* **Images** — JPEG, PNG, GIF, WebP, HEIC
* **Videos** — MP4, WebM, QuickTime (.mov)
* **PDFs** — `.pdf`
* **Documents** — Word (`.doc`, `.docx`), plain text (`.txt`)
* **Spreadsheets** — Excel (`.xls`, `.xlsx`), CSV
* **Audio** — voice notes (WebM, M4A, MP3, OGG, WAV)
* **Other** — anything that doesn't match the categories above
* **Free** — remaining space on your plan

The percentage in the top-right turns &#x2A;*amber at 75%** and &#x2A;*red at 90%**.
When you hit the cap, the **Upload** button disables and the tooltip
explains why. If your admin has frozen uploads on your plan, the card
shows **Frozen** instead of a percentage.

## Supported file types [#supported-file-types]

The following MIME types are accepted at upload time. Anything else is
rejected before the file is sent to storage:

| Category     | Formats                               |
| ------------ | ------------------------------------- |
| Images       | JPEG, PNG, GIF, WebP, HEIC            |
| Videos       | MP4, WebM, QuickTime (.mov)           |
| PDFs         | PDF                                   |
| Documents    | Word (.doc, .docx), plain text (.txt) |
| Spreadsheets | Excel (.xls, .xlsx), CSV              |
| Voice notes  | WebM, M4A, MP3, OGG, WAV              |

> Video is a **recently added** type — clinics that were on medisync
> before can now upload MP4/WebM/MOV files without a plan change.

## Troubleshooting [#troubleshooting]

* **"Upload paused — organisation is inactive"** — the clinic is
  suspended; contact your super-admin.
* **"Storage cap reached"** — either archive old files from the
  **Trash** section or ask your admin to raise the cap.
* **"Storage is frozen for this organisation"** — uploads are blocked
  at the plan level; contact the admin who manages billing.


# Payments in Egypt (Kashier) (/en/docs/clinic-admin/egypt-payments)



# Payments in Egypt (Kashier) [#payments-in-egypt-kashier]

Clinics registered in Egypt have their card payments processed by **Kashier**, a local payment
provider, instead of Stripe. You don't choose this — MediSync picks it automatically based on
your organization's country. Everything else about billing works exactly the same: the same
**Organization → Billing** page, the same plans and invoices, the same "Add card" button.

<Callout>
  The **Payment methods** card on your Billing page always tells you which provider is handling
  your cards — look for "Cards are processed securely by Kashier." If you ever see a different
  provider named there, that's not a mistake to fix; it just means your organization is routed
  differently (for example, a non-Egyptian country).
</Callout>

## Adding a card [#adding-a-card]

1. Go to **Organization → Settings → Billing**.
2. Under **Payment methods**, click **Add card**.
3. You're redirected to Kashier's secure hosted page — MediSync never sees or stores your card
   number, only what Kashier reports back (card brand, last 4 digits, expiry).
4. Enter your card details on Kashier's page and confirm. Kashier verifies the card with a small
   1.00 EGP charge; this is part of saving the card, not a payment towards an invoice.
5. You're brought back to a MediSync confirmation page. It says &#x2A;*"Card saved"** once MediSync has
   checked the result with Kashier directly — it never takes the redirect's own word for it, so
   give it a moment if it still says it's verifying. Click **Back to billing** and your card is in
   the list.

If you leave Kashier's page without finishing, or cancel partway through, you're brought back
to a page that simply says the setup wasn't completed — no charge is made and nothing changes
on your account. You can click **Add card** again any time.

## Paying an invoice [#paying-an-invoice]

1. Go to **Organization → Billing → Invoices**.
2. Find an invoice that's due and click **Pay now**.
3. You're redirected to Kashier's hosted checkout to complete the payment (or charged
   automatically against your saved card, if you have auto-charge turned on — see
   [Billing & plans](/docs/clinic-admin/billing-plans)).
4. After paying, you're brought back to MediSync, which double-checks the payment status with
   Kashier directly — so the amount, invoice number, and paid/pending state you see are always
   confirmed by Kashier's own records, never just read off the page you were redirected from.

## If "Add card" or "Pay now" doesn't work [#if-add-card-or-pay-now-doesnt-work]

Occasionally you'll see a message that online payment isn't available yet. This happens when
Kashier hasn't finished being set up for your environment — it's a temporary, fixable state on
MediSync's side, not a problem with your card or your clinic's account. Contact support and
they can tell you when it's resolved; nothing you can do on your end speeds this up.

***

**In-app help:** `org_settings_billing_payment_methods_heading`,
`org_settings_billing_gateway_name_kashier`, `org_settings_billing_pay_invoice`,
`kashier_payment_status_card_saved_title`, `kashier_payment_status_gateway_disabled_title`.


# Finish setting up your clinic (/en/docs/clinic-admin/finish-setup)



# Finish setting up your clinic [#finish-setting-up-your-clinic]

Right after you create your organization, MediSync walks you through a
short welcome wizard, then keeps a **setup checklist** in the corner of your
dashboard so you don't lose track of what's left to configure. Both are
optional — you can skip any step, and minimize the checklist whenever you're
ready.

## The welcome wizard [#the-welcome-wizard]

The wizard appears once, right after your organization is created, and
covers two quick steps:

* **Timezone** — so appointment times, reminders, and reports line up with
  your clinic's local time.
* **Branding** — upload your logo and pick a brand color, used across your
  invoices, client portal, and emails.

Every step is optional — click **Skip** to move past it, or **Finish
later** to close the wizard entirely. You can always change your timezone
or branding afterwards from **Organization settings**.

## The setup checklist [#the-setup-checklist]

After the wizard, a **setup checklist** appears in the bottom corner of your
dashboard — a short list of the key things worth doing in your first days on
MediSync. It follows you across your clinic's pages, so you can work through
it from wherever you happen to be:

* **Add a payment method** — do this before your trial ends so your
  subscription isn't interrupted.
* **Complete your org profile** — contact email, phone, and address.
* **Invite your team** — add the staff who'll be using MediSync with you.
* **Add your first service** — so you're ready to book appointments and
  bill clients (only shown if your plan includes the Products & Services
  module).
* **Set notification defaults** — choose which events send SMS/email
  reminders.

Each item links straight to the page where you complete it, so there's no
hunting through menus. As soon as you finish a task — whether from the
checklist link or anywhere else in settings — it's checked off automatically.

### Skipping and minimizing [#skipping-and-minimizing]

* **Skip** an individual item if it doesn't apply to your clinic right now
  — it's removed from the list, no questions asked.
* **Minimize*&#x2A; the checklist from its header (the &#x2A;*✕**) if you'd rather
  explore MediSync on your own. It shrinks to a small progress badge in the
  same corner — click that badge any time to open the list back up. Nothing
  is lost, and minimizing only affects your own view, not your colleagues'.
* Once every item is checked off or skipped, the checklist disappears from
  your dashboard on its own.

Nothing in the checklist is required to use MediSync — it's just a
shortcut to the setup steps most new clinics find useful.


# Overview for admins (/en/docs/clinic-admin)



# Clinic admin — overview [#clinic-admin--overview]

As the admin of your clinic, you control everything that isn't day-to-day
client care: the billing plan, which features the clinic uses, who has
access and what they can do. This section walks through each of those.

## The admin dashboard [#the-admin-dashboard]

After signing in at
[admin.medisync-solutions.com](https://admin.medisync-solutions.com) you
land on the admin dashboard. The left sidebar shows six top-level areas:

| Area                 | What it's for                                               |
| -------------------- | ----------------------------------------------------------- |
| **Organization**     | Your clinic's basic info, contact, logo, slug               |
| **Modules**          | Enable or disable feature sets (appointments, inventory, …) |
| **Billing**          | Plan, invoices, add-ons, usage                              |
| **Staff**            | Invite teammates, assign roles                              |
| **Clients (config)** | Custom fields, required fields, name mode                   |
| **Analytics**        | Clinic-wide metrics                                         |

## Recommended first-day checklist [#recommended-first-day-checklist]

If this is your first time as admin, work through these in order:

1. **[Set up your organization](/en/docs/clinic-admin/organization-setup)**
   — name, timezone, logo, public slug. Takes about five minutes.
2. **[Choose your modules](/en/docs/clinic-admin/modules)** — turn on only
   what your clinic actually uses.
3. **[Pick a plan](/en/docs/clinic-admin/billing-plans)** — you can start
   on the trial and upgrade later.
4. **[Invite your team](/en/docs/clinic-admin/staff-roles)** — send
   invitations to receptionists and practitioners with the right roles.
5. **[Configure client fields](/en/docs/clinic-admin/client-field-config)**
   — decide which client data your clinic captures.

After that you're handed over to the receptionist guides — see
&#x2A;*[Receptionist → Add a client](/en/docs/receptionist/add-client)**.


# Leads (sales pipeline) (/en/docs/clinic-admin/leads)



# Leads (sales pipeline) [#leads-sales-pipeline]

The **Leads** module gives your front-desk and sales team a pipeline for prospective clients —
people who've inquired but haven't booked yet — separate from your existing client records. It's
gated by the **Leads** module — enable it under **Organization → Settings → Modules** if you don't
see **Leads** in the sidebar.

Once enabled, **Leads** appears as its own section in the sidebar with four pages: **All leads**,
**Analytics**, **Dormant patients**, and **Settings**.

## The pipeline [#the-pipeline]

**Leads → All leads** shows every lead as a card or row you can filter by status (New, Contacted,
Qualified, Converted, Lost), source (web form, phone, walk-in, referral, campaign, and more), and
assigned owner. Opening a lead lets staff log calls/emails/notes, move it to the next status, and —
once it's ready — convert it into a client record.

## Analytics [#analytics]

**Leads → Analytics** summarises the whole pipeline: total and open leads, new-this-month vs.
new-last-month, conversion rate, a status funnel, and a 12-month created/converted trend. Everything
can be filtered by owner, source, branch, and a date range.

### Attribution [#attribution]

The **Attribution** table on the Analytics page breaks that same pipeline down **by source** —
for each source (referral, web form, campaign, etc.) it shows how many leads came in, how many
converted, the conversion rate, and the cumulative **paid revenue** collected from that source's
converted clients. Use it to see which channels are actually paying off, not just generating
inquiries.

## Reactivating a dormant patient [#reactivating-a-dormant-patient]

**Leads → Dormant patients** lists clients who've gone quiet — people who've had a completed visit
before, but not recently — so your team can proactively reach out instead of waiting for them to
book again on their own.

* **What "dormant" means.** A client shows up here once they've had at least one completed visit
  and **no completed visit in the last 180 days**. (A client who has never had a visit isn't
  "dormant" — they just haven't come in yet, and won't appear on this list.) The 180-day window is
  the default; if your clinic wants a different threshold, ask MediSync support.
* **What you see.** Each row shows the client's name, contact details, and their last completed
  visit date, sorted with the longest-idle clients first.
* **Start reactivation.** Click **Start reactivation** on a client's row to create a new lead for
  them in the pipeline (source: *Reactivation*), so your team can track outreach the same way they
  track any other lead — call them, log the interaction, and move it through the pipeline toward a
  rebooked visit. If a reactivation lead is already open for that client, the button is replaced
  with **Reactivation started** instead of letting you create a duplicate.

## Related [#related]

* [Analytics](/docs/clinic-admin/analytics) — the clinic-wide dashboard (clients, appointments,
  revenue); Leads Analytics is a separate, pipeline-specific dashboard.
* [Loyalty program](/docs/clinic-admin/loyalty) — referral bonuses trigger when a lead marked as
  coming from a referral converts into a client.
* [Modules](/docs/clinic-admin/modules) — enabling/disabling the Leads module.


# Loyalty program (/en/docs/clinic-admin/loyalty)



# Loyalty program [#loyalty-program]

The **Loyalty** module turns repeat visits and payments into rewards. Clients earn points, climb
through tiers, redeem points for account credit, and can earn bonus points for referring new
clients. It's gated by the **Loyalty** module — enable it under **Organization → Settings →
Modules** if you don't see it in the sidebar.

Once enabled, **Loyalty** appears in the sidebar as its own section with four pages: **Settings**,
**Analytics**, **Members**, and **Transactions**.

## Setting up your program [#setting-up-your-program]

Open **Loyalty → Settings**. The page is split into two sections.

### Earning & Redemption [#earning--redemption]

* **Program name** — shown to your team; pick something recognizable (e.g. "MediSync Rewards").
* **Program active** — turn the whole program off without losing any history. While off, clients
  stop earning and redeeming points, but nothing is deleted — flip it back on and balances pick up
  where they left off.
* **Points per currency unit** — how many points a client earns per cent (or minor unit) of a
  **paid invoice**. For example, `1` means 1 point per cent spent, i.e. 100 points per $1 paid.
* **Points per visit** — a flat number of bonus points awarded every time an appointment is marked
  **completed**, independent of what (if anything) was paid.
* **Currency per redeemed point** — the redemption rate: how much account credit a client gets per
  point they spend. For example, `0.01` means 1 point ≈ 1 cent of credit.

> **Heads up — setting both accrual fields.** If you set **both** "Points per currency unit" and
> "Points per visit", a visit that also produces a paid invoice earns points from **both** rules —
> the settings page shows a warning when this is the case. This is intentional (some clinics want
> to reward the visit itself in addition to the spend), but double-check it's what you want before
> saving.

### Rewards & Lifecycle [#rewards--lifecycle]

* **Tier thresholds** (Bronze / Silver / Gold / Platinum) — the lifetime-points total a client
  needs to reach each tier. Tiers update automatically every time a client earns or is adjusted.
* **Points expiry (days)** — how many days after being earned a point expires if unused. Leave
  this empty for points that never expire.
* **Referrer bonus points** — a flat bonus credited to a client the moment someone they referred
  converts into a client. Leave empty to disable referral rewards for referrers.
* **Referee first-earn multiplier** — a multiplier (e.g. `2` for double points) applied to a
  referred client's very first points earned. Leave empty to disable this side of the reward.

Click **Save changes** — a "Saved" confirmation appears briefly next to the button.

## How points work [#how-points-work]

* **Earning.** Points are credited automatically — from a completed visit, a paid invoice, or
  both, depending on how you configured the program above. Staff can also manually credit or debit
  points from a client's **Loyalty** tab on their client record (for one-off adjustments).
* **Redeeming.** A client's points can be redeemed for account credit at the rate set in
  **Currency per redeemed point**. Redemption is done from the client's **Loyalty** tab.
* **Expiring.** If **Points expiry** is set, earned points expire automatically after that many
  days — oldest points first. This runs as a background job once a day, so there can be a short
  delay (up to a day) between a point technically aging out and it showing as expired.
* **Tiers.** A client's tier is recalculated every time their lifetime points change, snapping to
  the highest tier threshold they've reached. Tiers never go down on their own — points expiring
  reduces the redeemable **balance**, but a client's **lifetime** total (and therefore their tier)
  only ever goes up.

## Referral bonuses [#referral-bonuses]

When a lead that was marked as coming from a referral converts into a client:

1. The **referring client** gets an immediate flat bonus (the "Referrer bonus points" you
   configured).
2. The **new client** gets their very first points-earning event multiplied (the "Referee
   first-earn multiplier") — e.g. if they earn 50 points from their first paid invoice with a 2x
   multiplier configured, they actually receive 100.

Both sides are optional and independent — you can reward just the referrer, just the referee,
both, or neither.

## Members — the leaderboard [#members--the-leaderboard]

**Loyalty → Members** lists every client enrolled in the program, most valuable first by default.
Use it to spot your most loyal clients or to check where a particular client's tier stands.

* **Filter by tier** using the buttons at the top (All, Platinum, Gold, Silver, Bronze).
* **Sort** by clicking the **Balance**, **Lifetime points**, or **Last activity** column headers.
* Each row shows the client's current **tier**, redeemable **balance**, **lifetime points**,
  how many people they've **referred**, and when they were last active.
* **Click any row** to jump straight to that client's record with their **Loyalty** tab open.

## Transactions — the audit log [#transactions--the-audit-log]

**Loyalty → Transactions** is a running log of every point movement across the whole
organization — every earn, redemption, manual adjustment, and expiry, in one place. Use it to
answer "why does this client have this many points" or to audit a staff member's manual
adjustments.

* **Search** by client name.
* **Filter** by transaction kind (Earn, Redeem, Adjust, Expiry), by which staff member made a
  manual change, and by a date range.
* Each row shows the date, client, kind, point amount, and the reason recorded for the change
  (e.g. "Earned from completed visit", "Referral bonus: referred a new client").

## Analytics — program health [#analytics--program-health]

**Loyalty → Analytics** is a dashboard for judging whether the program is working, over a 30- or
90-day window (toggle at the top right):

* **KPI tiles** — referral conversions and total bonus points paid out from referrals, points
  expiring in the next 7 and 30 days (so you can plan ahead if you want to nudge clients to redeem
  before their points age out), and total enrolled members.
* **Points trend** — a daily bar chart of points earned vs. redeemed, so you can see whether the
  program is net-accumulating or net-draining points over time.
* **Tier distribution** — how many members sit in each tier, at a glance.
* **Top earners** / **Top redeemers** — your ten most valuable and ten most active-spending
  members, useful for spotting who to feature in a VIP or ambassador program.

## Turning the module off [#turning-the-module-off]

Disabling **Loyalty** under **Organization → Settings → Modules** hides the sidebar section and
blocks the API for everyone, but keeps all program configuration, memberships, and transaction
history intact. Re-enabling brings everything back exactly as it was — no balances or history are
lost while the module is off.


# Modules (/en/docs/clinic-admin/modules)



# Modules [#modules]

MediSync is modular. Instead of paying for every feature whether you use
it or not, you enable just the ones your clinic needs. Each module groups
related pages, workflows, and permissions.

## Available modules [#available-modules]

| Module             | What it enables                                           |
| ------------------ | --------------------------------------------------------- |
| **Appointments**   | Calendar, booking workflow, reminders, no-shows           |
| **Client records** | Client profiles, medical history, notes (always on)       |
| **Inventory**      | Stock tracking, consumables, low-stock alerts             |
| **Billing**        | Invoices, payments, insurance claims                      |
| **File storage**   | Documents library, note attachments, medical-record files |
| **Notifications**  | SMS and email reminders, appointment confirmations        |
| **Analytics**      | Clinic-wide metrics beyond the always-on summary          |

> **Client records** is always on — you can't run a clinic without it.

### File storage module — what gets gated [#file-storage-module--what-gets-gated]

Turning **File storage** off hides every surface that creates or opens files:

* The **Documents** page disappears from the sidebar.
* The paperclip button on clinical notes is hidden — staff can still
  create and edit notes, just without attachments.
* The **Attach files** button on the medical history dialog is hidden.
* Existing attachments remain visible and removable everywhere, so
  disabling doesn't orphan the history you already captured.

Re-enabling brings every surface back untouched — no data is lost.

### Storage cap [#storage-cap]

Platform admins can set a size cap per organization (e.g. 10 GB for a
small clinic, 1 TB for a hospital). You'll see the current usage on the
Documents page as "3.2 GB of 10 GB used". When you're near the cap, the
Upload button disables and explains why — the fix is either archiving
files you no longer need or asking your platform contact to raise the
cap. See [Entity limits](/docs/clinic-admin/staff-roles) for how
platform admins configure this.

## Turn a module on [#turn-a-module-on]

1. Open **Modules** from the **Administration** section of the sidebar.
2. Each module is a card with a toggle. Click the toggle to enable.
3. Read the confirmation dialog. It tells you:
   * What permissions will be granted to existing roles.
   * Any pricing impact (some modules add to your monthly bill — see the
     **Add-ons** column on your plan).
   * The data that will be created (empty categories, default settings).
4. Click **Enable**.

Within a few seconds the module's pages appear in the sidebar of every
signed-in staff member.

## Turn a module off [#turn-a-module-off]

Disabling a module hides its pages but doesn't delete data. You can
re-enable later and everything reappears.

1. Open **Modules** from the **Administration** section of the sidebar.
2. Click the toggle on an enabled module.
3. The confirmation explains what will happen. Read it carefully — some
   modules have dependencies (e.g. disabling **Appointments** also hides
   appointment-related analytics).
4. Click **Disable**.

## Module settings [#module-settings]

Some modules have their own settings drawer. Click the gear icon on the
module card to open it. Examples:

* **Appointments** — default slot duration, how far ahead clients can
  book, cancellation window.
* **Notifications** — which events trigger which message.
* **Billing** — invoice number format, VAT/tax defaults.

***

**In-app help:** `modules_admin_modules`, `modules_org_modules`,
`modules_json_editor`.


# Organization setup (/en/docs/clinic-admin/organization-setup)



# Set up your organization [#set-up-your-organization]

From the admin dashboard, open **Organization → Settings**. The screen is
split into three tabs: **General**, **Branding**, and **Contact**.

## General [#general]

* **Name.** The public name of your clinic as it appears on invoices, the
  client portal, and emails. Keep it short — it's used in page titles.
* **Slug.** A short, unique identifier used in URLs and API calls. Use
  lowercase letters, numbers, and hyphens only. Changing the slug later
  breaks bookmarks and integrations — choose carefully.
* **Timezone.** Used for appointment scheduling and billing periods. Set
  this before anyone books an appointment.
* **Default language.** Either English or Arabic. Staff can override on a
  per-user basis; client-facing emails use this default unless the client
  has their own preference.
* **Opening hours.** One row per weekday. Switch a day off to mark it
  closed, or set an opening and closing time. Closing time must be later
  than opening time on the same day — overnight hours aren't supported, so
  a clinic open past midnight should record the day it opens.

Click **Save**. Changes take effect immediately.

### Currency display [#currency-display]

Amounts follow whichever language you're viewing the app in — the same
number, just written differently. In Arabic, an Egyptian pound amount appears
as `1,234.50 ج.م.` with the symbol after the number; in English the same
amount appears as `EGP 1,234.50`. Switching your language only changes how an
amount is displayed — the amount itself, the currency, and anything you type
into a price field are unaffected.

## Branding [#branding]

* **Logo.** Upload a square PNG or SVG at least 256 × 256 px. Appears on
  client-facing pages, emails, and in the top-left of every staff screen.
* **Primary colour.** Used for buttons and highlights in the client
  portal. Pick a colour with sufficient contrast against white and black.
* **Email header.** A wider banner (up to 1200 × 300 px) shown at the top
  of transactional emails. Optional — defaults to your logo on a neutral
  background.

## Contact [#contact]

* **Address.** Full physical address. Shown on invoices and on the
  client-portal "About your clinic" section.
* **Phone.** Public phone number for client enquiries.
* **Support email.** Where clients reply when they ask questions. If your
  clinic uses a ticketing system, point it there.

## Deleting or pausing the organization [#deleting-or-pausing-the-organization]

A clinic admin can't delete the organization from this UI — this is a
safety measure. If you need to close your clinic's account, raise a
request with [MediSync support](/en/docs/reference/contact-support).

Pausing (suspension) temporarily freezes the account without deleting
data. Your super-admin or MediSync support can do this for you.

***

**In-app help:** `org_settings`, `org_bootstrap_slug_setup`,
`settings_org_slug`.


# Quotations (/en/docs/clinic-admin/quotations)



# Quotations [#quotations]

The **Organization → Quotes** page is where your team prepares a priced
proposal for a client or payer, sends it as a secure link, and turns an
accepted quote into a billable sales order. Quotes are gated by the
**Quotes** module — enable it under **Organization → Settings → Modules**
if you don't see the menu item.

## Browsing the quotes list [#browsing-the-quotes-list]

The list page works just like the **Clients** page, so the toolbar will feel
familiar:

* **Search** the number, recipient, or title from the box on the left; results
  update as you type.
* **Views** — switch between **Cards**, **Table**, and **Grid** with the toggle
  on the right. Table view supports drag-to-reorder, show/hide, and sortable
  columns, including clickable **Client** and **Created by** columns that jump
  to the client's record and the staff member who created the quote.
* **Filters** — click **Filters** to open the controls panel (it's collapsed by
  default). The **Status** filter is multi-select: tick any combination of
  statuses (Draft, Sent, Accepted, …) to narrow the list, and **Clear all** to
  reset.
* **Refresh** re-pulls the list and shows when it was last updated.

### Acting on several quotes at once [#acting-on-several-quotes-at-once]

Tick the checkboxes on one or more rows and a floating action bar appears (drag
it anywhere on screen by its handle). From there you can:

* **Switch scope** between **This page** and **All pages** — "All pages" selects
  every quote matching your current filters, even ones not yet loaded, with
  **Select all** confirming the full count.
* **Update status** — pick a lifecycle action (Send, Accept, Decline, …) to
  apply to every selected quote. Quotes that can't make that move from their
  current status are skipped and reported.
* **Delete** — soft-deletes the selected quotes. Only drafts and closed quotes
  can be deleted; in-flight ones are skipped and reported.

## Creating a quote [#creating-a-quote]

Click **New quote** to open the authoring page. It collects everything a
proposal needs:

* **Authoring language** — toggle **EN / AR** at the top. Every translatable
  field below (the title and each line description) is stored per language,
  so you can write the quote once in English, switch to Arabic, and add the
  translation without losing what you typed. Arabic inputs render right-to-left.
* **Title** — the heading the recipient sees.
* **Client** — search and link the client the quote is for. The
  link carries through to the sales order on conversion.
* **Attending doctor** — optional; recorded on the quote for reference.
* **Recipient name / email** — optional, for a quote addressed to someone who
  isn't a registered client.
* **Template** — pick a layout (see [Templates](#templates)). Selecting one
  reveals the custom fields the template defines, each with its placeholder,
  help text, and unit; **required** fields are marked with a `*` and must be
  filled before you can create the quote, and any default values are prefilled.
* **Line items** — see below; a running subtotal is shown.
* **Currency** — defaults to USD; a catalog pick sets it from the item.
* **Valid until** — optional expiry date for the quote.

Switch to the **Preview** tab at the top to see the quote rendered with your
chosen template and current data before you create it.

### Catalog-backed line items [#catalog-backed-line-items]

Each line can be typed by hand **or** filled from your catalog. Use the
**Search catalog** box, then open a line's dropdown to pick an active
**Service** or **Product**. The pick fills the description, unit price, and
tax rate, and binds the line to that catalog item — which is what later lets
the quote convert into a sales order. Choose **Custom line** to type a free
description and price instead. Add as many lines as you need with **Add line**;
totals, tax, and any client/insurer split are computed by the server.

## Sending and sharing [#sending-and-sharing]

* **Send** issues the quote: it gets a permanent quote number, an immutable
  version snapshot is frozen, and a PDF is queued.
* **Share** mints a secure, single-use link (`/q/…`) and copies it to your
  clipboard. The link is backed by a hashed token, can carry an optional
  password, and expires. The recipient sees a clean, branded view with no
  internal data and can **accept** or **decline** from there.

## Duplicating [#duplicating]

Any quote — in any status — has a **Duplicate** action. It clones the title,
recipient, template, field values, currency, and every line item into a brand
new **draft** that starts its own lifecycle (no number, no share links). Handy
for recurring proposals or for revising a sent quote without disturbing the
original. The copy's title is suffixed with “(copy)”.

## Converting to a sales order [#converting-to-a-sales-order]

Once a quote is **Accepted**, a **Convert** action appears. Converting:

1. Creates a draft **sales order** from the quote's catalog-bound lines.
2. Records the link back on the quote and moves it to **Converted**.

Pick the **branch** the order belongs to. Only lines bound to a Service or
Product transfer — a sales-order line must reference a catalog item — so any
custom, free-text lines are listed as “won't transfer”. Re-add those from the
catalog first if you need them on the order. Confirming the resulting sales
order (in **Products & Services → Sales orders**) opens the invoice and posts
its line items, so conversion is also the start of the billing trail.

> **Appointments:** a quote does not auto-book a visit — scheduling needs a
> procedure, a slot, and resources a quote doesn't carry. Book the appointment
> in the calendar and link it from the order if needed.

## Templates [#templates]

Open **Quotes → Templates** to manage layouts. System templates ship
read-only; **Fork** one to get an editable copy, or **New template** to start
your own. Creating or editing a template opens a dedicated **editor page** with:

* **Form fields** — the inputs an author fills when using the template. Each
  field has a **key**, a **type** (text, number, currency, date, a **select**
  with options, a **repeater**, or a **computed** total), a bilingual
  **label**, a **placeholder**, **help text**, a **suffix** (a unit such as
  `%` or `kg`), a **default value**, and a **required** flag. The new-quote
  form renders all of these, and required fields block creation until filled.
  * A **repeater** field is a list of rows the author adds (like the legacy
    "services" field). Define the row **columns** (each a key + type +
    label; `select` columns get their own options) and the add-row button
    label. On a quote the author clicks **Add row** to enter as many rows as
    needed, and the template body renders them as a table.
  * **Select options can carry a price.** A **computed** field is read-only on
    the quote and live-sums every selected option's price plus each repeater's
    number columns — the auto-calculated total from the legacy template. Give
    your option dropdowns prices and add a computed field for a running total.
    Set the computed field's **base currency** and point it at the dropdown
    that holds the **total currency**; the total is then converted live using
    daily exchange rates (refreshed by a background job from an FX provider and
    stored in the database), so picking a different total currency reprices it.
  * **Every label is translatable.** Use the **EN / AR** toggle at the top of
    the field builder to author each field's label, placeholder, help text,
    suffix, option labels, and column labels per language; the quote form shows
    them in the author's chosen language.
* **Body** — built two ways via the **Builder** / **HTML** tabs:
  * **Builder** (drag and drop): drag blocks from the palette into the canvas —
    **Quote header**, **Recipient**, **Heading**, **Text**, **Field value**,
    **Line items**, **Totals**, **Divider**, **Spacer** — or click one to
    append it. Drag the grip on a block to reorder, and use its inline settings
    (e.g. heading level, which form field to show). The document regenerates as
    you go.
  * **HTML**: the generated Handlebars, editable directly for advanced layouts.
    Helpers: `{{t … locale}}`, `{{money cents currency}}`, `{{date …}}`,
    `{{bps …}}`; field values render via `{{fieldValues.key}}`. Output is
    sanitized.
  * **Preview**: the body rendered with sample data — including a sample
    computed total — so you can check the layout as you edit (no save needed).

Your block layout is saved with the template, so re-opening it returns you to
the builder. Use **Preview** on the list to render a template with sample data
before using it on a real quote.


# Set up your clinic to take bookings (/en/docs/clinic-admin/set-up-booking)



# Set up your clinic to take bookings [#set-up-your-clinic-to-take-bookings]

Before you can book an appointment, your clinic needs four core things: **a resource to book** (a doctor, nurse, room, or equipment), **working hours** for that resource, **a procedure template** (a description of what you're booking for), and **a client** to book the appointment for.

This guide walks through each of these in order. As you set them up, the "Set up booking" panel in the booking wizard will check them off and tell you what's still missing.

## 1. Add a resource to book [#1-add-a-resource-to-book]

Open **Core → Resources** and create your first resource:

1. If you haven't already, pick a **branch** from the sidebar — every resource belongs to one branch.

2. Click **Add resource** and choose a kind:
   * **Doctor** — a physician
   * **Staff** — a nurse, technician, anesthetist, interpreter, or chaperone
   * **Room** — a consultation room or operating theatre
   * **Equipment** — a medical device or other schedulable equipment

3. Fill in the form. Every resource needs a **name** (e.g., "Dr. Adel" or "Surgery Room 1") and a **concurrency limit** (how many appointments it can hold at once — usually 1).

4. If you're adding a Doctor or Staff member, you must link them to a **team member** in your organization. This connects the bookable resource to the real person who will see the appointment.

Once you've created your first resource, the "Set up booking" panel will move to the next step.

## 2. Set working hours [#2-set-working-hours]

Now that your resource exists, you need to tell the system **when it's available for bookings**.

Go back to **Core → Resources** and find the resource you just created. Click on it to open its detail view, then use the **Schedule** section to add recurring working hours:

1. Click **Add working hours**.
2. Pick the **days of the week** the resource works (e.g., Monday–Friday).
3. Set the **start and end times** for each day (e.g., 9am–5pm).
4. If the resource takes a break (e.g., lunch from 1pm–2pm), add a separate time slot for the afternoon (e.g., 2pm–5pm) and add a second "Break" or "Lunch" schedule line.

The booking engine uses these schedules to find available slots. A resource with no working hours is never offered as an option, even if everything else is set up.

<Callout type="info">
  You can have different schedules for different date ranges (e.g., summer hours from June to August), and you can add time-off entries to block specific dates when the resource is unavailable.
</Callout>

Once you've added working hours, the panel moves to the next step.

## 3. Add a procedure [#3-add-a-procedure]

Now you need to describe **what you're booking for**.

Open **Core → Procedure templates** and create your first procedure template:

1. Click **Add procedure**.
2. Give it a **name** (e.g., "General Consultation", "Surgery", "Checkup").
3. Set the **duration** the procedure takes (e.g., 30 minutes, 1 hour).
4. Click **Create**.

Once you've created a procedure template, the panel moves to the next step.

## 4. Say what the procedure needs [#4-say-what-the-procedure-needs]

Each procedure template needs to declare **which resources it requires**. For example, a "General Consultation" might need a Doctor and a Room, while a "Dental Cleaning" might need a Dentist (Doctor specializing in dentistry) and a Dental Chair (Equipment).

Open your procedure template and add **requirements**:

1. Click **Add requirement**.
2. Choose the resource **kind** (Doctor, Staff, Room, or Equipment).
3. If the kind is Doctor or Staff, you can optionally add **attributes** to narrow which ones match — for example, "specialty: Cardiology" to match only cardiologists, or "languages: Spanish" for staff who speak Spanish.
4. Set the **primary role** checkbox if this is the main resource for the procedure (e.g., the Doctor is usually primary for a consultation).
5. Click **Add**.

Repeat for each role the procedure needs. If a procedure has no requirements, the booking engine has no way to match a booking to resources, so it cannot offer any slots.

Once your procedure has at least one requirement, the panel checks the next step.

## 5. Match the procedure to your resources [#5-match-the-procedure-to-your-resources]

The booking engine now checks: &#x2A;*"Can we actually fill all the roles this procedure asks for?"**

For example, if your procedure requires a "Cardiologist" and you have a doctor named "Dr. Ahmed" who is a General Practitioner, there's a mismatch — the procedure will never be bookable because no available resource matches the requirement.

To fix this:

* **Option A:** Edit the **procedure** and relax the requirement. Remove the "specialty: Cardiology" filter if you don't actually need a specialist.
* **Option B:** Add a **resource** that matches the requirement. Hire or link a cardiologist doctor, then edit their profile to add the "Cardiology" specialty.

The "Set up booking" panel will tell you exactly what role is missing and which procedure has the problem, so you can make the right fix.

Once all your procedure requirements can be filled by your resources, you're almost ready.

## 6. Add a client [#6-add-a-client]

The last required step is to add at least one **client** (person) to book an appointment for:

1. Go to **Clients**.
2. Click **Add client**.
3. Fill in their **name, phone, email**, and any other fields your clinic requires.
4. Click **Create**.

Once you've added a client, your clinic is ready to book.

## Optional: Set up booking shifts [#optional-set-up-booking-shifts]

Booking shifts are **only needed if you use walk-in token queues** — that is, if clients can show up and be assigned a time slot on the spot, rather than booking a fixed appointment in advance.

If you do use walk-in queues:

1. Open **Appointments → Booking Shifts**.
2. Click **Add shift** and set the **start and end time** for the shift.
3. Click **Create**.

Appointments booked into shifts are different from appointments booked into fixed time slots — they're a separate booking mode. If your clinic only takes fixed appointments, you can skip this step entirely and your clinic will still be fully ready to book.

<Callout type="info">
  A shift that has already ended is not counted as active. The booking engine only looks at shifts that end at the current time or later.
</Callout>

***

Once all the required steps are complete, the "Set up booking" panel disappears — the booking wizard itself is always usable, even before setup is finished, so you can keep working through it top-down at any point. You're ready to book your first appointment!


# SMS providers and fallback (/en/docs/clinic-admin/sms-providers)



# SMS providers and fallback [#sms-providers-and-fallback]

MediSync sends SMS through **providers** (carriers such as Twilio, Vonage, or SMS Misr).
You can use the ones MediSync provides, connect your own account, or mix both — and you
can tell MediSync which providers to try, in which order, for each country you message.

<Callout>
  SMS is a paid module. Turn it on in **Settings → Modules** first. You are billed per
  message *segment*, not per message — a long message is split into several segments by the
  carrier and costs more.
</Callout>

## Do I need to do anything? [#do-i-need-to-do-anything]

No. If you leave this alone, MediSync sends your appointment reminders through its own
providers and bills you per segment. Everything below is optional.

You would set up your own provider if you want to:

* **Use your own carrier contract** — you may have negotiated cheaper rates.
* **Send from your clinic's name** instead of a shared number (a "sender ID").
* **Use a local carrier**, which is usually cheaper and more reliable for numbers in your
  own country.

## Adding your own provider [#adding-your-own-provider]

Go to **Settings → SMS → Providers** and choose **Add provider**.

Pick your provider from the list and fill in the credentials it asks for. The form changes
per provider — Twilio wants an Account SID and Auth Token, Vonage an API key and secret,
and so on. You will find these in your provider's own dashboard.

Then press **Test connection**. This checks your credentials with the provider without
sending anything. If it fails, the error from the provider is shown so you can see exactly
what is wrong.

Finally, **Send test message** sends a real SMS to a number you choose, so you can confirm
it arrives and looks right. Test messages are **not billed** to your usage allowance.

<Callout type="warn">
  Your credentials are encrypted and are **never shown again** after you save them — not to
  you, not to MediSync staff. You will only see the last four characters, like `••••9876`.
  If you lose them, get new ones from your provider and paste them in again.

  Editing a provider without retyping the secret is safe: leaving the field blank keeps the
  saved value.
</Callout>

## Fallback: what happens when a provider fails [#fallback-what-happens-when-a-provider-fails]

A **chain** is the list of providers MediSync tries for one country, in order.

If the first provider fails — it is down, it rejects the message, or it simply does not
answer — MediSync automatically tries the next one. Your patient still gets their reminder.

Set this up in **Settings → SMS → Routing**:

1. Choose a country (or **Any country**, which is used when a country has no chain of its
   own).
2. Add the providers you want, and use the ▲ ▼ arrows to put them in the order you want
   them tried.
3. Optionally set a **sender ID** per provider for that country — many countries require a
   sender name to be registered with the carrier in advance.

A typical Egyptian clinic sets Egypt to *SMS Misr, then Twilio*: the local carrier is
cheaper, and Twilio is there so nothing is ever lost if SMS Misr has a bad day.

### When your providers all fail [#when-your-providers-all-fail]

By default, if every provider in your chain fails, MediSync falls back to **its own**
providers so the message still gets through. You are billed for it as normal.

If you would rather a message simply fail than go out through a carrier you did not choose,
turn off **Fall back to MediSync providers** in **Settings → SMS**.

### When a provider is failing repeatedly [#when-a-provider-is-failing-repeatedly]

If a provider keeps failing, MediSync **stops trying it for a while** instead of making
every message wait for it to time out. It is retried automatically once it has had time to
recover. You will see it marked as *Paused* in the providers list, with the time it will be
tried again.

Some failures pause a provider immediately, because retrying cannot help: a **wrong API key**
will not start working, and an **empty balance** will not refill itself. Both show a clear
reason in the list.

## What is *not* retried [#what-is-not-retried]

Some failures are the **number's** fault, not the provider's, so MediSync does not try
another carrier — it would fail in exactly the same way and cost you money:

* The number is **not a valid mobile number**.
* The person has **replied STOP** and opted out. MediSync will not message them through
  another carrier; doing so would breach the rules you both agreed to.

These appear in the log as failed, with the reason.

## The message log [#the-message-log]

**Settings → SMS → Log** shows every message, newest first: who it went to, whether it was
delivered, which provider carried it, and what it cost.

Open a message to see its full history — including any providers that were tried and
failed:

> Twilio — rejected (500 server error)
> Vonage — accepted → **delivered**

This is the first place to look when someone says a patient did not get their reminder.

### "Delivered" vs "Sent" [#delivered-vs-sent]

* **Sent** — the provider accepted the message.
* **Delivered** — the carrier confirmed it reached the phone.

Not every provider reports delivery back to us. Messages sent through **AWS SNS** stay at
*Sent* forever — SNS does not tell us what happened afterwards. That is normal and does not
mean the message failed.

If a carrier tells us a message it accepted was **not** delivered, MediSync automatically
tries the next provider in your chain.

### Message text is removed after 90 days [#message-text-is-removed-after-90-days]

The **text** of each message is deleted after 90 days and shown as *redacted*, because it
usually contains patient details. Everything else — when it was sent, whether it arrived,
which provider, and what it cost — is kept, so your records and invoices stay complete.

## Spend [#spend]

**Settings → SMS → Spend** shows the last 30 days: how many messages were sent and
delivered, how many segments they used, and what they cost.

The cost shown here is what the **carriers** charged, which can be slightly more than what
you are billed — some providers charge for a message even when they reject it. Your invoice
only ever counts messages that were actually sent.

## Running out of allowance [#running-out-of-allowance]

Your plan includes a number of message segments per month. By default, if you go over,
**messages keep sending** and the extra is added to your invoice — we would rather your
patients get their reminders than have them silently stop.

If you would rather sending **stop** when you hit your limit, turn on **Enforce hard cap**
in **Settings → SMS**.


# Staff & roles (/en/docs/clinic-admin/staff-roles)



# Staff & roles [#staff--roles]

MediSync's permissions are role-based. You invite a person by email, pick
their role, and the role grants them a pre-defined set of permissions.
Admins can also tweak individual permissions when the defaults don't fit.

## Default roles [#default-roles]

| Role             | Typical user                    | Can do                                                 |
| ---------------- | ------------------------------- | ------------------------------------------------------ |
| **Admin**        | Clinic owner / practice manager | Everything on this page, billing, modules              |
| **Receptionist** | Front-desk                      | Book appointments, add/edit clients, check-in          |
| **Practitioner** | Doctor, nurse, therapist        | See their schedule, write notes, view their clients    |
| **Accountant**   | Finance                         | View invoices, record payments; no client medical data |
| **Read-only**    | Auditor, shadowing staff        | View everything assigned; cannot edit                  |

## Invite a teammate [#invite-a-teammate]

1. Open **Organization → Staff**.
2. Click **Invite teammate**.
3. Enter their email, pick a role, and optionally add a message.
4. Click **Send invitation**. MediSync emails the person with a link valid
   for seven days.

They'll walk through the [accept invitation](/en/docs/getting-started/accept-invite)
flow when they click the link.

## Resend or cancel an invitation [#resend-or-cancel-an-invitation]

Pending invitations show on **Organization → Staff → Pending**.

* **Resend** — sends a new email with a fresh link (the old one stops
  working).
* **Cancel** — invalidates the invitation. The person can't accept after
  this.

## Change a role [#change-a-role]

1. Open **Organization → Staff → Active**.
2. Click the teammate's row.
3. In the drawer that opens, change **Role**.
4. Save.

Role changes take effect immediately. The person may need to refresh their
browser to see new pages or lose access to old ones.

## Remove a teammate [#remove-a-teammate]

1. Open **Organization → Staff → Active**.
2. Click the row → **Remove from organization**.
3. Confirm. The person is signed out everywhere; their notes and other
   records stay, attributed to their name.

## Permissions beyond roles [#permissions-beyond-roles]

Some features have per-person toggles that override the role default. For
example, a receptionist can be granted access to **Analytics** without
becoming an admin. Open the teammate drawer and scroll to **Permissions**
to see available overrides.

### Add, edit and delete are separate toggles [#add-edit-and-delete-are-separate-toggles]

Several areas split their permission into individual actions instead of one
all-or-nothing switch, so you can hand out exactly as much as someone needs:

| Area                                               | Separate toggles              |
| -------------------------------------------------- | ----------------------------- |
| **Bookable resources** (doctors, rooms, equipment) | Add · Edit · Retire           |
| **Procedure templates**                            | Create · Edit · Delete        |
| **Branches**                                       | Create · Edit · Archive       |
| **Note templates**                                 | View · Create · Edit · Delete |
| **Booking shifts**                                 | Open · Edit · Close           |

A common use: give a senior receptionist **Add** and **Edit** on bookable
resources but not **Retire**, so they can keep the booking catalogue current
without being able to pull a doctor out of the schedule.

Each area also keeps a single **full control** toggle. Granting that is the
same as ticking every action for the area, and it stays ticked on roles that
already had it — you only need the individual toggles when you want to hold
something back.

***

**In-app help:** no dedicated in-app article yet for staff management.


# Get alerted before stock expires (/en/docs/clinic-admin/stock-expiry-alerts)



# Get alerted before stock expires [#get-alerted-before-stock-expires]

If you track batches or lots for your clinic's stock (vaccines, reagents, medications — anything
with an expiry date), you can set up an automation rule that alerts someone automatically as a
batch approaches its expiry date, instead of relying on staff to notice it on a shelf check.

> This needs both the **Products & Services** module (for stock tracking) and the **Automations**
> module active. Enable them under **Organization → Settings → Modules** if you don't see
> **Automations** in the sidebar — see [Modules](/docs/clinic-admin/modules).

## How it works [#how-it-works]

Every night, MediSync checks every batch of stock across your branches for its expiry date. Any
automation rule you've built for &#x2A;*"Material expiring"** re-checks its condition against that
batch and fires if it matches — so the alert always reflects the batch's up-to-date days-until-expiry,
not a value that was true when you first received the stock.

## Create the rule [#create-the-rule]

1. Go to **Automations** in the sidebar and click **New rule**.
2. Under **Trigger**, choose **Material expiring**.
3. Add a condition: **Days until expiry** — **less than or equal** — and the number of days'
   warning you want (e.g. `30` for a month's notice). This is the "how soon is soon enough to tell
   me" setting — without a condition here, you'd hear about every tracked batch expiring within a
   year, which is rarely what you want.
4. Add an action for what should happen when the condition matches — most clinics start with
   **Notify the owner**, which puts an alert in the owner's in-app notifications. You can also add
   **Send email**, **Send SMS**, or **Send WhatsApp message** (each needs its own module active) to
   reach someone faster — see [WhatsApp messages from automation
   rules](/docs/clinic-admin/automation-messaging-providers) if you want WhatsApp alerts to come
   from your own number.
5. Name the rule (e.g. "Expiring stock — 30 day warning") and save it. New rules save as **enabled**
   — toggle a rule off from the rules list any time without deleting it.

You can build more than one rule if different warning windows should go to different people — for
example, a 60-day heads-up to the person who reorders stock, and a 7-day urgent alert to the
clinic owner.

## What you'll see [#what-youll-see]

* Each alert names the specific product, lot number, and branch it's about, along with how many
  days remain until expiry.
* A batch that's already inside your warning window when you first create the rule is picked up on
  the very next nightly check — you don't need to wait for stock levels to change.
* You won't get the same alert twice in one day, even if a batch matches more than one of your
  rules' checks that night — but a batch that still matches the next day will alert again, so an
  expiring batch keeps surfacing until it's used up, discarded, or its stock record is updated.
* Check **Automations → Runs** to see every time a rule has fired, whether the notification went
  out successfully, and to re-run one that failed.

## Recording batches with expiry dates [#recording-batches-with-expiry-dates]

Expiry alerts only work for stock you've recorded with a lot number and expiry date when receiving
it — plain stock adjustments with no expiry date won't be picked up. See your **Products &
Services** stock-receiving workflow for how to attach lot/expiry details when stock comes in.


# Suppliers (/en/docs/clinic-admin/suppliers)



# Suppliers [#suppliers]

The **Organization → Products & Services → Suppliers** page is your clinic's vendor directory: the companies you raise purchase orders against. It's a full data table with the same tools as the Clients list.

> The page is only visible when the **Products & Services** module is active and your role can view suppliers.

## Finding suppliers [#finding-suppliers]

* **Search** — type in the search box to match a supplier's name, contact person, or email.
* **Filters** — open **Filters** to narrow by status (Active / Inactive), whether a supplier has an email or phone on file, and a created-date range. Each filter shows a live count.
* **Sort** — use the **Sort** menu (or click a column header) to order by name, contact, email, status, or created/updated date. Click again to flip the direction.

## Customizing the table [#customizing-the-table]

* **Columns** — the **Columns** button shows or hides any column. Extra columns (address, notes, created, updated) are hidden by default.
* **Reorder** — drag a column header to move it.
* **Pin** — pin a column to the left or right from its header menu so it stays visible while scrolling.

Your column layout is remembered on this device.

## Adding & editing [#adding--editing]

* **Add supplier** — the header button opens a form for name, contact person, email, phone, address, notes, and active status.
* **Edit / Deactivate / Delete*&#x2A; — open a row's &#x2A;*⋯** menu (or right-click the row). Click a row to open its detail panel, which also has an **Edit** shortcut.
* **Deleting** — a supplier that's referenced by a purchase order can't be deleted; deactivate it instead. The app tells you when this happens.

## Bulk actions [#bulk-actions]

Tick the checkboxes to select suppliers, then use the floating bar to **Activate**, **Deactivate**, or **Delete** them together. Suppliers with purchase-order history are skipped during a bulk delete and reported back to you.

## Exporting [#exporting]

The header **Export** menu downloads the current, filtered list as **CSV** or **XLSX** — handy for sharing with finance or backing up your vendor list.


# Website builder (/en/docs/clinic-admin/website-builder)



# Website builder [#website-builder]

**Organization → Website** is your clinic's own public site, built with a
drag-and-drop editor and published to a URL your clients can share. There
is no separate CMS to log into and no plugin to install — everything lives
inside MediSync alongside your appointments, clients, and billing.

## What you can build [#what-you-can-build]

The editor groups blocks into three categories on the left side of the
canvas:

* **Layout** — Hero, Image, Spacer. Use these to set the structure and
  visual rhythm of a page.
* **Clinic** — Services grid, Book appointment CTA, Staff list, Contact
  form. These are wired into MediSync data — for example, the **Book
  appointment** block uses your clinic's booking URL automatically.
* **Content** — Rich text. Paste in body copy, headings, and lists.

Each block has a settings panel on the right side of the canvas. Click
the block to edit its content; drag the dotted handle to reorder it.

## Creating your first page [#creating-your-first-page]

1. Open **Organization → Website**. If the Website module isn't on your
   plan, you'll see a "no permission" panel — talk to your sales rep.
2. Fill in **Page title** and **Slug** at the top of the page list. The
   slug becomes part of your URL (`/p/your-slug`) and can only contain
   lowercase letters, numbers, and hyphens.
3. Click **Create page**. The page opens in the editor.
4. Drag blocks from the left rail onto the canvas. Save is automatic
   (about once a second after you stop typing).
5. When you're happy, click **Publish** in the editor toolbar. The
   page is live within seconds.

You can take a published page off the public renderer at any time with
the **Unpublish** button in the editor's top-right.

## Page list [#page-list]

The Website page shows every page you own (drafts, published, and
archived). Click a page title to open the editor. The **Archive** button
soft-deletes the page — it disappears from the public site and frees a
slot back to your plan quota. Archiving is reversible by support.

## How visitors find your site [#how-visitors-find-your-site]

There are three ways to expose a published page; they layer on top of
each other:

1. **Custom domain.** Configure a custom domain in
   **Organization → Settings → Branding**. Once your DNS CNAME is
   pointing at MediSync and the cert provisions, your pages live at
   `https://yourclinic.com/p/<slug>`.
2. **Subdomain.** Claim a vanity subdomain in **Website → Settings**.
   Your site lives at `https://yourclinic.medisync.app/p/<slug>`.
3. **Path-based.** Every published page is always reachable at
   `https://medisync.app/o/<your-org-slug>/p/<slug>`, even before you
   set up DNS. This is the safe default — share this URL while you're
   still verifying a custom domain.

The page **slug** is the same across all three URLs. The org's
**homepage** (the page where **Homepage** is toggled on in
**Page settings**) is also served at the bare domain — for example
`https://yourclinic.com/`.

## Website settings [#website-settings]

**Website → Settings** controls the site-wide configuration:

* **Subdomain** — claim a `yourclinic.medisync.app` address. Letters,
  digits, hyphens only. Some names (`www`, `api`, `admin`, etc.) are
  reserved.
* **Favicon URL** — the small icon shown in browser tabs. Paste a
  direct URL to a 32×32 PNG or ICO.
* **Website is live** — the master switch. When this is OFF, every
  page on your site returns "not found" regardless of individual
  page status. Use this if you want to take the whole site down for
  maintenance.
* **Custom code (head + body)** — paste tracking pixels, analytics
  snippets, and other vendor-provided code here. See
  [Custom code](#custom-code) below for what's allowed.

Changes save when you click **Save settings**. They take effect within
about a minute on already-cached pages.

## Custom code [#custom-code]

The **Head code** and **Body code** sections let you paste vendor
snippets that should run on every page of your site — Google Tag
Manager, Meta Pixel, GA4, custom verification meta tags, and so on.

What's allowed:

* `<script>` tags (including async / defer / data-\* attributes — GTM
  and Meta Pixel both rely on these)
* `<noscript>` fallback wrappers
* `<meta>` tags (e.g. site verification, theme-color)
* `<link>` tags (preconnect, preload, custom canonical)
* `<style>` tags
* `<img>` tags (image pixels)

What's blocked at save time:

* `<iframe>`, `<object>`, `<embed>`, `<base>` — these are common XSS
  vectors and your save will fail with a clear error.
* Inline event handlers (`onclick="..."` etc.) — silently stripped
  by the sanitiser.
* `javascript:` URLs — stripped.
* `<form>`, `<input>`, `<button>` — silently stripped. To collect form
  data, use the **Contact form** block instead.

Each snippet is capped at **16 KB**. If yours is bigger, host it as a
file at your vendor and load it via `<script src="...">`.

A common pattern: paste your GTM container into **Head code**, then
use the **Body code** section for the `<noscript>` fallback the GTM
install snippet includes.

## Analytics [#analytics]

**Website → Analytics** shows traffic for your published pages:

* **Total views / Unique visitors / Avg per day** — KPI tiles for
  the selected range (last 7, 30, or 90 days).
* **Top pages** — the 10 most-visited pages in the range.
* **Recent form submissions** — the latest contact-form fills, newest
  first.

Visitor identity is **not** persisted. We hash the IP + browser
together with a salt that rotates every UTC midnight, so we can
count unique visitors per day without ever storing reversible
information about who visited. Raw events are retained for **90
days**; the daily rollups (the numbers shown in this dashboard)
are kept indefinitely.

## Plan limits [#plan-limits]

Your plan caps the number of **published pages** you can have at
once. Archiving a page frees a slot back immediately — there's no
hard delete, so you can always restore an archived page through
support if you change your mind.

When you hit the cap, the **Create page** button shows an error
message ("plan limit reached"). Either archive a page you no longer
need, or upgrade your plan.

## Tips [#tips]

* The **Book appointment CTA** block is greyed out in the editor if
  your plan doesn't include the Appointments module. Pages created
  with this block keep working if you later downgrade — they just
  become uneditable.
* Set one page as your **homepage** in Page settings. That page is
  served at the bare URL (e.g. `https://yourclinic.com/` rather than
  `https://yourclinic.com/p/home`).
* The **Contact form** block writes every submission to your
  analytics dashboard. There's no email forwarding yet — check the
  dashboard daily, or build a notification yourself with a webhook
  in the head code.


# Accept an invitation (/en/docs/getting-started/accept-invite)



# Accepting an invitation [#accepting-an-invitation]

Your clinic's admin invites you to MediSync by email. This page walks you
through the invitation flow end-to-end.

## What the email looks like [#what-the-email-looks-like]

You'll receive a message from **MediSync** (`no-reply@medisync-solutions.com&#x60;)
with the subject &#x2A;*"You've been invited to \<your clinic name>"**. The
email contains:

* The name of the clinic and the role you'll have.
* A **Accept invitation** button or link.
* A note about when the link expires.

> **The invitation link expires.** Most invitations stay valid for seven days.
> If yours has expired, ask the admin who invited you to send a new one from
> their clinic's **Staff** settings.

## Step 1 — Click the invitation link [#step-1--click-the-invitation-link]

Clicking the button opens MediSync in your browser at a URL like
`https://staff.medisync-solutions.com/accept-invite?token=…`. The page shows
the clinic name and the role you're about to accept.

## Step 2 — Create your password [#step-2--create-your-password]

If MediSync doesn't recognize your email, it will ask you to set a password:

1. Pick a password of at least 12 characters.
2. Include a mix of letters, numbers, and a symbol for strength.
3. Confirm the password.

If you already have a MediSync account with the same email, the invitation
is attached to your existing account — skip to step 3.

## Step 3 — Verify your email [#step-3--verify-your-email]

MediSync sends a one-time verification code to your inbox to confirm you own
the address. Enter the 6-digit code on the page that opens. The code expires
after 10 minutes; request a new one if needed.

## Step 4 — (Optional) Turn on two-factor authentication [#step-4--optional-turn-on-two-factor-authentication]

Your admin may require two-factor authentication (2FA). If they've made it
mandatory, you'll be prompted to set it up before you can enter MediSync.
See [Profile & security](/en/docs/getting-started/profile-security) for the
full walkthrough.

## Step 5 — You're in [#step-5--youre-in]

You'll land on your clinic's dashboard. Bookmark the URL so you can come
back directly next time.

## Troubleshooting [#troubleshooting]

* **"Invitation not found or expired."** Ask your admin to resend the
  invitation.
* **"This email is already on a different clinic."** Each MediSync account
  belongs to one clinic at a time. If you're switching clinics, sign out of
  the old one first, or ask support to transfer your account.
* **Didn't get the email.** Check your spam folder, then ask your admin to
  resend. If the admin's mail is being blocked by your mail server, they can
  add `no-reply@medisync-solutions.com` to the allowlist.

See [Troubleshooting](/en/docs/reference/troubleshooting) for more signals
and fixes.


# Customize your dashboard (/en/docs/getting-started/customize-dashboard)



# Customize your dashboard [#customize-your-dashboard]

Your **Overview** (the first page under Organization) is a grid of widgets you
arrange yourself — today's appointments, a KPI tile, the changelog, and more.
You can build several layouts and switch between them whenever you like.

## View vs. edit mode [#view-vs-edit-mode]

The Overview opens in **view mode** — everything is read-only. Click **Edit**
(top right) to start arranging. In edit mode you'll see a dotted canvas and
each widget grows a small toolbar.

When you're done, click **Save** to keep your changes or **Done** to leave edit
mode.

## Add a widget [#add-a-widget]

1. In edit mode, click **Add widget**.
2. Pick a category on the left (or **All widgets**) to narrow the list.
3. Click a widget card. It drops onto the grid.

## Arrange and resize [#arrange-and-resize]

In edit mode, each widget has a few controls:

* **Drag** — grab the handle (the dotted grip on the left of the widget's
  title bar) to move it.
* **Resize** — drag the bottom-right corner for a custom size, or use the
  **resize** menu (the frame icon) for quick **Small / Medium / Large** sizes.
* **Settings** — the gear icon (on widgets that support it) opens options like
  how many rows to show.
* **Remove*&#x2A; — the &#x2A;*×** takes the widget off your dashboard.

## Save and name a layout [#save-and-name-a-layout]

Click **Save**:

* If you're editing an existing layout, it updates in place.
* If you started fresh (blank or from a template), you'll be asked to **name**
  it — e.g. *Morning view* or *Billing day*. Names must be unique to you.

## Switch between layouts [#switch-between-layouts]

Once you've saved a layout, a **view switcher** appears next to the page title.
Open it to:

* jump between your saved layouts (the current one is ticked),
* **start from a template** your clinic has published,
* create a **new blank layout**, or
* **rename** / **delete** the layout you're viewing.

Switching while you have unsaved edits asks you to confirm first, so you never
lose work by accident. (You can't delete your only layout.)

## Where templates come from [#where-templates-come-from]

A fresh dashboard may start from a **template** your clinic admin set up — a
ready-made starting point, sometimes specific to your role. You can customize
it freely; saving makes your own private copy. Admins manage templates on the
[Dashboard templates](/en/docs/clinic-admin/dashboard-templates) page.

## Visual insights [#visual-insights]

Overview widgets now display visual insights alongside their numbers. Depending
on the widget type you'll see:

* **Charts and trend lines** — area charts for revenue and client trends; bar
  charts for ranked lists such as top services or aging receivables.
* **Donuts** — status breakdowns (invoices, appointments, client demographics)
  shown as a ring chart with a matching legend.
* **Gauges** — percentage KPIs such as quote conversion rate and no-show rate
  rendered as a radial dial.
* **Animated figures** — KPI numbers count up from zero on first load so you
  can see the value land, rather than it just appearing.

Animations automatically turn off when your operating system's **Reduce motion**
accessibility setting is enabled, and while you're in edit mode (so drag handles
don't conflict with chart interactions).

***

**In-app help:** no dedicated in-app article yet for dashboard customization.


# Profile & security (/en/docs/getting-started/profile-security)



# Profile & security [#profile--security]

Your account settings live under your avatar in the top-right corner of
MediSync. Click it and choose **Account** to open them.

## Update your profile [#update-your-profile]

Under **Account → Profile** you can edit:

* **Display name** — what teammates and clients see.
* **Phone number** — used for SMS two-factor codes (optional).
* **Avatar** — upload a square image (at least 256 × 256 px).

Changes save as soon as you click outside each field.

## Change your password [#change-your-password]

1. Open **Account → Security**.
2. Click **Change password**.
3. Enter your current password, then the new password twice.
4. Click **Save**. You'll stay signed in on this device and be signed out
   everywhere else.

If you've forgotten your current password, sign out and follow the &#x2A;*Forgot
your password?** flow on the sign-in page — see
[Sign in](/en/docs/getting-started/sign-in#i-forgot-my-password).

## Two-factor authentication (2FA) [#two-factor-authentication-2fa]

2FA adds a second step after your password: a short code generated by an
authenticator app (or sent to your email if you don't have one).

### Set it up [#set-it-up]

1. Open **Account → Security**.
2. Click **Enable two-factor authentication**.
3. Scan the QR code with an authenticator app such as **Google Authenticator**,
   **1Password**, or **Authy**, or enter the key manually.
4. Enter the 6-digit code your app shows to confirm the pairing.
5. MediSync displays **recovery codes** — download or write them down and
   store them somewhere safe. Each code works once and lets you sign in if
   you lose your authenticator.

### Sign in with 2FA [#sign-in-with-2fa]

After you enter your password, MediSync asks for a 6-digit code. Open your
authenticator app and type the code for MediSync. Codes rotate every 30
seconds — if one is about to expire, wait for the next.

### Turn 2FA off or reset the device [#turn-2fa-off-or-reset-the-device]

* **Turn it off.** In **Account → Security**, click **Disable two-factor
  authentication** and enter your password to confirm. Only do this on
  devices you trust.
* **Lost your authenticator.** Use one of the recovery codes saved during
  setup. If you've lost those too, your clinic admin can reset 2FA on your
  account.

## Active sessions [#active-sessions]

**Account → Security → Active sessions** lists every browser and device
currently signed into your account. For each session you can see the last
activity timestamp, IP address, and user agent. Click **Revoke** next to a
session to sign that device out.

Use **Revoke all other sessions** after changing your password or if you
suspect your account has been used without you.

## API access tokens [#api-access-tokens]

If your clinic integrates MediSync with another tool, **Account → Security
→ Access tokens** lets you create short-lived tokens for API use. Each
token shows its scope, last-used time, and expiry. Create one, copy it
immediately (it's only shown once), and revoke it when the integration no
longer needs it.

***

**In-app help:** `account_access_token`, `account_active_sessions`,
`account_email_verified`, `account_session_expires_in`.


# Sign in (/en/docs/getting-started/sign-in)



# Sign in to MediSync [#sign-in-to-medisync]

MediSync has a separate sign-in page for each type of user. Open the one that
matches your role:

* **Clinic staff** — [staff.medisync-solutions.com](https://staff.medisync-solutions.com/sign-in)
* **Clinic admin / super-admin** — [admin.medisync-solutions.com](https://admin.medisync-solutions.com/sign-in)
* **Client** — [app.medisync-solutions.com](https://app.medisync-solutions.com/sign-in)

Each portal accepts the same credentials you received by email when your
account was created.

## Sign in with email and password [#sign-in-with-email-and-password]

1. Open the portal that matches your role (see links above).
2. Enter the email address your account was created with.
3. Enter your password.
4. Click **Login**.

If two-factor authentication is enabled on your account, MediSync will ask
for a 6-digit code after the password step. See
[Profile & security](/en/docs/getting-started/profile-security) for details.

## Sign in with Google [#sign-in-with-google]

On any sign-in page you'll see an &#x2A;*"Or continue with"** section and a
**Login with Google** button. Click it and pick the Google account tied to
your work email. The first time you sign in with Google, MediSync links that
Google account to your MediSync user automatically.

> **Note.** Google sign-in only works if your administrator has enabled it
> for your organization, and only with the email domain your administrator
> has approved.

## I forgot my password [#i-forgot-my-password]

1. On the sign-in page, click &#x2A;*Forgot your password?**
2. Enter the email on your account and click the reset button.
3. Check your inbox for a message from MediSync and click the link it
   contains. The link is valid for a limited time for security reasons — if
   it has expired, repeat step 1 to request a new one.
4. Enter a new password and confirm it. You'll be redirected to the sign-in
   page.

If the reset email doesn't arrive within a few minutes, check your spam
folder, confirm the email address is correct, and see
[Troubleshooting](/en/docs/reference/troubleshooting).

## Staying signed in [#staying-signed-in]

MediSync keeps you signed in across browser restarts by default. For shared
computers, sign out explicitly when you're done:

1. Click your avatar in the top-right corner.
2. Choose **Sign out**.

***

**In-app help:** no equivalent in-app article yet — the sign-in page is your
first interaction with MediSync.


# Welcome (/en/docs)



# Welcome to the MediSync Help Center [#welcome-to-the-medisync-help-center]

Find answers to common questions and step-by-step walkthroughs for everything
MediSync can do. Pick the section that matches how you use MediSync.

## For everyone [#for-everyone]

* **[Getting started](/en/docs/getting-started/sign-in)** — sign in, accept an
  invitation to your clinic, and secure your account with two-factor
  authentication.

## For clinic staff [#for-clinic-staff]

* **[Clinic admin](/en/docs/clinic-admin)** — set up your organization, choose
  a plan, invite teammates, and decide which features your clinic uses.
* **[Receptionist](/en/docs/receptionist)** — add and import clients, book
  and reschedule appointments, check clients in, and manage tags.
* **[Practitioner](/en/docs/practitioner)** — your daily schedule, client
  notes, and medical history.

## For clients [#for-clients]

* **[Client Portal](/en/docs/client-portal)** — register, book appointments, and view
  your records. Some client features are still rolling out — each page marks
  what's live today.

## Can't find what you need? [#cant-find-what-you-need]

Head to &#x2A;*[Reference](/en/docs/reference/faq)** for frequently asked
questions, troubleshooting tips, and how to reach our support team.

## For AI agents [#for-ai-agents]

We publish this documentation in formats that are friendly to LLMs and
scripted tooling.

* **[llms.txt](/llms.txt)** — a short, machine-readable index of every
  page (title, URL, description). Follows the [llmstxt.org](https://llmstxt.org)
  convention — most AI assistants look for it automatically.
* **[llms-full.txt](/llms-full.txt)** — the full concatenated Markdown of
  every docs page in one download. Use this when you want an entire
  knowledge dump in one shot.
* **`.mdx` on any page URL** — append `.mdx` to any docs URL to fetch
  just that page as raw Markdown. For example
  [/en/docs/clinic-admin/modules.mdx](/en/docs/clinic-admin/modules.mdx).
  Every docs page works this way in both `/en` and `/ar`.

Every docs page also has a **copy-as-Markdown** button and an "Open in
ChatGPT / Claude / other AI" dropdown at the top-right — handy for
pasting a single page into a chat.


# Client notes (/en/docs/practitioner/client-notes)



# Client notes [#client-notes]

Notes are the clinical record of a visit. Each appointment can have
one or more notes attached. You write them in the note editor — rich
text with headings, lists, tables, attachments, and tagged mentions.

## Start a note [#start-a-note]

From a client's profile → **Notes → New note**, or from an active
consultation, click **Start note**.

## The editor [#the-editor]

The editor is based on TipTap. Key features:

* **Formatting toolbar** — headings, bold/italic, lists, quotes,
  tables, code blocks.
* **Images** — drag-and-drop, paste, or click **Insert image**.
  Stored securely, not accessible outside MediSync.
* **Attachments** — PDF, DOCX, lab reports. Click **Attach file**.
* **@mentions** — type `@` to mention a colleague; they get notified
  of the note.
* **Templates** — click **Insert template** to drop in a pre-written
  structure (SOAP, discharge summary, custom).
* **Auto-save** — the note saves every few seconds as you type. A
  **Saved just now** indicator is shown at the bottom-right.

## Templates [#templates]

Templates live at the clinic level. Admins can add new ones under
**Organization → Note templates**. Practitioners can create personal
templates from their profile settings.

Every template card has a **View** (eye) action that opens a read-only
preview of the template body — exactly what gets inserted when you type
its `/slash` command. This works for the clinic's built-in **System**
templates too, which you cannot edit but can now read before using. From
the preview of one of your own templates, **Edit** takes you straight to
the edit form.

## Who sees what [#who-sees-what]

* **Practitioners** — see every note on clients under their care.
* **Admins** — see every note in the clinic.
* **Receptionists / accountants** — see note **metadata** (who, when,
  type) but not the content.
* **Clients** — see notes if the admin has enabled
  **Visible to client** on the note type.

Each note has a **Visibility** control at the top if you need to
override per-note (e.g. draft a private note).

## Amending a finalised note [#amending-a-finalised-note]

Once you click **Complete note**, it becomes part of the medical
record and is amendable but not deletable. Click **Amend** to add a
follow-up paragraph; both the original text and the amendment are
preserved.

## Keyboard shortcuts [#keyboard-shortcuts]

| Shortcut           | Action                                |
| ------------------ | ------------------------------------- |
| `Ctrl / ⌘ + S`     | Manual save (auto-save already saves) |
| `Ctrl / ⌘ + B`     | Bold                                  |
| `Ctrl / ⌘ + I`     | Italic                                |
| `Ctrl / ⌘ + K`     | Insert link                           |
| `Ctrl / ⌘ + Enter` | Complete the note                     |


# Daily schedule (/en/docs/practitioner/daily-schedule)



# Daily schedule [#daily-schedule]

## The Today tab [#the-today-tab]

`Today` is the first thing that opens when you sign in. It shows every
client scheduled with you for the day, top-to-bottom in time order.

Each row shows:

* Client name and phone.
* Appointment type.
* Arrival status (**Scheduled**, **Arrived**, **In consultation**,
  **Completed**, **No-show**).
* A note if the receptionist added one at booking.

Click a row to open the client's profile in a side panel. Click
**Start consultation** to move the status forward.

## The calendar [#the-calendar]

**Appointments → Calendar** gives the week/month view across all
practitioners. Your slots are colour-coded; everyone else's are
dimmed.

Use the calendar to:

* See when you're free for a follow-up.
* Glance ahead at next week.
* Drag an appointment to a new time (receptionists typically handle
  this but you can too).

## Mark yourself unavailable [#mark-yourself-unavailable]

If you need to block time (lunch, admin, a personal appointment):

1. **Appointments → Calendar → your column header → Block time**.
2. Pick start, end, and a reason.
3. Save.

The block shows on the calendar in a neutral colour. Receptionists
won't be able to book you over it.

## Mark yourself out for the day [#mark-yourself-out-for-the-day]

For sick days or unplanned leave, use **Mark unavailable for the day**
on your column header. MediSync lists every affected appointment and
offers to cascade them to another practitioner or reschedule. See
[Reschedule / cancel → Bulk reschedule](/en/docs/receptionist/reschedule-cancel#bulk-reschedule).

## Working hours [#working-hours]

Your default working hours are set by the clinic admin. If they're
wrong — you work Tuesdays and Thursdays, but the calendar shows you as
available all week — ask your admin to update your profile under
**Organization → Staff → Practitioners**.


# Overview for practitioners (/en/docs/practitioner)



# Practitioner — overview [#practitioner--overview]

As a practitioner your day in MediSync revolves around three screens:

1. **Today** — the list of clients scheduled with you, in order.
2. **Client profile** — everything about the person currently in the room.
3. **Note editor** — where you record what happened during the visit.

Receptionists handle booking, check-in, and billing; you focus on the
clinical workflow.

## A typical consultation flow [#a-typical-consultation-flow]

1. Client is **Checked in** by reception — their row on **Today** shows
   as **Waiting for you**.
2. Click **Start consultation**. Status moves to **In consultation**.
3. Open the client's profile and the **Medical history** tab for
   context from past visits.
4. Write your **Note** — see
   [Client notes](/en/docs/practitioner/client-notes).
5. Attach any documents the client brought (labs, imaging).
6. Click **Complete visit**. If billing is on, a draft invoice is
   created for the receptionist to finalise.

## Next [#next]

* **[Daily schedule](/en/docs/practitioner/daily-schedule)** — how the
  calendar + Today tab work.
* **[Client notes](/en/docs/practitioner/client-notes)** — the editor,
  templates, auto-save.
* **[Medical history](/en/docs/practitioner/medical-history)** — finding
  past visits, allergies, medication history.


# Medical history (/en/docs/practitioner/medical-history)



# Medical history [#medical-history]

On a client's profile the **Medical history** tab is the single view
a practitioner should glance at before starting a consultation.

## Sections [#sections]

* **Allergies** — drug, food, and environmental allergies with
  severity. Critical items show a red banner at the top of the
  profile regardless of which tab you're on.
* **Chronic conditions** — diabetes, hypertension, etc. Each has a
  start date and optional notes.
* **Current medications** — name, dose, frequency, prescribing
  practitioner, refill history.
* **Past visits** — reverse-chronological list of all completed
  appointments with your clinic.
* **Family history** — optional, captured during intake or first
  visit.
* **Social history** — smoking, alcohol, occupation — if your
  clinic's intake captures it.

## Editing history [#editing-history]

Each row has an **Edit** action. Changes are versioned — you can see
previous values and who changed them under **History of changes**.

Rows you can add quickly from the section header:

* **+ Allergy** — type, severity, reaction description.
* **+ Condition** — code (optionally from ICD-10), start date, notes.
* **+ Medication** — name, dose, frequency, start/end date.

## Cross-referencing [#cross-referencing]

Click any medication or condition to see **every past note that
mentioned it**. Useful when piecing together a history from scattered
visits.

## Imports from external records [#imports-from-external-records]

If a client brought records from another clinic (uploaded as
documents on their profile), use **Import to history** on a PDF to
extract allergies / medications with AI assistance. The extraction is
a suggestion — you review and accept before it's added.

## Who can edit [#who-can-edit]

* **Practitioners** — any section.
* **Admins** — any section.
* **Receptionists** — allergies only (typically captured at intake).
* **Clients** — read-only through the client portal (when live).


# Add a client (/en/docs/receptionist/add-client)



# Add a client [#add-a-client]

Open **Clients → Add client** or press `G` then `P` anywhere in the
staff dashboard.

## The intake form [#the-intake-form]

Fields on the form depend on how your clinic admin has configured client
fields. Common sections:

### Identity [#identity]

* **Photo** — at the top of the first step you can add a client photo.
  Click **Upload photo**, pick a JPEG, PNG, WebP, or GIF (up to 5 MB), and
  a preview appears next to the client's initials. Use **Replace photo**
  to swap it or **Remove** to clear it. The photo then shows on the client
  list and the client's chart. On a brand-new client the photo is saved
  once you finish creating the record; when editing an existing client it
  saves immediately.
* **Name** — the number of name fields depends on the clinic's
  [name mode](/en/docs/clinic-admin/client-field-config#name-mode). Type
  as you would speak the name; MediSync doesn't transliterate.
* **Date of birth** — MediSync infers age and flags paediatric dosing
  cases downstream.
* **Sex** — biological sex. Some clinics add a separate custom field for
  gender identity.
* **National ID** / **Passport** — optional but indexable for fast lookup.

### Contact [#contact]

* **Phone** — the primary number. Used for SMS reminders if notifications
  are on. The phone field has a **country selector** on the left: pick
  the client's country first, then type the number in the national
  format (without a leading `+` or country code). MediSync converts it
  to international format automatically before saving. If the number
  isn't valid for the selected country, you'll see an error prompt —
  correct the number or choose the right country and try again.
* **Email** — used for account-linked features (client portal,
  e-receipts).
* **Preferred language** — English or Arabic. Emails and SMS reminders
  use this.

### Address & more [#address--more]

The rest of the form depends on your clinic's custom fields. Ask your
admin if you're unsure which fields apply to which client type.

## Required vs. optional [#required-vs-optional]

Fields with a red asterisk are required. The form won't submit with a
required field empty. If a field is required that shouldn't be — or
vice-versa — ask your admin (see
[Client field configuration](/en/docs/clinic-admin/client-field-config#required-fields)).

## Duplicate detection [#duplicate-detection]

While you type, MediSync warns you if a client with the same name + date
of birth already exists. Click the warning to open the existing record
rather than creating a duplicate.

If the match is a false positive (e.g. twins), click **Continue creating
new client**.

## After saving [#after-saving]

You land on the client's profile page. From here you can:

* **Book an appointment** — see [Book an appointment](/en/docs/receptionist/book-appointment).
* **Add documents** — upload IDs, past records, consents.
* **Start a note** — if you're also the practitioner, write a first-visit
  note.

***

**In-app help:** `clients_add`, `clients_required_fields_setting`.


# Book an appointment (/en/docs/receptionist/book-appointment)



# Book an appointment [#book-an-appointment]

There are two natural starting points:

* **From a client profile** — click the **Book appointment** button.
  The client is pre-filled.
* **From the calendar** — &#x2A;*Appointments → Calendar → +**, then pick a
  client.

## Pick a time [#pick-a-time]

The calendar shows each practitioner's availability. Clinic-wide
configuration:

* **Slot duration** — default length of one appointment. Your admin set
  this.
* **Working hours** — when each practitioner is available.
* **Overlap policy** — does the clinic allow double-booking? Some
  clinics do (walk-ins), others don't.

Drag across a time range to create a booking of that length, or click a
single slot and use the dropdown to change the duration.

## Appointment details [#appointment-details]

The drawer that opens asks for:

* **Practitioner** — pre-filled from the column you clicked on.
* **Duration** — pre-filled with the clinic default.
* **Type** — consultation, follow-up, procedure, etc. (set by your
  admin).
* **Note to the practitioner** — short free-text for anything relevant
  (e.g. "coming in for stitches removal").
* **Send reminder** — toggle SMS/email reminder in advance
  (default: on, if notifications module is enabled).

Click **Book**.

## Custom fields [#custom-fields]

If your admin has defined **custom fields** for appointments, a
dedicated **Custom fields** section appears in the booking form. Fill in
whatever applies (text, numbers, yes/no toggles, dates, or pick-lists);
required fields are marked with a red asterisk and must be completed
before the booking saves. These values are stored on the appointment and
can be used to **filter the appointments list** — open the filter rail
and the same fields appear as filter rows so you can narrow the list to,
say, every appointment tagged for a specific region or referral source.

The section only shows when custom fields are configured; clinics that
haven't set any won't see it.

## Confirmation [#confirmation]

* The appointment immediately appears on the calendar, in
  **Appointments → Upcoming**, and on the client's profile.
* If SMS reminders are on, the client gets a confirmation message
  right away.
* If the clinic uses **self-confirmation**, the confirmation message
  has a button the client taps; until tapped, the appointment stays
  as **Pending** with a yellow badge.

## Booking in the future [#booking-in-the-future]

Clinics set a **maximum advance booking** window (30, 60, or 90 days is
common). The calendar dims out dates beyond it. Change the window
under the **Appointments** module settings if you need more runway.

## Same-day walk-ins [#same-day-walk-ins]

Click **Book** on an empty slot today and set the appointment to start
immediately. Some clinics have a special **Walk-in** type that doesn't
require slot duration assumptions.

***

**In-app help:** `appointments_slot_duration`,
`appointments_max_advance_booking_days`,
`appointments_allow_overlap`,
`appointments_require_confirmation`.


# Check in clients (/en/docs/receptionist/check-in)



# Check in a client [#check-in-a-client]

The **Today** tab on the staff dashboard shows the day's appointments in
order. As clients arrive, you move them through the statuses.

## Statuses [#statuses]

| Status              | Meaning                                     |
| ------------------- | ------------------------------------------- |
| **Scheduled**       | Appointment exists, client not yet arrived  |
| **Arrived**         | Client has checked in at reception, waiting |
| **In consultation** | Practitioner has started the visit          |
| **Completed**       | Visit finished, ready for billing           |
| **No-show**         | Client didn't arrive within the cutoff      |

The dashboard highlights the next action for each row.

## Check someone in [#check-someone-in]

1. Find the appointment row on **Today**. Use the search box if the
   list is long.
2. Click **Check in**.
3. Verify identity using whatever method your clinic uses — photo ID,
   phone number confirmation, national ID.
4. If the client's details look wrong (phone number changed, email
   bounce), click the client name to open the profile, update, and
   come back.
5. Click **Confirm check-in**.

The row moves to **Arrived** and the practitioner sees it in their
queue.

## Walk-ins (no existing booking) [#walk-ins-no-existing-booking]

1. On **Today**, click **Walk-in**.
2. Search for the client. If they're not in the system, click
   **Create new client** and go through intake.
3. Pick a practitioner with an open slot.
4. Click **Check in**.

MediSync creates the booking at the current time and checks the
client in in one step.

## Mark a no-show [#mark-a-no-show]

If a client hasn't arrived `<cutoff>` after their slot start,
MediSync doesn't automatically mark it — someone has to. (Auto no-show
is on the roadmap.)

1. Open the appointment.
2. Click **Mark no-show**.
3. Add an optional note.
4. Confirm.

No-show status counts toward the client's rate in analytics and can
optionally trigger a follow-up message.

## Reverse a check-in [#reverse-a-check-in]

If you checked someone in by mistake (wrong client, wrong appointment):

1. Open the appointment → **More → Revert check-in**.
2. Confirm.

This is an audit-logged action; the reversal is visible in history.


# Client history (/en/docs/receptionist/client-history)



# Client history [#client-history]

Every client has a **History** tab on their profile that lists every
interaction with your clinic, newest first.

## What history includes [#what-history-includes]

* **Appointments** — scheduled, completed, cancelled, no-show, with
  practitioner and outcome.
* **Notes** — practitioner notes from each visit (access depends on
  your role).
* **Documents** — uploaded files: IDs, past records, consents, test
  results.
* **Invoices & payments** — visible to receptionists and accountants,
  not to practitioners by default.
* **Messages** — SMS / email MediSync sent on the client's behalf
  (reminders, confirmations, invoices).
* **Tag changes** — each tag added or removed, with who did it and
  when (see [Tags](/en/docs/receptionist/tags)).

## Filter and search [#filter-and-search]

* **Type filter** (top of the list) — show only appointments,
  documents, etc.
* **Date range** — narrow to a specific month or quarter.
* **Free text** — search within notes and message bodies.

## Open a past visit [#open-a-past-visit]

Click any row to open the full record:

* **Appointment** → summary, start/end time, practitioner, attached
  notes and documents, invoice status.
* **Note** → the full note plus any attachments.
* **Document** → inline preview for PDFs and images.

## Export [#export]

For client-requested copies of records (often required by law):

1. Open **More → Export history**.
2. Pick the types to include (appointments, notes, documents,
   invoices).
3. Choose **PDF bundle** or **CSV** depending on what the client
   needs.
4. Click **Generate**.

MediSync produces a download in a few seconds. The export is
audit-logged — your admin can see who exported what when.

## Merging duplicate clients [#merging-duplicate-clients]

If a client ends up with two profiles (same person, wrong date of
birth on one), a clinic admin can merge them under
**Clients → More → Find duplicates → Merge**. Receptionists can't
do this themselves — flag it up to the admin with a
[tag](/en/docs/receptionist/tags) like `duplicate-merge-needed`.

***

**In-app help:** no dedicated in-app article yet for client history.


# Import clients (/en/docs/receptionist/import-clients)



# Import clients from a CSV [#import-clients-from-a-csv]

Use this when you're moving to MediSync from another EMR, or when your
clinic has a historical client list to onboard.

## Prepare the CSV [#prepare-the-csv]

1. Export your existing client list as CSV with **UTF-8** encoding.
2. Download the MediSync template: **Clients → Import → Download
   template**. It has the exact columns MediSync expects, in the right
   order.
3. Copy data from your source CSV into the template columns. Map your
   columns to ours — don't rename the MediSync columns.

### Column notes [#column-notes]

* **Name columns** — how many name columns you need depends on your
  clinic's [name mode](/en/docs/clinic-admin/client-field-config#name-mode).
  Extra name columns for modes you're not using can be left blank.
* **Date of birth** — `YYYY-MM-DD`. Other formats are accepted but
  ambiguous (is `01/02/2024` Jan 2 or Feb 1?). Stick to ISO.
* **Phone** — you can use either the full international format (e.g.
  `+966501234567`) or just the national number without a country code
  (e.g. `0501234567`). MediSync resolves national numbers to
  international format using your clinic's configured country. If a
  phone number can't be recognized as valid, that row is flagged with an
  error in the review step — the rest of the import continues. Correct
  the flagged rows and re-upload them.
* **Custom fields** — one column per custom field, using the **column
  header** your admin chose.

## Upload [#upload]

1. **Clients → Import → Upload CSV**.
2. Drop the file or click to pick it.
3. MediSync parses the first 50 rows and shows a **preview** — each
   column mapped to the corresponding MediSync field. Scroll to verify
   the mapping looks right.
4. Click **Start import**.

## Review errors [#review-errors]

If any rows are rejected, MediSync shows:

* Row number.
* Reason (e.g. "Missing required field: phone").
* The raw row content.

Download the error CSV, fix the rows in a spreadsheet, and re-upload —
only the fixed rows re-import. Already-imported rows are skipped
automatically based on their **national ID** (or email if no ID).

## Limits [#limits]

* **10,000 rows per file.** Split larger imports across multiple files.
* **50 MB per file**, \~4 MB per file for the preview-only path.
* Import is **idempotent on national ID**: running the same CSV twice
  doesn't duplicate clients (they're matched and skipped).

## After import [#after-import]

Every imported client shows an &#x2A;*Imported on `<date>`** tag by default.
Use the [Tags](/en/docs/receptionist/tags) workflow to filter the list
and review quality.

***

**In-app help:** `clients_import`.


# Overview for receptionists (/en/docs/receptionist)



# Receptionist — overview [#receptionist--overview]

The receptionist workflow in MediSync is built around three loops:

1. **Registering clients** — add or import, keep their details current.
2. **Scheduling appointments** — book, remind, reschedule, cancel.
3. **Running the day** — check clients in when they arrive, find their
   history, tag records for follow-up.

Everything you need is in the **staff.medisync-solutions.com** sidebar,
grouped under **Clients**, **Appointments**, and **Today**.

## At a glance [#at-a-glance]

| Task                | Shortcut                                     |
| ------------------- | -------------------------------------------- |
| Add a client        | `G` then `P`, or **Clients → Add**           |
| Find a client       | `/` to focus the global search               |
| Book an appointment | **Appointments → +** from any client profile |
| Check someone in    | **Today** tab on the main dashboard          |

## Recommended reading order [#recommended-reading-order]

1. **[Add a client](/en/docs/receptionist/add-client)** — learn the
   intake form and the required-field rules your clinic set.
2. **[Book an appointment](/en/docs/receptionist/book-appointment)**.
3. **[Check in](/en/docs/receptionist/check-in)** — the arrival workflow
   that moves a booking from "Scheduled" to "In consultation".
4. **[Reschedule / cancel](/en/docs/receptionist/reschedule-cancel)** —
   cancellation windows and rebooking.
5. **[Import clients](/en/docs/receptionist/import-clients)** — a
   once-off task when migrating from another system.
6. **[Client history](/en/docs/receptionist/client-history)** — find
   and link past visits.
7. **[Tags](/en/docs/receptionist/tags)** — flag clients for follow-up,
   test results, billing issues.


# Reschedule or cancel (/en/docs/receptionist/reschedule-cancel)



# Reschedule or cancel an appointment [#reschedule-or-cancel-an-appointment]

## Reschedule [#reschedule]

Rescheduling keeps the same appointment record — it just moves time.
Use this rather than cancelling + rebooking to preserve the history.

1. Open the appointment (from the calendar or client profile).
2. Click **Reschedule**.
3. Pick a new slot. The same practitioner is pre-selected; change if
   needed.
4. Add a **reason** — free-text, shown to the client in the reminder.
5. Click **Save**.

The client is notified via the same channel (SMS/email) the original
confirmation went out on.

### Drag on the calendar [#drag-on-the-calendar]

Shortcut: drag the appointment block on the calendar view to a new
slot. MediSync asks for confirmation before saving.

## Cancel [#cancel]

1. Open the appointment.
2. Click **Cancel appointment**.
3. Pick a **reason** — client request, clinic closed, practitioner
   unavailable, etc.
4. Toggle **Notify client** if you want a cancellation message sent
   (usually yes).
5. Confirm.

The slot frees up immediately.

## Cancellation window [#cancellation-window]

Clinics configure a **cancellation window** — the minimum notice a
client must give for a cancellation not to count against them. Common
values are 24 or 48 hours.

If a client cancels inside the window, MediSync:

* Marks the appointment as &#x2A;*Cancelled (late)**.
* Optionally charges a late-cancellation fee (your admin toggles this).
* Counts toward the client's no-show rate in analytics.

If **you** cancel inside the window (clinic-initiated), MediSync does
**not** penalise the client regardless of the toggle.

## Bulk reschedule [#bulk-reschedule]

If a practitioner is unexpectedly out (illness, emergency):

1. Open **Appointments → Calendar**.
2. Click the practitioner's column header.
3. Choose **Mark unavailable for the day**.
4. MediSync lists every affected appointment with a **Reschedule all**
   button that walks each one through rescheduling in turn.

***

**In-app help:** `appointments_cancellation_window_hours`.


# Tags (/en/docs/receptionist/tags)



# Tags [#tags]

Tags are short labels you attach to clients or individual records.
They're the fastest way to slice your client list for a specific
need — "who has test results pending?", "who's flagged for billing
review?".

## Creating a tag [#creating-a-tag]

Tags live at the clinic level — every staff member sees the same set.

1. **Clients → Tags → New tag**.
2. Pick a short name (one or two words), a colour, and optionally a
   description.
3. Decide whether the tag is:
   * **Client-level** — attaches to the whole client record.
   * **Visit-level** — attaches to one appointment or note.
4. Save.

## Attaching a tag [#attaching-a-tag]

* **To a client** — open the client profile, click **Tags**, pick
  one or type to add a new tag on the fly.
* **To an appointment** — open the appointment drawer → **Tags**.

## Filtering by tag [#filtering-by-tag]

On **Clients**, open the filter panel (top-right) and pick one or
more tags. The list narrows to clients carrying all the chosen tags.
The URL updates, so you can bookmark common views.

## Common tag taxonomies [#common-tag-taxonomies]

* **Status markers** — `new-client`, `vip`, `insurance-verified`.
* **Follow-up** — `recall-6-months`, `results-pending`, `missed-referral`.
* **Billing** — `outstanding-balance`, `insurance-claim-pending`.
* **Quality** — `duplicate-merge-needed`, `imported-data-review`.

Agree a taxonomy as a clinic — a sprawl of one-off tags is worse than
no tags.

## Bulk apply / remove [#bulk-apply--remove]

On **Clients**, tick multiple rows, click **Bulk actions →
Add/remove tags**. Useful after an import: apply `imported-YYYY-MM`
to the whole batch.

## Automatic tags [#automatic-tags]

Some tags appear automatically:

* `imported-on-YYYY-MM-DD` — added by the [import](/en/docs/receptionist/import-clients)
  flow.
* `no-show-in-last-30-days` — added nightly if a no-show happened in
  that window.

You can remove these manually but MediSync will re-apply them if the
condition is still true.

***

**In-app help:** no dedicated in-app article yet for tags.


# Contact support (/en/docs/reference/contact-support)



# Contact MediSync support [#contact-medisync-support]

The fastest route depends on who you are and what the problem is.

## Clients [#clients]

For anything about **your** appointments, bills, or records, contact
your clinic directly. Their phone and email are on
[app.medisync-solutions.com](https://app.medisync-solutions.com) under
**About your clinic**.

For a problem with the client portal itself (sign-in, 2FA, etc.),
email us at &#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)**.

## Clinic staff (receptionists, practitioners) [#clinic-staff-receptionists-practitioners]

First ask your **clinic admin** — they can reset passwords, change
roles, unblock modules, and resolve most day-to-day issues without
needing MediSync support.

If your admin can't help, email &#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)**
with:

* Your clinic name and the URL you use to sign in.
* The account email you're signing in with.
* A short description of the problem.
* Screenshots if the problem is visual.
* The approximate time it happened (local time is fine).

## Clinic admins [#clinic-admins]

Admins have a support form built into the app:

1. Sign in at [admin.medisync-solutions.com](https://admin.medisync-solutions.com).
2. Click the &#x2A;*?** icon in the top-right.
3. Choose **Contact support**.
4. Pick a category, write your message, attach files if needed.

Using the in-app form means your request is automatically tagged with
your organization ID, plan tier, and the page you were on — we can
help faster.

You can also email &#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)** if the in-app
form isn't usable (e.g. you can't sign in).

## Response times [#response-times]

| Plan    | First response SLA                          |
| ------- | ------------------------------------------- |
| Trial   | Best effort (usually within 1 business day) |
| Starter | 1 business day                              |
| Clinic  | Same business day                           |
| Group   | 4 business hours, 24/7 for P1 incidents     |

Business hours are 9-18 local to your clinic's timezone, Sun–Thu
(Gulf region) or Mon–Fri (other regions).

## Security issues [#security-issues]

If you believe you've found a security vulnerability, please email
&#x2A;*[security@medisync-solutions.com](mailto:security@medisync-solutions.com)** rather than support@ — we
triage those separately and prioritize them.

## Status page [#status-page]

Major incidents and scheduled maintenance are posted at
**status.medisync-solutions.com**. Check there before raising a
support request — if the status is already **investigating** or
**identified**, we're on it.


# FAQ (/en/docs/reference/faq)



# Frequently asked questions [#frequently-asked-questions]

## Accounts & sign-in [#accounts--sign-in]

### I'm locked out of my account. [#im-locked-out-of-my-account]

Follow the [Forgot password flow](/en/docs/getting-started/sign-in#i-forgot-my-password).
If that doesn't work, contact your clinic admin — they can reset your
account.

### Can one person have two accounts? [#can-one-person-have-two-accounts]

No — MediSync enforces one account per email. If you work at two
clinics that both use MediSync, ask each to invite you under a
different email.

### Can I change my email address? [#can-i-change-my-email-address]

Yes — **Account → Profile → Email**. MediSync sends a verification
code to the new address; enter it to confirm.

### Does MediSync support single sign-on (SSO)? [#does-medisync-support-single-sign-on-sso]

Google sign-in is available for all users if the clinic admin enables
it. SAML-based SSO for enterprise plans is on the roadmap.

## Clients & appointments [#clients--appointments]

### How far in advance can clients book? [#how-far-in-advance-can-clients-book]

Your clinic admin sets the maximum advance booking window — typically
30, 60, or 90 days. See
[Clinic admin → Modules → Appointments](/en/docs/clinic-admin/modules).

### What happens when a client cancels late? [#what-happens-when-a-client-cancels-late]

If they cancel inside the clinic's cancellation window, it counts as a
late cancellation and may trigger a fee. Cancellations you (the clinic)
make never penalise the client. See
[Reschedule / cancel](/en/docs/receptionist/reschedule-cancel#cancellation-window).

### Can I merge duplicate client records? [#can-i-merge-duplicate-client-records]

Admins can merge duplicates via
**Clients → More → Find duplicates → Merge**. Receptionists can flag
duplicates for the admin using a tag.

## Billing [#billing]

### How do plan changes take effect? [#how-do-plan-changes-take-effect]

Upgrades apply immediately with a pro-rated charge. Downgrades apply
at the end of your current billing period, so you don't lose access
mid-month.

### Can I get an invoice for last month? [#can-i-get-an-invoice-for-last-month]

All invoices are on **Organization → Billing → Invoices**. Download
any of them as PDF.

### What happens if a payment fails? [#what-happens-if-a-payment-fails]

MediSync retries automatically for a few days. After three failed
attempts, the organization is suspended — pay the outstanding invoice
to reactivate within a minute.

## Data & privacy [#data--privacy]

### Where is our clinic's data stored? [#where-is-our-clinics-data-stored]

MediSync hosts data in the region closest to your clinic's timezone.
Specific regions and compliance certifications are on the product
landing page.

### Can I export my clinic's data? [#can-i-export-my-clinics-data]

Yes — admins can export client lists, appointments, and notes from
within each section. For a full system export, raise a request with
[support](/en/docs/reference/contact-support).

### Are client records encrypted? [#are-client-records-encrypted]

Yes — in transit (HTTPS / TLS 1.3) and at rest (AES-256).

## Languages [#languages]

### Does MediSync work in Arabic? [#does-medisync-work-in-arabic]

Yes — both the staff dashboard and the client portal support English
and Arabic with full right-to-left layout. Set the default in
**Organization → General → Default language**; each user can override
in their own profile.

### Do SMS / email reminders respect the client's language? [#do-sms--email-reminders-respect-the-clients-language]

Yes — each client has a **preferred language** field captured during
intake. The messages they receive use that language.


# Marketing site (/en/docs/reference/marketing-site)



# The MediSync marketing site [#the-medisync-marketing-site]

The public landing page served at the root URL (`/` on the `landing-page`
app) is the marketing front door for MediSync. It is fully localized and
renders in both English and Arabic (RTL).

## Sections [#sections]

The page is composed of these sections, top to bottom:

* **Navbar** — anchor links plus sign-in / "Try it for FREE" calls to action.
* **Hero** — headline, subtitle, and the primary "Try it for FREE" / "Become a partner" CTAs.
* **Logo cloud** — trusted-by logos.
* **Stats band** — animated count-up metrics.
* **Features** — product modules presented as a feature grid (`#features`).
* **How it works** — a three-step onboarding overview (`#how-it-works`).
* **Testimonials** — customer quotes (`#testimonials`).
* **Pricing** — three tiers with a monthly/annual billing toggle (`#pricing&#x60;) and a &#x2A;*"Compare all features →"** link that takes visitors to the full `/pricing` comparison page.
* **Final CTA** — closing conversion band.
* **Footer** — link columns and legal.

## The /pricing page [#the-pricing-page]

A dedicated full-width page at `/pricing` provides a detailed feature-comparison table for all published subscription plans. Key elements:

* **Per-plan entity allowances** — client limits, storage capacity, custom website pages, blog posts, and member counts are shown as real numbers pulled from the plan catalog API (null = Unlimited).
* **Module feature grid** — each bundled module is listed with a checkmark (included) or dash (not included) per plan.
* **Metered allowances** — the included units for each metered module (e.g. AI tokens, SMS) are shown alongside the overage pricing model.
* **CTA per plan** — each column has its own "Get started" / "Contact sales" button.

The home page **Pricing** section links to `/pricing` via a "Compare all features →" anchor so visitors can jump from the teaser to the full comparison table.

## Editing the copy [#editing-the-copy]

All visible text is translatable. The strings live in `messages/en.json`
and `messages/ar.json` under the `landing_*` namespace (for example
`landing_hero_title`, `landing_pricing_most_popular`). Edit both files to
keep English and Arabic in sync, then recompile the catalogs.


# Troubleshooting (/en/docs/reference/troubleshooting)



# Troubleshooting [#troubleshooting]

Work through these in order — each step rules out a common cause.

## I can't sign in [#i-cant-sign-in]

1. **Typo check.** Re-enter your email carefully; MediSync emails are
   case-insensitive but typos are silent.
2. **Caps Lock.** Is your password capitalised the way you set it?
3. **Forgot password flow.** See
   [Sign in → Forgot](/en/docs/getting-started/sign-in#i-forgot-my-password).
4. **Browser cache.** Open an incognito / private window and try
   again. If it works there, clear cookies for `medisync-solutions.com`.
5. **Wrong portal.** Clinic staff sign in at &#x2A;*staff.**; admins at
   &#x2A;*admin.**; clients at &#x2A;*app.**. Wrong portal shows "Account not
   found" even with correct credentials.
6. **Account suspended.** If billing failed, the whole clinic is
   locked out until the invoice is paid. Ask your admin.

## My reset email didn't arrive [#my-reset-email-didnt-arrive]

* Check your spam / junk folder.
* Wait up to 5 minutes — some mail systems are slow.
* Confirm the email you entered matches the one on your account.
* Add `no-reply@medisync-solutions.com` to your contacts.
* Ask your admin to resend an invitation, which also creates a
  fresh setup link.

## Two-factor code isn't working [#two-factor-code-isnt-working]

* **Time drift.** Authenticator codes depend on the device's clock.
  On Android / iOS → Settings → Date & time → Set automatically.
* **Wrong entry.** You added MediSync for a different account. Try
  a recovery code (generated at 2FA setup).
* **Lost device.** Recovery codes first; if lost too, your clinic
  admin can reset 2FA on your account.

## My changes didn't save [#my-changes-didnt-save]

* Look for a yellow "Saving…" or red "Failed to save" banner at the
  top — there might be a validation error (missing required field).
* Check your internet connection. MediSync shows an **Offline**
  banner when you lose connectivity; changes queue and retry when
  you're back.
* If you see a 409 conflict banner, someone else edited the same
  record — reload to see their changes and redo yours.

## Appointments look wrong [#appointments-look-wrong]

* **Wrong timezone.** Check **Organization → General → Timezone**.
  All times across the clinic derive from this single setting.
* **Day-of-week mismatch.** If Tuesday appointments appear on Monday,
  your browser is in a different timezone than the clinic — MediSync
  shows in clinic time, so the calendar is correct but the "phone
  time" might feel wrong to staff in another region.

## Clients can't receive SMS [#clients-cant-receive-sms]

* Verify the phone has a country code (`+`).
* Confirm the Notifications module is enabled and has credit for
  your region.
* Some SMS providers block numbers for reasons outside our control
  (roaming, bulk-block lists) — ask the client to confirm they
  can receive SMS from short-codes.

## My client portal is empty [#my-client-portal-is-empty]

A new client account isn't automatically linked to your clinic
record until a staff member links them at first visit. Until then
the portal shows a placeholder.

## I can't find a feature the docs mention [#i-cant-find-a-feature-the-docs-mention]

* **Feature gated by modules.** If the docs talk about "invoices" and
  you don't see the Billing page, your admin has the Billing module
  turned off.
* **Role missing permission.** Some features (analytics, billing) are
  admin-only by default. Ask your admin to grant you the permission.

## Still stuck [#still-stuck]

[Contact support](/en/docs/reference/contact-support) with:

* What you were trying to do.
* What you saw instead.
* The time (roughly) — this helps us find the relevant request logs.
* A screenshot if possible.


# استخدام بوابة العملاء (/ar/docs/client-portal)



# استخدام بوابة العملاء [#استخدام-بوابة-العملاء]

تتيح بوابة عملاء ميديسينك على
[app.medisync-solutions.com](https://app.medisync-solutions.com) إدارة
حسابك وعلاقتك بالعيادة في مكان واحد.

## ما المتاح اليوم [#ما-المتاح-اليوم]

* **[إنشاء حساب](/ar/docs/client-portal/register)** — أنشئ حساباً عندما
  تدعوك عيادتك أو عند زيارتك بلا موعد.
* **[تسجيل الدخول](/ar/docs/client-portal/sign-in)** — سجّل الدخول بالبريد
  وكلمة المرور أو بجوجل.

## قريباً [#قريباً]

* **[المواعيد القادمة](/ar/docs/client-portal/upcoming-appointments)** —
  اطّلع على زياراتك المجدولة.
* **[الاطّلاع على السجلات](/ar/docs/client-portal/view-records)** —
  حمّل سجلاتك الطبية وفواتيرك وإيصالاتك.

لأيّ شيء ليس متاحاً بعد في البوابة — الحجز، والإلغاء، والسؤال الطبي —
تواصل مع عيادتك مباشرة. راجع ملف عيادتك في البوابة لهاتفها وبريدها
الإلكتروني.

***

**ملاحظة.** الميزات المُشار إليها بـ **قريباً** قيد التطوير النشط.
حتى إطلاقها، تحتوي كل صفحة على بديل (اتّصل بالعيادة، راسلها عبر
البريد الإلكتروني).


# إنشاء حساب (/ar/docs/client-portal/register)



# إنشاء حساب عميل [#إنشاء-حساب-عميل]

هناك طريقتان لإنشاء حساب عميل: عيادتك تدعوك، أو تسجّل ذاتياً.

## المسار أ — عيادتك تدعوك (مُوصى به) [#المسار-أ--عيادتك-تدعوك-مُوصى-به]

1. بعد زيارتك الأولى، ترسل عيادتك رسالة **أهلاً بك في ميديسينك** إلى
   البريد الإلكتروني الذي التقطته عند الإدخال.
2. اضغط **تفعيل حسابي**.
3. عيّن كلمة مرور (لا تقل عن 12 حرفاً).
4. أدخل الرمز المكوّن من 6 أرقام الذي يرسله ميديسينك.
5. أنت الآن في الداخل — تهبط على صفحة بوابة عملاء عيادتك.

ينتهي رابط التفعيل بعد سبعة أيام. إذا انتهى رابطك، اتّصل بالعيادة
واطلب إعادة الإرسال.

## المسار ب — تسجيل ذاتي [#المسار-ب--تسجيل-ذاتي]

إذا كانت عيادتك تدعم التسجيل الذاتي، زُر
[app.medisync-solutions.com/sign-up](https://app.medisync-solutions.com/sign-up).

1. أدخل اسمك، وهاتفك، وبريدك الإلكتروني، وكلمة مرور.
2. اختر عيادتك من القائمة المنسدلة — أو الصق **رابط التسجيل**
   الذي شاركته العيادة في موقعها أو في منشور.
3. أكّد بريدك الإلكتروني.

يُنشأ حسابك، لكنك لن ترى بيانات عيادة محدّدة حتى يربطها الموظفون
بسجلّ عميل (عادةً في زيارتك الأولى).

## ماذا لو كنت أملك حساباً في عيادة أخرى؟ [#ماذا-لو-كنت-أملك-حساباً-في-عيادة-أخرى]

يرتبط كل حساب ميديسينك بعيادة واحدة في الوقت ذاته. إذا كنت تنتقل
بين العيادات، سجّل الدخول إلى بوابة العيادة السابقة واختر **نقل
حسابي** من الإعدادات، أو اطلب من العيادة الجديدة المساعدة.

## تواجه مشكلة؟ [#تواجه-مشكلة]

* **البريد الإلكتروني مسجّل.** قد يكون لديك حساب مسبقاً. جرّب
  [تسجيل الدخول → نسيت كلمة المرور](/ar/docs/client-portal/sign-in) أولاً.
* **لا تصل رسالة الدعوة.** تحقّق من الرسائل المزعجة، ثم اتّصل
  بالعيادة واطلب إعادة الإرسال إلى العنوان الصحيح.
* **لا يصل رمز التحقّق.** قد يستغرق دقيقة، فانتظر ثم اطلب رمزاً
  جديداً.

راجع [حل المشكلات](/ar/docs/reference/troubleshooting) لمزيد من
الحلول.


# تسجيل الدخول (/ar/docs/client-portal/sign-in)



# تسجيل الدخول إلى بوابة العملاء [#تسجيل-الدخول-إلى-بوابة-العملاء]

افتح [app.medisync-solutions.com](https://app.medisync-solutions.com)
لتهبط على صفحة تسجيل الدخول.

## بالبريد الإلكتروني وكلمة المرور [#بالبريد-الإلكتروني-وكلمة-المرور]

1. أدخل بريدك الإلكتروني.
2. أدخل كلمة المرور.
3. اضغط **تسجيل الدخول**.

إذا كانت المصادقة الثنائية مفعّلة، يطلب ميديسينك رمزاً مكوّناً من 6
أرقام من تطبيق المصادقة بعد خطوة كلمة المرور.

## بجوجل [#بجوجل]

اضغط **تسجيل الدخول بجوجل** في صفحة تسجيل الدخول واختر حساب جوجل
المرتبط ببريدك المسجّل. في أوّل مرة، يربط ميديسينك حساب جوجل
بحسابك في ميديسينك.

## نسيت كلمة المرور [#نسيت-كلمة-المرور]

1. اضغط &#x2A;*نسيت كلمة المرور؟** في صفحة تسجيل الدخول.
2. أدخل بريدك الإلكتروني.
3. تحقّق من بريدك لرابط إعادة التعيين (ينتهي بعد فترة قصيرة).
4. اضغط الرابط، وأدخل كلمة مرور جديدة، وأكّدها.
5. ستعود إلى صفحة تسجيل الدخول لتدخل بكلمة المرور الجديدة.

إذا لم تصل الرسالة:

* تحقّق من الرسائل المزعجة.
* تأكّد من أن البريد الذي أدخلته هو ذاته الذي في ملف عيادتك.
  الأخطاء الإملائية أكثر الأسباب شيوعاً.
* إن لم تكن متأكداً من البريد المسجّل، اتّصل بالعيادة واطلب
  تأكيده.

## البقاء مسجّلاً على الأجهزة المشتركة [#البقاء-مسجّلاً-على-الأجهزة-المشتركة]

على جهاز عام (كشك العيادة، مقهى الإنترنت)، سجّل الخروج عند
الانتهاء — اضغط اسمك في أعلى اليسار → **تسجيل الخروج**. إن أمكن،
استخدم **وضع التصفح الخاص / المتخفّي** لئلّا يُحفظ شيء عن زيارتك
محلياً.


# المواعيد القادمة (/ar/docs/client-portal/upcoming-appointments)



# المواعيد القادمة [#المواعيد-القادمة]

> **قريباً.** عرض المواعيد للعملاء قيد التطوير النشط. حتى إطلاقه،
> تؤكّد عيادتك المواعيد عبر الرسائل القصيرة والبريد الإلكتروني.

## ما سيتاح عند إطلاقه [#ما-سيتاح-عند-إطلاقه]

* قائمة بمواعيدك القادمة مع التاريخ والوقت والممارس والموقع.
* إمكانية تأكيد حضورك (قد تشترط عيادتك ذلك للاحتفاظ بالحجز).
* تنزيل ملف تقويم لإضافة الموعد إلى تقويم جوجل / أبل / أوتلوك.
* رابط إلى سياسة **الإلغاء / إعادة الجدولة** لعيادتك.

## ما تستطيع فعله اليوم [#ما-تستطيع-فعله-اليوم]

* **تحقّق من تذكيرات الرسائل القصيرة والبريد.** ترسل عيادتك تأكيداً
  فور حجز موعدك وتذكيراً قبل 24 ساعة.
* **اتّصل بالعيادة** لتأكيد أو إلغاء أو إعادة جدولة موعد. استخدم
  قسم **عن عيادتك** في البوابة لرقم الهاتف.

***

سنحدّث هذه الصفحة عند إطلاق الميزة.


# الاطّلاع على السجلات (/ar/docs/client-portal/view-records)



# الاطّلاع على سجلاتك [#الاطّلاع-على-سجلاتك]

> **قريباً.** تنزيل السجلات للعملاء قيد التطوير النشط. حتى إطلاقه،
> اطلب نسخاً مباشرةً من عيادتك.

## ما سيتاح عند إطلاقه [#ما-سيتاح-عند-إطلاقه]

* جدول زمني لزياراتك المنجزة مع ملخّص PDF لكل زيارة.
* فواتيرك مع حالة الدفع / المتبقّي.
* إيصالات تستطيع إرسالها إلى شركة تأمينك.
* حزمة **تصدير كل شيء** بنقرة واحدة لأيّ عميل يريد نسخة كاملة من
  ملفّه.

## ما تستطيع فعله اليوم [#ما-تستطيع-فعله-اليوم]

* **اتّصل أو راسل عيادتك** لطلب السجلات. تستطيع معظم العيادات
  توفيرها في نفس اليوم.
* **شخصياً.** اطلب عند الاستقبال — يستطيعون الطباعة أو الإرسال عبر
  البريد الإلكتروني على الفور.

سجلاتك مُلكك. العيادات ملزمة قانوناً بتوفير نسخ عند الطلب (تختلف
المهل بحسب الولاية القضائية).

***

سنحدّث هذه الصفحة عند إطلاق الميزة.


# التحليلات (/ar/docs/clinic-admin/analytics)



# التحليلات [#التحليلات]

تمنحك صفحة **المؤسسة → التحليلات** لوحة واحدة تلخّص ما يجري عبر العيادة.
تقتصر على الوحدات المفعّلة — تعطيل **الفوترة** يُخفي كتلة الإيرادات،
وتعطيل **المواعيد** يُخفي مخطّطات المواعيد، وهكذا.

## النطاق الزمني [#النطاق-الزمني]

يؤثّر محدّد النطاق أعلى الصفحة على كل العناصر. الإعدادات الجاهزة
الشائعة:

* **اليوم** — لقطة حيّة، مفيدة أول الصباح.
* **هذا الأسبوع / هذا الشهر** — مقارنة بالفترة السابقة.
* **الربع / السنة** — لخطوط الاتجاه.
* **مخصّص** — اختر تاريخ بداية ونهاية حرّين.

## ما تراه [#ما-تراه]

* **العملاء** — العملاء الجدد في الفترة، وإجمالي العملاء النشطين.
* **المواعيد** — المحجوزة، والمنجزة، وحالات عدم الحضور، والملغاة؛ مع
  مخطّط الاتجاه.
* **الإيرادات** — المفوتر، والمحصّل، والمتبقّي (يتطلّب وحدة الفوترة).
* **الإشغال** — نسبة الفتحات المتاحة للممارسين التي حُجزت فعلاً.
* **أعلى الممارسين** — مرتّبين بعدد المواعيد.

لكل بطاقة إجراء **تصدير CSV** في قائمتها للتحليل المعمّق في Excel أو
Google Sheets.

## مشاركة الوصول [#مشاركة-الوصول]

التحليلات متاحة للمسؤولين فقط افتراضياً. لإعطاء الوصول لشخص غير مسؤول
(مثل مدير عيادة ليس مسؤولاً تقنياً):

1. افتح **المؤسسة → الموظفون → النشيطون**.
2. اضغط صفّه، واسحب لأسفل إلى **الصلاحيات**.
3. فعّل **عرض التحليلات**.

ستظهر لهم صفحة التحليلات في الشريط الجانبي عند تسجيل الدخول التالي.

## تنبيهات [#تنبيهات]

* تُحسب الأرقام بالمنطقة الزمنية لعيادتك (المضبوطة في
  [إعداد المؤسسة](/ar/docs/clinic-admin/organization-setup)).
* يشمل عدد **حالات عدم الحضور** الإلغاءات داخل نافذة الإلغاء، لا
  الغياب الصامت فقط. راجع
  [موظف الاستقبال → الإلغاء وإعادة الجدولة](/ar/docs/receptionist/reschedule-cancel).
* الإيرادات **مفوترة** (لا مستحقّة). إذا كنت تُصدر الفواتير عند
  الإنجاز لا عند الحجز، ستتأخّر الرسوم البيانية عن النشاط الفعلي بيوم
  أو يومين.

***

**مقالات المساعدة داخل التطبيق:** لا توجد مقالة مكرّسة بعد — عناصر لوحة
التحليلات نفسها تملك تلميحات سياقية.


# WhatsApp messages from automation rules (/ar/docs/clinic-admin/automation-messaging-providers)



# WhatsApp messages from automation rules [#whatsapp-messages-from-automation-rules]

Automation rules can send a WhatsApp message as an action — for example, "when a new client is
added, send them a WhatsApp welcome message." This page covers turning that on and, optionally,
sending it from your own WhatsApp Business number instead of MediSync's shared one.

<Callout>
  This needs both the **Automations** module and the **WhatsApp** module active. Enable them under
  **Organization → Settings → Modules** if you don't see them — see [Modules](/docs/clinic-admin/modules).
</Callout>

## Do I need to do anything? [#do-i-need-to-do-anything]

No. If you leave this alone, WhatsApp messages from your automation rules still send — just
through MediSync's own WhatsApp sender rather than a number your clients recognize as yours. You
only need the steps below if you want messages to come from your own WhatsApp Business number.

## Adding your own WhatsApp sender [#adding-your-own-whatsapp-sender]

Go to **Automations → Settings → Provider credentials** and add a credential for the **WhatsApp**
channel:

1. Enter the **phone number ID** and **access token** for your WhatsApp Business number (from
   Meta's WhatsApp Business Platform — your integration partner or Meta Business Manager gives you
   these).
2. Add a **sender identity** — a label for the number, e.g. `+20 123 456 7890`, so you can tell
   your credentials apart in the list. This is not secret and is shown as-is.
3. Save. It becomes your organization's **default** WhatsApp sender immediately.

<Callout type="warn">
  Your access token is encrypted and is **never shown again** after you save it — not to you, not
  to MediSync staff. Editing the credential without retyping it is safe: leaving the secret field
  blank keeps the saved value.
</Callout>

You can add a credential for **SMS** or **Email** in the same place — those channels are reserved
for future automation actions and don't affect anything today; only **WhatsApp** is live.

### Removing a sender [#removing-a-sender]

Delete a credential from the same list at any time. Automation rules using that channel fall back
to MediSync's own sender immediately — a rule never fails or pauses because a credential was
removed.

## The "Send WhatsApp message" action [#the-send-whatsapp-message-action]

When building or editing an automation rule, **Send WhatsApp message** is available as an action
alongside **Notify the owner**, **Send email**, and **Send SMS**. It sends to the client the rule's
trigger fired for (e.g. the client who was just created, or whose appointment just completed) —
or, if you choose, to the organization owner instead.

A rule using this action needs a client with a WhatsApp-reachable phone number on file; if the
triggering record has no phone number, that run's WhatsApp step is skipped rather than failing the
whole rule.

See [Get alerted before stock expires](/docs/clinic-admin/stock-expiry-alerts) for a walkthrough of
building a rule end to end — the same **New rule** flow applies to any trigger and action
combination, including a WhatsApp welcome message on **Client created**.

## Checking what was sent [#checking-what-was-sent]

**Automations → Runs** shows every time a rule has fired, including whether its WhatsApp step
succeeded, and lets you re-run one that failed. This page doesn't yet show WhatsApp-specific
delivery detail (message status per recipient) the way [SMS providers and
fallback](/docs/clinic-admin/sms-providers) does for SMS — that level of detail is on the roadmap.


# الفوترة والخطط (/ar/docs/clinic-admin/billing-plans)



# الفوترة والخطط [#الفوترة-والخطط]

صفحة **المؤسسة → الإعدادات → الفوترة** هي المكان الذي تختار فيه خطة،
وتطّلع على فواتيرك، وتدير طريقة الدفع.

## تبويبات الفوترة الخمسة [#تبويبات-الفوترة-الخمسة]

تنقسم الفوترة إلى خمسة تبويبات. وأياً كان التبويب المفتوح، يظهر في أعلى
الصفحة شريط يوضّح حالة فترتك التجريبية أو فواتيرك المتأخّرة.

| التبويب       | محتواه                                                        |
| ------------- | ------------------------------------------------------------- |
| **نظرة عامة** | خطتك الحالية ورسمها الشهري، والرسوم المتراكمة حتى الآن        |
| **الدفع**     | البطاقات التي نخصم منها                                       |
| **الفواتير**  | كل فترة فوترة مُغلقة، مع زر دفع لأي فاتورة غير مسدّدة         |
| **الأرصدة**   | استخدام كود خصم، وطلب رصيد، والاطّلاع على كل ما قُيِّد لحسابك |
| **التفضيلات** | حدّ تنبيه الإنفاق، وهل نخصم من بطاقتك تلقائياً                |

## مستويات الخطط [#مستويات-الخطط]

يقدّم ميديسينك ثلاث خطط أساسية ونسخة تجريبية مجانية. مصفوفة الميزات
تتغيّر؛ القائمة الأحدث تظهر في مربّع **تغيير الخطة** داخل التطبيق. إليك
الصورة العامة:

| الخطة         | الملائمة لـ                                  |
| ------------- | -------------------------------------------- |
| **التجريبية** | استكشاف ميديسينك لمدة 14 يوماً، بدون بطاقة   |
| **المبتدئة**  | العيادات الصغيرة، بممارس واحد، ووحدات أساسية |
| **العيادة**   | معظم العيادات متعدّدة الممارسين              |
| **المجموعة**  | المؤسسات متعدّدة الفروع وسلاسل العيادات      |

تُحاسَب كل خطة **شهرياً** أو **سنوياً**. الفوترة السنوية توفّر نحو 15 %
وتُصدر فاتورة واحدة في السنة.

## حد المؤسسات في الفترة التجريبية المجانية [#حد-المؤسسات-في-الفترة-التجريبية-المجانية]

يمكنك امتلاك **مؤسستين على الأكثر في فترة تجريبية مجانية في نفس الوقت**.
ينطبق هذا فقط على النسخة التجريبية — المؤسسات على خطة مدفوعة لا تُحسب
ضمن هذا الحد، فهو في الواقع حدٌّ لعدد التجارب المتزامنة، لا لعدد العيادات
التي تملكها.

إذا حاولت إنشاء مؤسسة تجريبية ثالثة، يمنع ميديسينك ذلك ويعرض الحد في
شاشة **إنشاء مؤسسة**. لبدء مؤسسة جديدة:

* **رقِّ** إحدى مؤسساتك التجريبية الحالية إلى خطة مدفوعة (يحرّر مكاناً
  فوراً)، أو
* **أرشِف** مؤسسة تجريبية لا تحتاجها من **المؤسسة ← الإعدادات**.

## اختيار الخطة أو تغييرها [#اختيار-الخطة-أو-تغييرها]

1. افتح **المؤسسة → الإعدادات → الفوترة → نظرة عامة**.
2. من بطاقة **التكلفة الحالية**، اضغط **تغيير الخطة**.
3. كل خطة بطاقة. الخطط القابلة للترقية تُظهر زر **اختيار**، والخطط الأدنى
   من خطتك الحالية تُظهر زر **تخفيض**.
4. اضغط الزر للخطة التي تريدها، فيعرض مربع التأكيد:
   * السعر الشهري/السنوي الجديد.
   * أي مبلغ مُقتطع أو رصيد متناسب للفترة الحالية.
   * موعد تطبيق التغيير (فوراً عند الترقية، وعند نهاية الفترة الحالية
     عند التخفيض).
5. إن لم تكن لديك بطاقة مسجّلة، أضِفها أولاً من تبويب **الدفع**، ثم اضغط
   **تأكيد**.

## الإضافات [#الإضافات]

بعض الوحدات إضافات مدفوعة بسعر شهري. تفعيل الإضافة يُضيف مبلغاً متناسباً
مع ما تبقى من الفترة الحالية ثم يُدرج في كل تجديد — ويظهر فور تفعيله في
بطاقة **الرسوم القادمة** في تبويب **نظرة عامة**.

تعطيل الإضافة يُطبَّق في نهاية الفترة الحالية — يبقى لك الوصول حتى حينه.

## الفواتير [#الفواتير]

يسرد تبويب **الفواتير** كل فاتورة أصدرها ميديسينك. لكل فاتورة:

* **الحالة** — مدفوعة، مفتوحة، متأخّرة، مستردّة.
* **تحميل PDF** — نسخة موقّعة للمحاسب.
* **إعادة محاولة الدفع** — للفواتير المتأخّرة فقط؛ تعيد محاولة الدفع
  بالبطاقة المسجّلة.

## وسائل الدفع [#وسائل-الدفع]

أضف أو استبدل أو احذف البطاقات من تبويب **الدفع**. لا يستطيع غير المسؤول
الاطّلاع عليه.

## الأرصدة وأكواد الخصم [#الأرصدة-وأكواد-الخصم]

تبويب **الأرصدة** هو المكان الذي تعود منه الأموال إليك:

* **استخدام كود خصم** — طبّق كود خصم في أي وقت. يتحوّل الخصم إلى رصيد
  تلتقطه فاتورتك التالية تلقائياً.
* **طلبات الإضافة الدائنة** — اطلب رصيداً على فاتورة بعينها مع ذكر السبب.
  يراجعه مسؤول في ميديسينك، وإذا وافق يُقيَّد الرصيد لحسابك.
* **سجل الأرصدة والتعديلات** — كل رصيد أو إعفاء أو رسم استثنائي قُيِّد
  على حسابك.

## تنبيهات الإنفاق والفوترة التلقائية [#تنبيهات-الإنفاق-والفوترة-التلقائية]

كلا الإعدادين في تبويب **التفضيلات**:

* **تنبيه الميزانية** — يُرسل بريداً لكل مالك عندما يبلغ الإنفاق المتوقّع
  للفترة الحالية مبلغاً تحدّده. هو تنبيه فقط؛ لا يُوقف شيء ولا يُقطع.
* **الفوترة التلقائية** — يخصم من بطاقتك الافتراضية فور إصدار الفاتورة.
  وعند إيقافه تدفع كل فاتورة بنفسك من تبويب **الفواتير**.

## الحسابات الموقوفة [#الحسابات-الموقوفة]

إذا فشلت محاولة الدفع ثلاث مرات، يُوقف ميديسينك المؤسسة تلقائياً. لا
يستطيع الموظفون تسجيل الدخول حتى تُسَوَّى الفاتورة المتأخّرة. بعد الدفع
تتم إعادة التفعيل خلال دقيقة.

***

**مقالات المساعدة داخل التطبيق:** `admin_billing_current_cost`،
`admin_billing_plan_selection`، `admin_billing_plan_tier`،
`admin_billing_interval`، `admin_billing_addon_modules`.


# إدارة منشورات المدوّنة (/ar/docs/clinic-admin/blog-posts)



# إدارة منشورات المدوّنة [#إدارة-منشورات-المدوّنة]

صفحة **المدوّنة** هي الموطن لكل ما تنشره من عيادتك.

## إنشاء مسوّدة جديدة [#إنشاء-مسوّدة-جديدة]

اضغط **مسوّدة جديدة** في أعلى يمين صفحة المدوّنة. تُفتح مسوّدة جديدة
بلا عنوان مباشرة في المحرّر — اكتب العنوان والمحتوى، ويُحفظ تلقائيًّا
أثناء كتابتك. تبقى المسوّدات خاصّة حتى تنشرها.

## الكتابة في المحرّر [#الكتابة-في-المحرّر]

متن المنشور محرّر بأسلوب المستندات — بلا شريط أدوات تبحث فيه. ثلاثة
اختصارات تغطّي معظم ما تحتاجه:

* **أدرِج الكتل عبر `/`.** في سطر فارغ، اكتب `/` لفتح قائمة بالكتل:
  العناوين، والقوائم النقطية والمرقّمة، والاقتباس، وكتلة برمجية،
  وفاصل، والصور. تابِع الكتابة للتصفية (مثلًا `/h1`)، ثم اضغط Enter أو
  انقر للإدراج.
* **نسّق عبر شريط التحديد.** حدّد أيّ نصّ ليظهر شريط صغير فوقه للخطّ
  **العريض**، و\_المائل\_، والتسطير، والشطب، والشيفرة المضمّنة، وإضافة
  رابط.
* **أعِد الترتيب بالسحب.** مرّر فوق أيّ كتلة وامسك المقبض على حافتها
  لسحبها إلى موضع جديد.

تُظهر الأسطر الفارغة تلميحًا باهتًا «اكتب '/' للأوامر…». ولإضافة صورة،
استخدم قائمة `/` وألصق الرابط العامّ للصورة. كلّ ما تكتبه يُحفظ
تلقائيًّا؛ لا يوجد زرّ حفظ منفصل للمتن. وتلتفّ العناوين الطويلة على عدّة
أسطر بدل أن تُقتطع.

## النشر والجدولة والتحديث [#النشر-والجدولة-والتحديث]

تحوي اللوحة اليمنى في المحرّر كلّ ما يخصّ نشر المنشور. تظهر الحالة
الحاليّة في الأعلى (مسوّدة، قيد المراجعة، مجدوّلة، منشورة) بجوار مؤشّر
الحفظ التلقائيّ.

* **نشر الآن** يجعل المنشور حيًّا فورًا.
* **الجدولة لوقت لاحق…** تُظهر منتقي تاريخ ووقت؛ ينتقل المنشور إلى
  **مجدوّل** ويُنشَر تلقائيًّا في ذلك الوقت. كما يظهر وقت النشر أسفل حالة
  المنشور في القائمة وفي صفّ **يُنشَر في** ضمن تفاصيل المحرّر.
* **إرسال للمراجعة** (للمساهمين) يُسلّم المسوّدة إلى محرّر يستطيع
  **الموافقة والنشر** أو إعادتها.

### تحديث منشور منشور بالفعل [#تحديث-منشور-منشور-بالفعل]

تحرير منشور منشور &#x2A;*يُحفظ تلقائيًّا كنسخة مسوّدة — ولا يغيّر الصفحة
الحيّة بعد.** وعندما تكون جاهزًا، اضغط **نشر التغييرات** لدفع تعديلاتك
إلى الموقع العامّ، ويذكّرك بذلك سطر أسفل الزرّ. استخدم **إلغاء النشر**
لسحب منشور من الموقع (يعود إلى مسوّدة، ويمكنك نشره لاحقًا).

### عرض المنشور الحيّ [#عرض-المنشور-الحيّ]

في منشور منشور، اضغط **عرض المنشور الحيّ** في لوحة الحالة لفتح صفحته
العامّة في تبويب جديد.

## العثور على المنشورات بسرعة [#العثور-على-المنشورات-بسرعة]

استخدم خانة **البحث** لتصفية المنشورات بحسب العنوان. اجمعها مع قائمة
&#x2A;*الحالة:** (مسوّدة / قيد المراجعة / مجدوّلة / منشورة / مؤرشفة) أو
قائمة &#x2A;*النوع:** (مقالة / فيديو / دراسة حالة / خبر) لتضييق القائمة.
تُظهر المنشورات المجدوّلة تاريخ ووقت نشرها، وتظهر المنشورات المؤرشفة
باهتة. الروابط قابلة للمشاركة — انسخها وأرسل لزميلك عرضًا مُفلتَرًا.

## إجراءات لكل منشور [#إجراءات-لكل-منشور]

اضغط أيقونة المزيد من الإجراءات (النقاط الثلاث) في أيّ صفّ:

* **تحرير** يفتح المنشور في المحرّر.
* **نشر** متاح للمسوّدات، والمنشورات المجدوّلة، والمنشورات قيد
  المراجعة.
* **أرشفة** يُزيل المنشور من الموقع العامّ. المنشورات المؤرشفة لا
  تُحذف — أعِد تغيير حالتها لإعادتها للعمل.

## الأرشفة الجماعية [#الأرشفة-الجماعية]

إذا كانت لديك صلاحية حذف المنشورات، يظهر مربّع اختيار في كل صفّ. اختر
الصفوف التي تريد أرشفتها دفعةً واحدة، ثم اضغط **أرشفة المختارة**.
سيُطلب منك التأكيد. يُؤرشف الإجراء الجماعيّ كلّ منشور بالتوازي،
ويُخبرك بعدد ما نجح بدقّة.

## التنظيم بالفئات [#التنظيم-بالفئات]

افتح **الفئات** من قائمة المدوّنة لإدارة فئاتك التحريريّة. اكتب
**التسمية** ويُملأ **المُعرِّف** (الجزء الظاهر في الرابط) تلقائيًّا —
عدّله بنفسك إن أردت شيئًا مختلفًا. اسحب المقبض على يسار أيّ صفّ لإعادة
الترتيب، واستخدم أيقونتَي القلم وسلّة المهملات لإعادة التسمية أو الحذف.

أسنِد الفئات إلى منشور من لوحة **الفئات** في المحرّر: مربّعاتها مُحدّدة
مسبقًا بفئات المنشور الحاليّة، وتحديد أو إلغاء تحديد أيّ منها يُحفظ فورًا.

## على الهاتف [#على-الهاتف]

تعمل المدوّنة على الشاشات الصغيرة. تتحوّل القائمة إلى بطاقات مكدّسة (مع
القائمة نفسها لكلّ صفّ)، وفي المحرّر يبقى الإجراء الأساسيّ — نشر، أو
إرسال للمراجعة، أو نشر التغييرات — مثبّتًا أسفل الشاشة ليبقى في المتناول.


# Bookable resources & procedure roles (/ar/docs/clinic-admin/bookable-resources)



# Bookable resources & procedure roles [#bookable-resources--procedure-roles]

Before the booking engine can offer a slot, it needs to know two things: **what
you have** (your resource catalogue) and **what each procedure needs** (its
procedure template). This page covers both, and the link between them.

## The resource catalogue [#the-resource-catalogue]

Open **Core → Resources**. Every bookable thing in your clinic lives
here, in one of four kinds:

| Kind          | What it covers                                              |
| ------------- | ----------------------------------------------------------- |
| **Doctor**    | Physicians                                                  |
| **Staff**     | Nurses, technicians, anesthetists, interpreters, chaperones |
| **Room**      | Consultation rooms, operating theatres                      |
| **Equipment** | Lasers, scanners, and other schedulable devices             |

Use the **kind** filter in the sidebar to narrow the list, and the search box
to find a resource by name.

### Adding a resource [#adding-a-resource]

1. Pick the **branch** the resource belongs to. The **Add resource** button
   stays disabled until you do — every resource is branch-scoped.
2. Click **Add resource** and choose the kind.
3. Fill in the form. Every kind needs a **name** and a **concurrency limit**
   (how many appointments it can hold at once — usually 1).

**Doctor** and **Staff** additionally require a **team member**. That link is
what connects the bookable resource to a real person in your organization, so
the **Create** button stays disabled until you pick one.

Doctors have optional **specialties** — pick as many as the doctor actually
practises, since a template requiring any one of them will then find them —
and staff an optional **staff role**. Both are pickers drawn from your
organization's managed lists (see
[Managing resource attribute lists](#managing-resource-attribute-lists)
below) rather than plain text boxes — you pick an existing entry, or type a
new one to add it to the list on the spot. Free text that doesn't match a
list entry is no longer accepted here: this is what makes the consistency
guarantee below actually hold, instead of just being good advice.

<Callout type="warn">
  Consistency here is not cosmetic. A procedure template can require, say, a
  doctor whose specialty is "Ophthalmology". Before this list existed, if half
  your ophthalmologists were recorded as "Ophthalmology" and half as
  "ophthalmology" or "Eye", the template only ever found the matching half —
  and the failure showed up as &#x2A;*"no available slots"** when someone tried to
  book, not as an error on the template. Picking from one shared list is what
  prevents that split from happening again.
</Callout>

Rooms take a **capabilities** picker — the same managed list, so you can
select several values, or type a new one and add it on the spot. A room's
**Sterile** flag is a separate checkbox, not a capability. Equipment takes a
**model** and **serial**, both still plain text.

### Changing a resource [#changing-a-resource]

Click **Edit** on any row in the resource list, or open the resource and use
the **Edit** button in its header. You can change the name, the concurrency
limit, the linked team member, and the kind-specific fields — including a
a doctor's specialties, so a resource entered with the wrong one can be
corrected rather than recreated.

Clearing a specialty or staff role is allowed: reopen the picker and click the
selected value again to deselect it, then save. A doctor with no specialties
at all is valid — they simply won't match a template that requires one.

Two things the edit form deliberately does not change: a resource's **kind**
and its **branch**. Both are structural — schedules, appointments and
templates are all anchored to them — so a resource that needs a different kind
or branch should be deactivated and replaced. Schedules and time off stay on
the resource's own page, not in this form.

<Callout type="warn">
  A brand-new resource has **no schedule**, and the booking engine only ever
  offers slots from a recurring schedule. Until you open the resource and add
  one, it will never be suggested — the catalogue flags these with a **No
  schedule** badge. Add the schedule as soon as you create the resource.
</Callout>

## Managing resource attribute lists [#managing-resource-attribute-lists]

Open **Core → Resource attributes**. This page holds the four lists staff
choose from when describing a doctor, room, or piece of equipment —
specialty, subspecialty, staff role, and capability. Keeping each list tidy
is what lets procedure templates actually find the right resources, rather
than silently finding none.

Pick a list from the sidebar on the left. Each list shows every
entry's **Name** (what staff see), **Identifier** (the fixed value your
resources and templates actually store — see below), whether it's currently
**in use**, and a status switch.

### Adding a value from inside a form [#adding-a-value-from-inside-a-form]

You don't have to come to this page to add a new specialty, staff role, or
similar — type it directly into the picker on the resource form (or a
procedure template's narrowing filters) and choose &#x2A;*Create "…"**. It's
added to the shared list immediately and selected on the spot. Values added
this way show up here too, so this page is also where you go to tidy up
anything that got added a little too casually.

### Renaming is always safe [#renaming-is-always-safe]

Editing a value's **Name** changes only how it's displayed — every resource
and procedure template already using it keeps working, unaffected, and
immediately shows the new wording everywhere it appears. That's because
what's actually stored on your resources and templates is the row's
**Identifier**, not the name, and renaming never touches the identifier.
Use this to fix a typo or clean up wording without worrying about breaking
anything currently in use.

### Deactivating vs. deleting [#deactivating-vs-deleting]

* **Deactivating** a value (the status switch) removes it from the picker
  for anything *new* — staff creating or editing a resource or template
  won't be offered it going forward. It changes nothing else: any resource
  or template already using it keeps working exactly as before, and still
  displays its name normally.
* **Deleting** a value removes it permanently, but only once nothing is
  using it. If any resource or procedure template still references it, the
  delete is refused and you're shown exactly how many resources and how many
  procedure requirements are still using it. Deactivate instead if you want
  to retire a value without hunting down every place it's used first.

<Callout>
  Prefer deactivating over deleting unless you're sure a value was created by
  mistake and never used. Deactivated values stay available for cleanup or
  reactivation later; deleted ones are gone.
</Callout>

<Callout type="warn">
  The **In use** count is fetched one row at a time, so a very long list can
  take a moment to fully populate. This doesn't affect accuracy — each count
  that appears is live — it's only a loading-speed note for organizations with
  unusually large lists.
</Callout>

## Procedure templates and roles [#procedure-templates-and-roles]

Open **Core → Procedure templates**. A template describes what a
procedure needs: how long it runs, which checks are required, and one
**requirement** row per role.

Each requirement row sets:

* **Role** — a label you choose, e.g. "Surgeon", "Assistant", "OR". The field
  suggests roles your clinic already uses elsewhere, grouped under *Already
  used in this organization*, plus a few common starters. You can still type
  anything you like — pick from the list where one fits, so the same job keeps
  the same name everywhere and your reports don't split "Surgeon" across two
  spellings.
* **Kind** — which kind of resource fills this role.
* **How many** — how many resources of this role each booking reserves.
* **Pre-buffer / post-buffer** — extra minutes the resource stays held before
  and after the appointment, for setup, cleaning or turnaround.

<Callout>
  Two rows on the same template can't share a role name — the name is how a
  booking reports which resource filled which slot. If you need two of the same
  thing, either raise **How many** on one row, or give the rows distinct names
  like "Surgeon" and "Assisting surgeon".
</Callout>

<Callout type="warn">
  If a template asks for a kind you have no matching resources for, the template
  looks fine but can never actually be booked — the booking screen simply finds
  no available slots. If you add a **Staff** role, make sure you have staff
  resources (with schedules) that can fill it.
</Callout>

### The primary role [#the-primary-role]

One requirement row can be marked as the **primary role**. That row's resource
becomes the appointment's **doctor of record** — the name shown in appointment
lists, detail views, and reporting.

A few rules worth knowing:

* Only **Doctor** and **Staff** rows can be primary. The radio button is
  disabled for rooms and equipment, and switching an already-primary row to a
  room or equipment kind clears the mark.
* Only **one** row can be primary at a time. Marking a second row moves the
  mark rather than adding one.
* If a template has exactly **one** human role and you don't mark anything, it
  is treated as the primary automatically.
* If a template has **several** human roles and none is marked, appointments
  fall back to a doctor row ahead of a staff row. Which one is picked beyond
  that is not something you can influence by naming — renaming a role never
  changes who is reported as the main provider. **Mark one explicitly** if
  reporting matters to you; it is the only way to control the outcome.
* A template with only rooms and equipment has no primary role at all. That's
  perfectly valid.

<Callout>
  Editing a template's primary role does **not** change appointments that were
  already booked. They keep the doctor of record they were booked with until
  someone reschedules them, at which point the current template is re-applied.
</Callout>

## Editing a procedure template [#editing-a-procedure-template]

Open **Core → Procedure templates**, then choose **Edit** on any row. The
drawer opens with the template's current details.

You can change the name, duration, description, required checks, whether the
template is **Active**, and the list of resource requirements.

**The code can't be changed.** It identifies the procedure across billing and
reporting, so it's fixed once the template is created — the field is shown but
disabled in the edit drawer. If a code is wrong, create a replacement template
with the right code and deactivate the old one instead.

**Active** controls whether the template can be used for a *new* booking.
Turning it off doesn't touch appointments already booked against it — it just
stops new appointments from being booked against it going forward. Use this
instead of deleting a template you may need again.

**Removing or renaming a requirement asks you to confirm.** Adding a row, or
adjusting a row's count, buffers or resource filters, saves straight away.
Saving only pauses for a confirmation when you've **removed** a row or changed
an existing row's role or kind — the changes where something you had before is
going away. It's safe to confirm: appointments already booked keep the
resources and roles they were booked with, so past and upcoming bookings are
unaffected. New bookings use the updated requirements right away; older
appointments only pick them up if they're rescheduled.

**Closing with unsaved changes asks first.** If you've edited anything and then
press Escape, click outside the drawer, or hit Cancel, you'll be asked whether
to discard your changes — choose **Keep editing** to go back. Closing a drawer
you haven't touched just closes it, with no prompt.


# ضبط حقول العملاء (/ar/docs/clinic-admin/client-field-config)



# ضبط حقول العملاء [#ضبط-حقول-العملاء]

تجمع كل عيادة بيانات مختلفة عن مرضاها. في
&#x2A;*المؤسسة → العملاء (الإعدادات)** تقرّر أيّ حقول تظهر في نموذج الإدخال،
وأيّها إلزامي، وأيّ حقول مخصّصة جديدة تضيفها.

## نمط الاسم [#نمط-الاسم]

يدعم ميديسينك ثلاث أنماط تسمية. اختر النمط الذي يوافق ممارسة عيادتك:

| النمط     | الحقول الملتقطة                               | متى تستخدمه                           |
| --------- | --------------------------------------------- | ------------------------------------- |
| **ثنائي** | الاسم الأول، اسم العائلة                      | معظم العيادات الغربية                 |
| **ثلاثي** | الاسم الأول، الاسم الأوسط، اسم العائلة        | العيادات في الولايات المتحدة/بريطانيا |
| **رباعي** | الاسم الأول، اسم الأب، اسم الجدّ، اسم العائلة | كثير من العيادات العربية              |
| **مفرد**  | الاسم الكامل                                  | عند تسجيل النص الكامل للاسم كما هو    |

عند تغيير نمط الاسم:

* **لا تُحذف** البيانات الموجودة — تبقى الحقول غير المنطبقة على النمط
  الجديد في السجلات القديمة ولا تُطلب في الإدخال الجديد.
* يسري على نموذج **إضافة عميل** التالي. تبقى ملفات العملاء المفتوحة
  تعرض البيانات التي التُقطت مسبقاً.

## الحقول الإلزامية [#الحقول-الإلزامية]

عند تحديد حقل كـ **إلزامي** لا يُرسَل نموذج الإدخال بدونه. استخدم هذا
للبيانات التي لا تستطيع العيادة العمل بدونها (مثل تاريخ الميلاد لجرعات
الأطفال).

> **لا تُفرط في الإلزامية.** كل حقل إلزامي يُبطئ الاستقبال ويمنع حالات
> الدخول غير المجدولة. اترك الحقول اختيارية ما لم يكن غيابها معيقاً لما
> بعد ذلك.

## الأعمدة الظاهرة [#الأعمدة-الظاهرة]

منفصلة عن الإلزامية: حدّد أيّ الحقول تظهر كأعمدة افتراضية في قائمة
**العملاء**. الاختيارات الشائعة: الاسم، الهاتف، تاريخ الميلاد، حالة التأمين.

إلى جانب هذه المجموعة الافتراضية، يمكن لكل موظف تخصيص عرضه الخاص. افتح
قائمة **الأعمدة** أعلى جدول العملاء لإظهار أو إخفاء أي حقل — تتوفر هناك كل
حقول نموذج **إضافة عميل** (العنوان، جهة اتصال الطوارئ، التأمين، فصيلة الدم،
الحساسية وغيرها)، والحقول المخصصة لعيادتك، وتفاصيل تدقيق السجل (**تاريخ
الإنشاء**، و**أنشئ بواسطة**، و**آخر تحديث**). هذه الأعمدة الإضافية
**مخفية افتراضيًا**، ويُحفظ اختيار كل شخص في متصفّحه الخاص، فلا يؤثر تخصيص
أعمدتك على ما يراه زملاؤك.

## قيم الجنس المتاحة [#قيم-الجنس-المتاحة]

معظم العيادات تحتاج فقط **ذكر** و**أنثى**، لذلك يأتي نموذج العميل
مفعّلاً على هاتين القيمتين فقط ويسمح لك بتفعيل **آخر** و**أفضّل عدم
الإفصاح** عند الحاجة.

من **المؤسسة ← العملاء (الإعدادات) ← البيانات الديموغرافية** علّم القيم
المرغوبة ثم اضغط **حفظ**:

* قائمة الجنس في نموذج **إضافة** العميل تعرض فقط القيم المفعّلة.
* مرشّح القائمة لا يقترح إلا القيم المفعّلة.
* **العملاء الحاليون يحتفظون بقيمتهم المخزّنة** — إذا كان عميل مسجَّل بـ
  «آخر» وقمت بتعطيل هذا الخيار، يبقى السجل كما هو ويظل تعديله ممكناً
  دون إجبار على تغيير القيمة.
* لا يُسمح بترك القائمة فارغة — يجب إبقاء قيمة جنس واحدة على الأقل
  مفعَّلة وإلا تعذّر إضافة أي عميل.

## الحقول المخصّصة [#الحقول-المخصّصة]

أضف حقولاً خاصة بعيادتك من **الحقول المخصّصة → إضافة حقل**:

1. اختر النوع — نص، رقم، تاريخ، قائمة منسدلة، مربع اختيار، اختيار
   متعدّد.
2. سمِّ الحقل. اجعله قصيراً — هذا هو رأس العمود.
3. للاختيار / الاختيار المتعدّد، أدخل الخيارات سطراً لكل خيار.
4. فعّل **إلزامي** إذا لزم الأمر.
5. احفظ.

يظهر الحقل الجديد في نموذج الإدخال وفي الملف الشخصي للعميل وعبر الـ
API فوراً، وكذلك كأعمدة اختيارية **مخفية افتراضيًا** في قائمة **العملاء**
(فعّلها من قائمة **الأعمدة**). تستطيع حذف أو إعادة تسمية حقل مخصّص لاحقاً،
لكن الحذف يمحو القيم على كل العملاء — فانتبه.

## تجميع العملاء [#تجميع-العملاء]

الحقول المخصّصة من نوع قائمة منسدلة يمكن استخدامها لـ **تجميع** العملاء
في قائمة العرض (فكّر بخطة التأمين، ومصدر الإحالة، والممارس الأساسي).
فعّل **استخدام للتجميع** عند إنشاء الحقل.

***

**مقالات المساعدة داخل التطبيق:** `clients_name_mode_setting`،
`clients_required_fields_setting`، `clients_visible_columns_setting`،
`clients_group_by_setting`، `clients_custom_fields`.


# الفواتير (/ar/docs/clinic-admin/client-invoices)



# الفواتير [#الفواتير]

صفحة **المؤسسة ← الفواتير** هي المكان الذي يفوتر فيه فريقك العميل على الخدمات
والمنتجات التي تلقّاها، ويسجّل المبالغ الواردة، ويرسل له ملف PDF أنيقًا. ترتبط
الفواتير بوحدة **الفواتير** — فعّلها من **المؤسسة ← الإعدادات ← الوحدات** إن لم
يظهر العنصر في القائمة.

> الفواتير لفوترة **مرضاك**. وهي منفصلة تمامًا عن فواتير الاشتراك التي يرسلها
> MediSync إلى **عيادتك** — تلك تجدها تحت **الإعدادات ← الفوترة**.

## العثور على فواتيرك [#العثور-على-فواتيرك]

وسّع **المؤسسة ← الفواتير** في الشريط الجانبي. يفتح كمجموعة تضم ثلاثة عناصر —
**الفواتير** (القائمة) و**التقارير** و**إعدادات الفواتير**. تعمل القائمة كبقية
التطبيق:

* **البحث** بالرقم أو العميل أو المبلغ.
* **التصفية حسب الحالة** — حدّد أي مجموعة من: مسودة، مُصدَرة، مدفوعة جزئيًا،
  مدفوعة، أو ملغاة لتضييق القائمة.
* **الفرز والتقسيم** للأعمدة، وانقر صفًا لفتح تفاصيله الكاملة في لوحة جانبية.

يأخذك عنصر **إعدادات الفواتير** في المجموعة إلى الإعدادات الافتراضية للفواتير —
راجع [إعدادات الفواتير](#إعدادات-الفواتير).

## إصدار أو حذف عدة فواتير دفعة واحدة [#إصدار-أو-حذف-عدة-فواتير-دفعة-واحدة]

عندما يكون لديك مجموعة من المسودات لمعالجتها، لست مضطرًا لفتحها واحدة تلو الأخرى.
من القائمة:

1. **حدّد المربعات** بجوار الفواتير التي تريدها (أو مربع الترويسة لتحديد الصفحة
   كاملةً).
2. يظهر **شريط إجراءات جماعية** بإجراءين:
   * **إصدار المسودات** — يُصدِر كل مسودة محدَّدة دفعةً واحدة، فيُسنِد لكل منها رقمًا
     وتاريخ استحقاق، تمامًا كإصدارها فرديًا.
   * **حذف المسودات** — يحذف المسودات المحدَّدة.

يقتصر الإجراءان على **المسودات** فقط — أما الفاتورة المُصدَرة فتُتخطّى (لا يمكن
حذفها، ولا شيء يُصدَر فيها). وإن تعذّرت معالجة أي عنصر في الدفعة، فإن البقية تمضي،
ويُخبَرك التطبيق أيها تُخطّي ولماذا.

## إنشاء فاتورة [#إنشاء-فاتورة]

اضغط **فاتورة جديدة** لفتح المعالج المكوّن من خطوتين.

**الخطوة 1 — مَن وماذا:**

* **العميل** — ابحث واختر العميل الذي تفوتره (مطلوب).
* **الطبيب المعالج** — اختياري، يُسجَّل على الفاتورة للرجوع إليه.
* **البنود** — أضِف كل خدمة أو منتج. اختر صنفًا من الكتالوج فيملأ اسمه وسعره
  ونسبة الضريبة تلقائيًا، أو اكتب بندًا مخصّصًا يدويًا. حدّد الكمية لكل بند.

**الخطوة 2 — المبالغ والتفاصيل:**

* **العملة** — الافتراضية عملتك المعتادة؛ وقد يضبطها اختيار صنف من الكتالوج.
* **الخصم** — مبلغ ثابت أو نسبة مئوية على كامل الفاتورة.
* **الضريبة** — نسبة الضريبة المطبَّقة على البنود الخاضعة للضريبة.
* **شروط السداد** — عدد الأيام المتاحة للعميل للدفع (تُستخدم لضبط تاريخ الاستحقاق
  عند الإصدار).
* **الملاحظات** — أي شيء تريد طباعته على الفاتورة.

تُظهر **معاينة حيّة** على الجانب الإجمالي الفرعي والخصم والضريبة والإجمالي وهي
تُعاد حسابها أثناء الكتابة، فترى دائمًا ما سيُفوتَر به العميل قبل الحفظ.

ينشئ الحفظ الفاتورة كـ**مسودة** — لا شيء نهائي بعد، ويمكنك متابعة تعديلها.

## إصدار الفاتورة [#إصدار-الفاتورة]

المسودة بلا رقم وليست رسمية. عندما تجهز الفاتورة، اضغط **إصدار**. الإصدار:

1. يُسنِد **رقم الفاتورة** التالي (بالتنسيق الذي ضبطته).
2. يضبط **تاريخ الاستحقاق** من شروط السداد.
3. ينقل الفاتورة إلى **مُصدَرة**.

بعد الإصدار لا يمكن حذف الفاتورة — إن احتجت إلغاءها فاستخدم **إلغاء** بدلًا من ذلك
(راجع [الحالات](#الحالات)). يحافظ ذلك على سجل نظيف وقابل للتدقيق لكل ما فوترته.

## تسجيل المدفوعات [#تسجيل-المدفوعات]

افتح فاتورة مُصدَرة واضغط **تسجيل دفعة**. أدخِل المبلغ وطريقة الدفع (نقدًا، بطاقة،
تحويل بنكي، وغيرها) ومرجعًا أو ملاحظة اختياريين.

* يمكنك تسجيل **عدة دفعات جزئية** بمرور الوقت؛ تتابع الفاتورة **الرصيد** المتبقي
  (الإجمالي ناقص ما دُفع).
* عندما تبلغ الدفعات الإجمالي كاملًا تصبح الفاتورة **مدفوعة** تلقائيًا. وحتى ذلك
  تظهر كـ**مدفوعة جزئيًا**.
* لا يمكنك تسجيل أكثر من الرصيد المستحق — تُرفض الزيادات في الدفع.

تُدرَج كل دفعة في سجل مدفوعات الفاتورة.

## رد دفعة [#رد-دفعة]

إن احتجت إلى إعادة مبلغ إلى العميل — خدمة مُلغاة أو تحصيل زائد — افتح الفاتورة
واضغط **تسجيل رد** (متاح أيضًا من قائمة «•••» في الصف). أدخِل المبلغ وطريقة الرد
وسببًا اختياريًا.

* يمكنك رد **ما يصل إلى المبلغ الذي دفعه العميل** — لا يمكنك رد أكثر مما وصل فعلًا.
* يُعيد الرد **فتح الفاتورة**. فالفاتورة **المدفوعة** بالكامل تعود إلى **مدفوعة
  جزئيًا** (يصبح هناك رصيد مستحق من جديد)، وإن أعاد الرد كل ما دُفع تعود إلى
  **مُصدَرة**.
* لا يُسمح بالرد على فاتورة **مسودة** أو **ملغاة** — إذ لا توجد دفعة لإعادتها.

تظهر المبالغ المردودة إلى جانب المدفوعات تحت تبويب **المدفوعات والمبالغ المردودة**،
فتبقى لديك دائمًا سلسلة الأموال الكاملة للفاتورة.

## الحالات [#الحالات]

| الحالة            | معناها                                                                                                                |
| ----------------- | --------------------------------------------------------------------------------------------------------------------- |
| **مسودة**         | قيد التجهيز. بلا رقم بعد؛ قابلة للتعديل والحذف.                                                                       |
| **مُصدَرة**       | نهائية ومرقّمة. بانتظار السداد.                                                                                       |
| **مدفوعة جزئيًا** | وصل بعض المبلغ، ويبقى رصيد.                                                                                           |
| **مدفوعة**        | مدفوعة بالكامل.                                                                                                       |
| **ملغاة**         | أُلغيت بعد الإصدار. تُحفظ للسجل، لكنها لم تعد مستحقة.                                                                 |
| **متأخرة**        | تظهر تلقائيًا على فاتورة مُصدَرة/مدفوعة جزئيًا تجاوز تاريخ استحقاقها وما زال عليها رصيد. وتزول من تلقائها بعد السداد. |

## إرسال ملف PDF إلى العميل [#إرسال-ملف-pdf-إلى-العميل]

من الفاتورة يمكنك:

* **توليد PDF** — تقديم الفاتورة كملف PDF (اختر تخطيطًا بسيطًا أو مفصّلًا) وفتحه.
* **بريد إلكتروني** — أرسل للعميل رابطًا إلى الـPDF. يذهب البريد إلى عنوان العميل
  المسجَّل افتراضيًا، أو اكتب عنوانًا آخر. الرابط صالح لمدة 7 أيام.

يُخزَّن ملف الـPDF مؤقتًا، فإعادة الإرسال فورية ما لم يتغيّر محتوى الفاتورة.

## تحويل عرض سعر إلى فاتورة [#تحويل-عرض-سعر-إلى-فاتورة]

إن كنت تستخدم [عروض الأسعار](/clinic-admin/quotations) فلست مضطرًا لإعادة كتابة
عرض مقبول. من عرض مقبول — أو من شاشة **فاتورة جديدة** — استخدم **إنشاء من عرض**
لإنشاء مسودة فاتورة تنسخ عميل العرض وبنوده المرتبطة بالكتالوج. راجِعها ثم أصدِرها
كأي فاتورة أخرى.

## تقرير المستحقات [#تقرير-المستحقات]

افتح صفحة **التقارير** من قائمة الفواتير لتحصل على نظرة سريعة على موقف فوترتك. في
الأعلى، يلخّص صف من **بطاقات المؤشّرات** الأموال:

* **المفوتَر** — إجمالي قيمة كل ما أصدرته (لا تُحتسب المسودات ولا الفواتير الملغاة).
* **المُحصَّل** — ما تقاضيته فعلًا.
* **المستحق** — ما زال مطلوبًا على الفواتير المُصدَرة والمدفوعة جزئيًا.
* **المتأخر** — الجزء من ذلك المستحق الذي تجاوز تاريخ استحقاقه بالفعل.

أسفل البطاقات، يوضّح **توزيع الحالات** عدد الفواتير في كل حالة، ويجمع جدول **تقادم
المستحقات** ما هو مطلوب لك حسب مدّة التأخّر:

| الشريحة              | ما تشمله                                               |
| -------------------- | ------------------------------------------------------ |
| **حالي**             | لم يحلّ موعده بعد (أو بلا تاريخ استحقاق محدَّد).       |
| **1–30 يومًا**       | حتى شهر من التأخّر.                                    |
| **31–60 يومًا**      | من شهر إلى شهرين من التأخّر.                           |
| **61–90 يومًا**      | من شهرين إلى ثلاثة من التأخّر.                         |
| **أكثر من 90 يومًا** | أكثر من ثلاثة أشهر من التأخّر — وهي الأَولى بالمتابعة. |

يحتسب التقادم الفواتير **المفتوحة** فقط (المُصدَرة أو المدفوعة جزئيًا وعليها رصيد)؛
أما المدفوعة والملغاة فتسقط من الحساب.

## إعدادات الفواتير [#إعدادات-الفواتير]

افتح **الفواتير ← إعدادات الفواتير** من مجموعة الشريط الجانبي لضبط الإعدادات
الافتراضية المطبَّقة على كل فاتورة جديدة:

* **تنسيق الرقم** — البادئة والنمط المستخدمان عند الإصدار (مثل `INV-2026-0001`).
* **نسبة الضريبة الافتراضية** — تُملأ مسبقًا على الفواتير الجديدة.
* **شروط السداد الافتراضية** — العدد الافتراضي للأيام المتاحة للعملاء للدفع.

يؤثّر تغيير هذه الإعدادات في الفواتير المستقبلية فقط؛ أما الفواتير التي أصدرتها
فتحتفظ بأرقامها وشروطها الأصلية.


# Dashboard templates (/ar/docs/clinic-admin/dashboard-templates)



# Dashboard templates [#dashboard-templates]

A **template** is a ready-made dashboard new members start from on their first
visit, so your team lands on something useful instead of a blank grid. You can
publish one org-wide default and, optionally, a different default per role
(e.g. doctors lead with their schedule, front desk with check-ins).

Open **Settings → Dashboard templates** (the tab is visible to admins). The
tab opens with a short **How dashboard templates work** guide and is laid out
as two steps: **Step 1 · Templates** (create them) and **Step 2 · Role
defaults** (assign them).

## How a member inherits a template [#how-a-member-inherits-a-template]

The first time a member opens their Overview — before they've saved anything:

* If their role has a template assigned, they start from it.
* If several of their roles have templates, they're asked to **choose** one.
* Otherwise they start from the **org default** (if you've set one), or a blank
  grid.

Whatever they start from, their first save makes a **private copy** — editing
or deleting a template never disturbs members who've already saved their own
layout.

## Create a template [#create-a-template]

Templates are seeded from a layout, so the easiest path is:

1. On your **Overview**, build and **save** the layout you want (see
   [Customize your dashboard](/en/docs/getting-started/customize-dashboard)).
   Until you have a saved layout, **Step 1** shows a **Go to Overview** prompt
   instead of the **New template** button.
2. Go to **Settings → Dashboard templates** and, under **Step 1 · Templates**,
   click **New template**.
3. Name it and pick what to **seed from** — one of your saved layouts, or a
   blank dashboard.
4. Click **Create template**.

## Set the org default [#set-the-org-default]

In the templates table, click **Set default** on the template every new member
should start from. Only one template can be the org default at a time —
choosing a new one replaces the old.

## Assign a template to a role [#assign-a-template-to-a-role]

**Step 2 · Role defaults** unlocks once you have at least one template. Each
role then has a dropdown:

* Pick a template to make it that role's starting dashboard.
* Choose **Org default** to clear the assignment (the role falls back to the
  org-wide default).

Changes save as soon as you pick. Roles come from
[Staff & roles](/en/docs/clinic-admin/staff-roles); base roles (Admin,
Receptionist, etc.) always use the org default.

## Delete a template [#delete-a-template]

Click the trash icon on a template row and confirm. Any role pointing at it
falls back to the org default. Members who already saved a copy keep theirs.

***

**In-app help:** no dedicated in-app article yet for dashboard templates.


# تخزين المستندات (/ar/docs/clinic-admin/document-storage)



# تخزين المستندات [#تخزين-المستندات]

**المؤسسة ← المستندات** هي الصفحة التي تحفظ فيها العيادة ملفاتها
المشتركة — سجلات العملاء المرفوعة، ومرفقات التاريخ الطبي، والملاحظات
الصوتية، وأي ملف آخر تريد أرشفته على مستوى المؤسسة أو مرتبطًا بعميل.

## نظرة سريعة على استخدام التخزين [#نظرة-سريعة-على-استخدام-التخزين]

تبدأ الصفحة ببطاقة **استخدام التخزين** التي توضّح كم استهلكت من سقف
خطتك، وما الذي يشغل هذه المساحة. تُفصَّل البيانات المستخدَمة حسب نوع
الملف:

* **صور** — JPEG, PNG, GIF, WebP, HEIC
* **فيديوهات** — MP4, WebM, QuickTime (‎.mov‎)
* **ملفات PDF** — ‎.pdf‎
* **مستندات** — Word (‎.doc، .docx‎)، نص عادي (‎.txt‎)
* **جداول بيانات** — Excel (‎.xls، .xlsx‎)، CSV
* **صوت** — ملاحظات صوتية (WebM, M4A, MP3, OGG, WAV)
* **أخرى** — أي ملف لا يندرج تحت الفئات أعلاه
* **متاح** — المساحة المتبقية على خطتك

النسبة المئوية في الأعلى تتحوّل إلى &#x2A;*كهرماني عند 75%** وإلى &#x2A;*أحمر عند
90%**. وعند بلوغ السقف يتعطّل زر **الرفع** مع تلميح يوضّح السبب. وإذا
جمّد المسؤول الرفع على خطتك تعرض البطاقة **مُجمَّد** بدل النسبة.

## أنواع الملفات المسموح برفعها [#أنواع-الملفات-المسموح-برفعها]

يُقبل رفع الأنواع التالية فقط، وأي نوع آخر يُرفض قبل إرساله إلى
التخزين:

| الفئة         | الصيغ                                  |
| ------------- | -------------------------------------- |
| صور           | JPEG, PNG, GIF, WebP, HEIC             |
| فيديوهات      | MP4, WebM, QuickTime (‎.mov‎)          |
| ملفات PDF     | PDF                                    |
| مستندات       | Word (‎.doc، .docx‎)، نص عادي (‎.txt‎) |
| جداول بيانات  | Excel (‎.xls، .xlsx‎)، CSV             |
| ملاحظات صوتية | WebM, M4A, MP3, OGG, WAV               |

> الفيديو نوع **أُضيف حديثًا** — العيادات الموجودة سابقًا على ميديسينك
> تستطيع الآن رفع ملفات MP4/WebM/MOV دون تغيير الخطة.

## استكشاف المشكلات [#استكشاف-المشكلات]

* **"تم إيقاف الرفع — المؤسسة غير نشطة"** — العيادة موقوفة؛ تواصل مع
  المشرف العام.
* **"تم بلوغ سقف التخزين"** — أرشِف ملفات قديمة من قسم **المحذوفات** أو
  اطلب من المسؤول رفع السقف.
* **"تم تجميد التخزين لهذه المؤسسة"** — الرفع محجوب على مستوى الخطة؛
  تواصل مع المسؤول عن الفوترة.


# Payments in Egypt (Kashier) (/ar/docs/clinic-admin/egypt-payments)



# Payments in Egypt (Kashier) [#payments-in-egypt-kashier]

Clinics registered in Egypt have their card payments processed by **Kashier**, a local payment
provider, instead of Stripe. You don't choose this — MediSync picks it automatically based on
your organization's country. Everything else about billing works exactly the same: the same
**Organization → Billing** page, the same plans and invoices, the same "Add card" button.

<Callout>
  The **Payment methods** card on your Billing page always tells you which provider is handling
  your cards — look for "Cards are processed securely by Kashier." If you ever see a different
  provider named there, that's not a mistake to fix; it just means your organization is routed
  differently (for example, a non-Egyptian country).
</Callout>

## Adding a card [#adding-a-card]

1. Go to **Organization → Settings → Billing**.
2. Under **Payment methods**, click **Add card**.
3. You're redirected to Kashier's secure hosted page — MediSync never sees or stores your card
   number, only what Kashier reports back (card brand, last 4 digits, expiry).
4. Enter your card details on Kashier's page and confirm. Kashier verifies the card with a small
   1.00 EGP charge; this is part of saving the card, not a payment towards an invoice.
5. You're brought back to a MediSync confirmation page. It says &#x2A;*"Card saved"** once MediSync has
   checked the result with Kashier directly — it never takes the redirect's own word for it, so
   give it a moment if it still says it's verifying. Click **Back to billing** and your card is in
   the list.

If you leave Kashier's page without finishing, or cancel partway through, you're brought back
to a page that simply says the setup wasn't completed — no charge is made and nothing changes
on your account. You can click **Add card** again any time.

## Paying an invoice [#paying-an-invoice]

1. Go to **Organization → Billing → Invoices**.
2. Find an invoice that's due and click **Pay now**.
3. You're redirected to Kashier's hosted checkout to complete the payment (or charged
   automatically against your saved card, if you have auto-charge turned on — see
   [Billing & plans](/docs/clinic-admin/billing-plans)).
4. After paying, you're brought back to MediSync, which double-checks the payment status with
   Kashier directly — so the amount, invoice number, and paid/pending state you see are always
   confirmed by Kashier's own records, never just read off the page you were redirected from.

## If "Add card" or "Pay now" doesn't work [#if-add-card-or-pay-now-doesnt-work]

Occasionally you'll see a message that online payment isn't available yet. This happens when
Kashier hasn't finished being set up for your environment — it's a temporary, fixable state on
MediSync's side, not a problem with your card or your clinic's account. Contact support and
they can tell you when it's resolved; nothing you can do on your end speeds this up.

***

**In-app help:** `org_settings_billing_payment_methods_heading`,
`org_settings_billing_gateway_name_kashier`, `org_settings_billing_pay_invoice`,
`kashier_payment_status_card_saved_title`, `kashier_payment_status_gateway_disabled_title`.


# أكمل إعداد عيادتك (/ar/docs/clinic-admin/finish-setup)



# أكمل إعداد عيادتك [#أكمل-إعداد-عيادتك]

بعد إنشاء منظمتك مباشرةً، يرشدك ميديسينك عبر معالج ترحيب قصير، ثم يبقي
**قائمة إعداد** في زاوية لوحة التحكم الخاصة بك حتى لا تفوتك الخطوات
المتبقية. كلاهما اختياري — يمكنك تخطي أي خطوة وتصغير القائمة متى شئت.

## معالج الترحيب [#معالج-الترحيب]

يظهر المعالج مرة واحدة فقط، مباشرةً بعد إنشاء منظمتك، ويغطي خطوتين
سريعتين:

* **المنطقة الزمنية** — لتتوافق أوقات المواعيد والتذكيرات والتقارير مع
  التوقيت المحلي لعيادتك.
* **الهوية البصرية** — ارفع شعارك واختر لون العلامة التجارية، ويُستخدمان
  في فواتيرك وبوابة العملاء ورسائل البريد الإلكتروني.

كل خطوة اختيارية — اضغط **تخطي** لتجاوزها، أو **إنهاء لاحقاً** لإغلاق
المعالج بالكامل. يمكنك دائماً تغيير المنطقة الزمنية أو الهوية البصرية
لاحقاً من **إعدادات المنظمة**.

## قائمة الإعداد [#قائمة-الإعداد]

بعد المعالج، تظهر **قائمة إعداد** في الزاوية السفلية من لوحة التحكم —
قائمة قصيرة بأهم الأمور التي يُستحسن القيام بها في أيامك الأولى على
ميديسينك. وهي ترافقك عبر صفحات عيادتك، فيمكنك إنجازها من أي مكان تعمل فيه:

* **إضافة طريقة دفع** — قم بذلك قبل انتهاء فترتك التجريبية حتى لا ينقطع
  اشتراكك.
* **إكمال ملف المنظمة** — البريد الإلكتروني، والهاتف، والعنوان الخاص
  بجهة الاتصال.
* **دعوة فريقك** — أضف الموظفين الذين سيستخدمون ميديسينك معك.
* **إضافة أول خدمة لديك** — لتكون جاهزاً لحجز المواعيد وفوترة العملاء
  (تظهر فقط إذا كانت خطتك تتضمن وحدة المنتجات والخدمات).
* **ضبط إعدادات الإشعارات الافتراضية** — اختر الأحداث التي ترسل تذكيرات
  عبر الرسائل القصيرة أو البريد الإلكتروني.

كل عنصر يوصلك مباشرةً إلى الصفحة التي تكمل فيها الخطوة، فلا داعي للبحث
بين القوائم. بمجرد إتمامك لأي مهمة — سواء من رابط القائمة أو من أي مكان
آخر في الإعدادات — يتم وضع علامة عليها تلقائياً.

### التخطي والتصغير [#التخطي-والتصغير]

* **تخطَّ** أي عنصر لا ينطبق على عيادتك الآن — يُزال من القائمة دون أي
  أسئلة.
* **صغِّر*&#x2A; القائمة من رأسها (زر &#x2A;*✕**) إذا كنت تفضّل استكشاف ميديسينك
  بنفسك. تتحول إلى شارة تقدّم صغيرة في الزاوية نفسها — اضغط عليها في أي
  وقت لإعادة فتح القائمة. لا يضيع شيء، والتصغير يؤثر على العرض الخاص بك
  وحدك دون زملائك.
* بمجرد وضع علامة على كل العناصر أو تخطّيها جميعاً، تختفي القائمة من
  لوحة التحكم من تلقاء نفسها.

لا شيء في القائمة إلزامي لاستخدام ميديسينك — إنها مجرد اختصار لخطوات
الإعداد التي تجدها معظم العيادات الجديدة مفيدة.


# نظرة عامة للمسؤول (/ar/docs/clinic-admin)



# مسؤول العيادة — نظرة عامة [#مسؤول-العيادة--نظرة-عامة]

بصفتك مسؤول العيادة، أنت تتحكم بكل ما هو ليس من الرعاية اليومية للعملاء:
خطة الفوترة، والميزات التي تستخدمها العيادة، ومن يملك الوصول وماذا
يستطيع أن يفعل. يشرح هذا القسم كل ذلك.

## لوحة تحكم المسؤول [#لوحة-تحكم-المسؤول]

بعد تسجيل الدخول في
[admin.medisync-solutions.com](https://admin.medisync-solutions.com)
تفتح لوحة تحكم المسؤول. يعرض الشريط الجانبي ستة مجالات رئيسية:

| المجال                  | الوظيفة                                                               |
| ----------------------- | --------------------------------------------------------------------- |
| **المؤسسة**             | المعلومات الأساسية للعيادة، ومعلومات التواصل، والشعار، والمعرّف العام |
| **الوحدات**             | تفعيل أو تعطيل مجموعات الميزات (المواعيد، المخزون، …)                 |
| **الفوترة**             | الخطة، والفواتير، والإضافات، والاستهلاك                               |
| **الموظفون**            | دعوة الزملاء، وتعيين الأدوار                                          |
| **العملاء (الإعدادات)** | الحقول المخصّصة، والحقول الإلزامية، ونمط الاسم                        |
| **التحليلات**           | إحصاءات العيادة الشاملة                                               |

## قائمة مهام اليوم الأول [#قائمة-مهام-اليوم-الأول]

إذا كانت هذه مرتك الأولى كمسؤول، نفّذ الخطوات بالترتيب التالي:

1. **[إعداد مؤسستك](/ar/docs/clinic-admin/organization-setup)** — الاسم،
   والمنطقة الزمنية، والشعار، والمعرّف العام. يستغرق حوالي خمس دقائق.
2. **[اختر الوحدات](/ar/docs/clinic-admin/modules)** — فعّل ما تحتاجه
   عيادتك فعلاً فقط.
3. **[اختر خطة](/ar/docs/clinic-admin/billing-plans)** — تستطيع البدء
   بالإصدار التجريبي والترقية لاحقاً.
4. **[ادعُ فريقك](/ar/docs/clinic-admin/staff-roles)** — أرسل الدعوات
   إلى موظفي الاستقبال والممارسين مع تعيين الأدوار المناسبة.
5. **[اضبط حقول العملاء](/ar/docs/clinic-admin/client-field-config)** —
   حدّد أي بيانات يلتقطها نظامك.

بعد ذلك، تنتقل إلى أدلة الاستقبال — انظر
&#x2A;*[موظف الاستقبال → إضافة عميل](/ar/docs/receptionist/add-client)**.


# Leads (sales pipeline) (/ar/docs/clinic-admin/leads)



# Leads (sales pipeline) [#leads-sales-pipeline]

The **Leads** module gives your front-desk and sales team a pipeline for prospective clients —
people who've inquired but haven't booked yet — separate from your existing client records. It's
gated by the **Leads** module — enable it under **Organization → Settings → Modules** if you don't
see **Leads** in the sidebar.

Once enabled, **Leads** appears as its own section in the sidebar with four pages: **All leads**,
**Analytics**, **Dormant patients**, and **Settings**.

## The pipeline [#the-pipeline]

**Leads → All leads** shows every lead as a card or row you can filter by status (New, Contacted,
Qualified, Converted, Lost), source (web form, phone, walk-in, referral, campaign, and more), and
assigned owner. Opening a lead lets staff log calls/emails/notes, move it to the next status, and —
once it's ready — convert it into a client record.

## Analytics [#analytics]

**Leads → Analytics** summarises the whole pipeline: total and open leads, new-this-month vs.
new-last-month, conversion rate, a status funnel, and a 12-month created/converted trend. Everything
can be filtered by owner, source, branch, and a date range.

### Attribution [#attribution]

The **Attribution** table on the Analytics page breaks that same pipeline down **by source** —
for each source (referral, web form, campaign, etc.) it shows how many leads came in, how many
converted, the conversion rate, and the cumulative **paid revenue** collected from that source's
converted clients. Use it to see which channels are actually paying off, not just generating
inquiries.

## Reactivating a dormant patient [#reactivating-a-dormant-patient]

**Leads → Dormant patients** lists clients who've gone quiet — people who've had a completed visit
before, but not recently — so your team can proactively reach out instead of waiting for them to
book again on their own.

* **What "dormant" means.** A client shows up here once they've had at least one completed visit
  and **no completed visit in the last 180 days**. (A client who has never had a visit isn't
  "dormant" — they just haven't come in yet, and won't appear on this list.) The 180-day window is
  the default; if your clinic wants a different threshold, ask MediSync support.
* **What you see.** Each row shows the client's name, contact details, and their last completed
  visit date, sorted with the longest-idle clients first.
* **Start reactivation.** Click **Start reactivation** on a client's row to create a new lead for
  them in the pipeline (source: *Reactivation*), so your team can track outreach the same way they
  track any other lead — call them, log the interaction, and move it through the pipeline toward a
  rebooked visit. If a reactivation lead is already open for that client, the button is replaced
  with **Reactivation started** instead of letting you create a duplicate.

## Related [#related]

* [Analytics](/docs/clinic-admin/analytics) — the clinic-wide dashboard (clients, appointments,
  revenue); Leads Analytics is a separate, pipeline-specific dashboard.
* [Loyalty program](/docs/clinic-admin/loyalty) — referral bonuses trigger when a lead marked as
  coming from a referral converts into a client.
* [Modules](/docs/clinic-admin/modules) — enabling/disabling the Leads module.


# Loyalty program (/ar/docs/clinic-admin/loyalty)



# Loyalty program [#loyalty-program]

The **Loyalty** module turns repeat visits and payments into rewards. Clients earn points, climb
through tiers, redeem points for account credit, and can earn bonus points for referring new
clients. It's gated by the **Loyalty** module — enable it under **Organization → Settings →
Modules** if you don't see it in the sidebar.

Once enabled, **Loyalty** appears in the sidebar as its own section with four pages: **Settings**,
**Analytics**, **Members**, and **Transactions**.

## Setting up your program [#setting-up-your-program]

Open **Loyalty → Settings**. The page is split into two sections.

### Earning & Redemption [#earning--redemption]

* **Program name** — shown to your team; pick something recognizable (e.g. "MediSync Rewards").
* **Program active** — turn the whole program off without losing any history. While off, clients
  stop earning and redeeming points, but nothing is deleted — flip it back on and balances pick up
  where they left off.
* **Points per currency unit** — how many points a client earns per cent (or minor unit) of a
  **paid invoice**. For example, `1` means 1 point per cent spent, i.e. 100 points per $1 paid.
* **Points per visit** — a flat number of bonus points awarded every time an appointment is marked
  **completed**, independent of what (if anything) was paid.
* **Currency per redeemed point** — the redemption rate: how much account credit a client gets per
  point they spend. For example, `0.01` means 1 point ≈ 1 cent of credit.

> **Heads up — setting both accrual fields.** If you set **both** "Points per currency unit" and
> "Points per visit", a visit that also produces a paid invoice earns points from **both** rules —
> the settings page shows a warning when this is the case. This is intentional (some clinics want
> to reward the visit itself in addition to the spend), but double-check it's what you want before
> saving.

### Rewards & Lifecycle [#rewards--lifecycle]

* **Tier thresholds** (Bronze / Silver / Gold / Platinum) — the lifetime-points total a client
  needs to reach each tier. Tiers update automatically every time a client earns or is adjusted.
* **Points expiry (days)** — how many days after being earned a point expires if unused. Leave
  this empty for points that never expire.
* **Referrer bonus points** — a flat bonus credited to a client the moment someone they referred
  converts into a client. Leave empty to disable referral rewards for referrers.
* **Referee first-earn multiplier** — a multiplier (e.g. `2` for double points) applied to a
  referred client's very first points earned. Leave empty to disable this side of the reward.

Click **Save changes** — a "Saved" confirmation appears briefly next to the button.

## How points work [#how-points-work]

* **Earning.** Points are credited automatically — from a completed visit, a paid invoice, or
  both, depending on how you configured the program above. Staff can also manually credit or debit
  points from a client's **Loyalty** tab on their client record (for one-off adjustments).
* **Redeeming.** A client's points can be redeemed for account credit at the rate set in
  **Currency per redeemed point**. Redemption is done from the client's **Loyalty** tab.
* **Expiring.** If **Points expiry** is set, earned points expire automatically after that many
  days — oldest points first. This runs as a background job once a day, so there can be a short
  delay (up to a day) between a point technically aging out and it showing as expired.
* **Tiers.** A client's tier is recalculated every time their lifetime points change, snapping to
  the highest tier threshold they've reached. Tiers never go down on their own — points expiring
  reduces the redeemable **balance**, but a client's **lifetime** total (and therefore their tier)
  only ever goes up.

## Referral bonuses [#referral-bonuses]

When a lead that was marked as coming from a referral converts into a client:

1. The **referring client** gets an immediate flat bonus (the "Referrer bonus points" you
   configured).
2. The **new client** gets their very first points-earning event multiplied (the "Referee
   first-earn multiplier") — e.g. if they earn 50 points from their first paid invoice with a 2x
   multiplier configured, they actually receive 100.

Both sides are optional and independent — you can reward just the referrer, just the referee,
both, or neither.

## Members — the leaderboard [#members--the-leaderboard]

**Loyalty → Members** lists every client enrolled in the program, most valuable first by default.
Use it to spot your most loyal clients or to check where a particular client's tier stands.

* **Filter by tier** using the buttons at the top (All, Platinum, Gold, Silver, Bronze).
* **Sort** by clicking the **Balance**, **Lifetime points**, or **Last activity** column headers.
* Each row shows the client's current **tier**, redeemable **balance**, **lifetime points**,
  how many people they've **referred**, and when they were last active.
* **Click any row** to jump straight to that client's record with their **Loyalty** tab open.

## Transactions — the audit log [#transactions--the-audit-log]

**Loyalty → Transactions** is a running log of every point movement across the whole
organization — every earn, redemption, manual adjustment, and expiry, in one place. Use it to
answer "why does this client have this many points" or to audit a staff member's manual
adjustments.

* **Search** by client name.
* **Filter** by transaction kind (Earn, Redeem, Adjust, Expiry), by which staff member made a
  manual change, and by a date range.
* Each row shows the date, client, kind, point amount, and the reason recorded for the change
  (e.g. "Earned from completed visit", "Referral bonus: referred a new client").

## Analytics — program health [#analytics--program-health]

**Loyalty → Analytics** is a dashboard for judging whether the program is working, over a 30- or
90-day window (toggle at the top right):

* **KPI tiles** — referral conversions and total bonus points paid out from referrals, points
  expiring in the next 7 and 30 days (so you can plan ahead if you want to nudge clients to redeem
  before their points age out), and total enrolled members.
* **Points trend** — a daily bar chart of points earned vs. redeemed, so you can see whether the
  program is net-accumulating or net-draining points over time.
* **Tier distribution** — how many members sit in each tier, at a glance.
* **Top earners** / **Top redeemers** — your ten most valuable and ten most active-spending
  members, useful for spotting who to feature in a VIP or ambassador program.

## Turning the module off [#turning-the-module-off]

Disabling **Loyalty** under **Organization → Settings → Modules** hides the sidebar section and
blocks the API for everyone, but keeps all program configuration, memberships, and transaction
history intact. Re-enabling brings everything back exactly as it was — no balances or history are
lost while the module is off.


# الوحدات (/ar/docs/clinic-admin/modules)



# الوحدات [#الوحدات]

ميديسينك مصمّم ليكون نظاماً معياري‌اً. بدلاً من دفع ثمن كل ميزة سواء
استخدمتها أم لا، فعّل فقط ما تحتاجه عيادتك. كل وحدة تجمع صفحات وتدفّقات
عمل وصلاحيات مرتبطة.

## الوحدات المتوفرة [#الوحدات-المتوفرة]

| الوحدة            | ما الذي تفعّله                                               |
| ----------------- | ------------------------------------------------------------ |
| **المواعيد**      | التقويم، ومسار الحجز، والتذكيرات، وحالات عدم الحضور          |
| **سجلات العملاء** | الملفات الشخصية، والتاريخ الطبي، والملاحظات (مفعّلة دائماً)  |
| **المخزون**       | تتبّع المخزون، والمستهلكات، وتنبيهات النقص                   |
| **الفوترة**       | الفواتير، والمدفوعات، والمطالبات التأمينية                   |
| **تخزين الملفات** | مكتبة المستندات، ومرفقات الملاحظات، وملفات التاريخ الطبي     |
| **الإشعارات**     | تذكيرات الرسائل القصيرة والبريد الإلكتروني وتأكيدات المواعيد |
| **التحليلات**     | مؤشرات العيادة الشاملة خارج الملخّص المفعّل دائماً           |

> **سجلات العملاء** مفعّلة دائماً — لا يمكن تشغيل عيادة بدونها.

### وحدة تخزين الملفات — ما الذي يتم تقييده [#وحدة-تخزين-الملفات--ما-الذي-يتم-تقييده]

عند تعطيل **تخزين الملفات** تُخفى جميع الواجهات التي تنشئ أو تفتح ملفات:

* تختفي صفحة **المستندات** من الشريط الجانبي.
* يُخفى زرّ مشبك الورق في الملاحظات السريرية — يمكن للفريق إنشاء وتعديل
  الملاحظات، لكن دون مرفقات.
* يُخفى زرّ **إرفاق ملفات** في مربع التاريخ الطبي.
* تبقى المرفقات الموجودة مرئية وقابلة للحذف في جميع الأماكن، فلا يؤدي
  التعطيل إلى فقدان السجل الذي التقطته من قبل.

يعيد التفعيل كل الواجهات كما كانت — لا يُفقد أي بيان.

### سقف التخزين [#سقف-التخزين]

يستطيع مسؤول المنصة ضبط حدّ أقصى لحجم التخزين لكل منظمة (مثلاً 10 جيجابايت
لعيادة صغيرة، أو 1 تيرابايت لمستشفى). سترى الاستهلاك الحالي على صفحة
المستندات بصيغة "3.2 جيجابايت من 10 جيجابايت مستخدمة". عند الاقتراب من
السقف يصبح زرّ الرفع معطّلاً مع شرح السبب — الحل إمّا أرشفة ملفات لم تعد
بحاجة إليها أو طلب رفع السقف من مسؤول المنصة.

## تفعيل وحدة [#تفعيل-وحدة]

1. افتح **الوحدات** من قسم **الإدارة** في الشريط الجانبي.
2. كل وحدة عبارة عن بطاقة مع مفتاح تشغيل. اضغط المفتاح للتفعيل.
3. اقرأ مربع التأكيد. يخبرك بما يلي:
   * الصلاحيات التي ستُمنح للأدوار الموجودة.
   * أي أثر على السعر (بعض الوحدات تضيف إلى فاتورتك الشهرية — انظر عمود
     **الإضافات** في خطتك).
   * البيانات التي ستُنشأ (فئات فارغة، وإعدادات افتراضية).
4. اضغط **تفعيل**.

خلال ثوانٍ تظهر صفحات الوحدة في الشريط الجانبي لكل موظف مسجّل دخوله.

## تعطيل وحدة [#تعطيل-وحدة]

يُخفي تعطيل الوحدة صفحاتها لكنه لا يحذف البيانات. تستطيع إعادة التفعيل
لاحقاً فيظهر كل شيء مجدّداً.

1. افتح **الوحدات** من قسم **الإدارة** في الشريط الجانبي.
2. اضغط مفتاح التشغيل على الوحدة المفعّلة.
3. يشرح مربع التأكيد ما سيحدث. اقرأه بعناية — بعض الوحدات مترابطة
   (مثلاً تعطيل **المواعيد** يُخفي أيضاً تحليلات المواعيد).
4. اضغط **تعطيل**.

## إعدادات الوحدة [#إعدادات-الوحدة]

لبعض الوحدات درج إعدادات خاص بها. اضغط أيقونة الترس على بطاقة الوحدة
لفتحه. أمثلة:

* **المواعيد** — مدة الحجز الافتراضية، وكم يمكن للعملاء الحجز مسبقاً،
  ونافذة الإلغاء.
* **الإشعارات** — أي حدث يُطلق أي رسالة.
* **الفوترة** — صيغة رقم الفاتورة، وإعدادات الضريبة الافتراضية.

***

**مقالات المساعدة داخل التطبيق:** `modules_admin_modules`،
`modules_org_modules`، `modules_json_editor`.


# إعداد المؤسسة (/ar/docs/clinic-admin/organization-setup)



# إعداد مؤسستك [#إعداد-مؤسستك]

من لوحة تحكم المسؤول، افتح **المؤسسة → الإعدادات**. تنقسم الشاشة إلى ثلاث
علامات تبويب: **عام**، و**العلامة التجارية**، و**التواصل**.

## عام [#عام]

* **الاسم.** الاسم العام لعيادتك كما يظهر على الفواتير وبوابة العملاء
  ورسائل البريد الإلكتروني. اجعله قصيراً لأنه يُستخدم في عناوين الصفحات.

* **المعرّف (slug).** معرّف قصير فريد يُستخدم في الروابط واستدعاءات الـ
  API. استخدم أحرف صغيرة وأرقاماً وشرطات فقط. يؤدّي تغيير المعرّف لاحقاً
  إلى كسر الإشارات المرجعية والتكاملات — اختر بعناية.

* **المنطقة الزمنية.** تُستخدم لجدولة المواعيد وفترات الفوترة. اضبطها
  قبل أن يحجز أي شخص موعداً.

* **اللغة الافتراضية.** إما الإنجليزية أو العربية. يمكن للموظفين تجاوزها
  على مستوى المستخدم؛ وتستخدم رسائل العملاء هذه اللغة الافتراضية ما لم
  يكن للعميل تفضيل خاص.

* **ساعات العمل.** صف لكل يوم من أيام الأسبوع. أوقف تشغيل اليوم
  لتعليمه مغلقاً، أو حدّد وقت الفتح والإغلاق. يجب أن يكون وقت الإغلاق
  بعد وقت الفتح في اليوم نفسه — الساعات الممتدة بعد منتصف الليل غير
  مدعومة، لذا سجّل اليوم الذي تفتح فيه العيادة.

اضغط **حفظ**. تُطبَّق التغييرات فوراً.

### عرض العملة [#عرض-العملة]

تتبع طريقة عرض المبالغ لغة الواجهة التي تشاهدها بها — نفس الرقم، لكن
مكتوباً بشكل مختلف. بالعربية، يظهر مبلغ بالجنيه المصري كـ
`1,234.50 ج.م.` مع الرمز بعد الرقم؛ وبالإنجليزية يظهر المبلغ نفسه كـ
`EGP 1,234.50`. تغيير لغتك يُغيّر طريقة العرض فقط — المبلغ نفسه والعملة
وأي شيء تكتبه في حقل السعر لا يتأثر.

## العلامة التجارية [#العلامة-التجارية]

* **الشعار.** ارفع ملف PNG أو SVG مربعاً 256 × 256 بكسل على الأقل. يظهر
  في الصفحات الموجّهة للعملاء ورسائل البريد الإلكتروني وفي أعلى يمين
  كل شاشة للموظفين.
* **اللون الأساسي.** يُستخدم للأزرار والتمييز في بوابة العملاء. اختر
  لوناً بتباين كافٍ مع الأبيض والأسود.
* **رأس البريد الإلكتروني.** شعار أوسع (حتى 1200 × 300 بكسل) يظهر أعلى
  الرسائل المعاملاتية. اختياري — يتخلّف إلى شعارك على خلفية محايدة.

## التواصل [#التواصل]

* **العنوان.** العنوان الفعلي الكامل. يظهر على الفواتير وفي قسم «عن
  عيادتك» في بوابة العملاء.
* **الهاتف.** رقم الهاتف العام لاستفسارات العملاء.
* **بريد الدعم.** الموقع الذي يصل إليه العملاء عند طرح الأسئلة. إذا
  كانت عيادتك تستخدم نظام تذاكر، وجّه الرد إليه.

## حذف المؤسسة أو إيقافها [#حذف-المؤسسة-أو-إيقافها]

لا يستطيع مسؤول العيادة حذف المؤسسة من هذه الواجهة — وهذا إجراء أمني.
إذا احتجت إلى إغلاق حساب عيادتك، تواصل مع
[دعم ميديسينك](/ar/docs/reference/contact-support).

الإيقاف المؤقت يجمّد الحساب دون حذف البيانات. يستطيع المدير الأعلى أو
دعم ميديسينك تنفيذ ذلك نيابة عنك.

***

**مقالات المساعدة داخل التطبيق:** `org_settings`،
`org_bootstrap_slug_setup`، `settings_org_slug`.


# عروض الأسعار (/ar/docs/clinic-admin/quotations)



# عروض الأسعار [#عروض-الأسعار]

صفحة **المؤسسة ← عروض الأسعار** هي المكان الذي يُجهّز فيه فريقك عرضًا
مُسعّرًا لعميل أو جهة دافعة، ثم يرسله كرابط آمن، ويحوّل العرض المقبول إلى
أمر بيع قابل للفوترة. ترتبط عروض الأسعار بوحدة **عروض الأسعار** — فعّلها من
**المؤسسة ← الإعدادات ← الوحدات** إن لم يظهر العنصر في القائمة.

## تصفّح قائمة عروض الأسعار [#تصفّح-قائمة-عروض-الأسعار]

تعمل صفحة القائمة تمامًا مثل صفحة **العملاء**، لذا سيبدو شريط الأدوات مألوفًا:

* **البحث** عن الرقم أو المستلِم أو العنوان من المربّع على اليسار؛ تتحدّث
  النتائج أثناء الكتابة.
* **طرق العرض** — بدّل بين **البطاقات** و**الجدول** و**الشبكة** من المُبدّل على
  اليمين. يدعم عرض الجدول إعادة ترتيب الأعمدة بالسحب وإظهارها/إخفاءها وفرزها،
  ويتضمّن عمودَي **العميل** و**أنشئ بواسطة** القابلين للنقر للانتقال إلى سجل
  العميل وإلى الموظّف الذي أنشأ العرض.
* **عوامل التصفية** — اضغط **عوامل التصفية** لفتح لوحة التحكم (مطويّة افتراضيًا).
  عامل تصفية **الحالة** متعدد الاختيار: حدّد أي مجموعة من الحالات (مسودة، مُرسل،
  مقبول، …) لتضييق القائمة، و**مسح الكل** لإعادة الضبط.
* **تحديث** يعيد جلب القائمة ويُظهر وقت آخر تحديث.

### تنفيذ إجراء على عدة عروض دفعة واحدة [#تنفيذ-إجراء-على-عدة-عروض-دفعة-واحدة]

حدّد مربّعات صف واحد أو أكثر فيظهر شريط إجراءات عائم (اسحبه إلى أي مكان من
مقبضه). من هناك يمكنك:

* **تبديل النطاق** بين **هذه الصفحة** و**كل الصفحات** — يحدّد "كل الصفحات" كل
  عرض يطابق عوامل التصفية الحالية حتى غير المحمَّل بعد، مع **تحديد الكل** لتأكيد
  العدد الكامل.
* **تحديث الحالة** — اختر إجراء دورة حياة (إرسال، قبول، رفض، …) لتطبيقه على كل
  عرض محدّد. تُتجاوز العروض التي لا يمكنها الانتقال من حالتها الحالية ويُبلَّغ
  عنها.
* **حذف** — يحذف العروض المحدّدة حذفًا ناعمًا. يمكن حذف المسودّات والعروض
  المغلقة فقط؛ تُتجاوز العروض قيد التنفيذ ويُبلَّغ عنها.

## إنشاء عرض سعر [#إنشاء-عرض-سعر]

اضغط **عرض سعر جديد** لفتح صفحة التحرير. تجمع كل ما يحتاجه العرض:

* **لغة التحرير** — بدّل بين **EN / AR** في الأعلى. كل حقل قابل للترجمة
  (العنوان ووصف كل بند) يُخزَّن لكل لغة على حدة، فتكتب العرض بالإنجليزية ثم
  تبدّل إلى العربية وتضيف الترجمة دون فقدان ما كتبته. حقول العربية تُعرض من
  اليمين إلى اليسار.
* **العنوان** — العنوان الذي يراه المستلِم.
* **العميل (العميل)** — ابحث واربط العميل المعني؛ يُنقل الربط إلى أمر البيع
  عند التحويل.
* **الطبيب المعالج** — اختياري، يُسجَّل للرجوع إليه.
* **اسم/بريد المستلِم** — اختياري، لعرضٍ موجّه لشخص ليس عميلًا مسجّلًا.
* **القالب** — اختر تخطيطًا (راجع [القوالب](#القوالب))؛ يكشف اختياره الحقول
  المخصّصة التي يعرّفها القالب، ولكلٍّ منها نصّه التوضيحي ووحدته؛ وتُعلَّم الحقول
  **المطلوبة** بـ`*` ويجب ملؤها قبل إنشاء العرض، وتُملأ القيم الافتراضية مسبقًا.
* **البنود** — راجع أدناه، مع عرض إجمالي جارٍ.
* **العملة** — الافتراضي USD؛ اختيار صنف من الكتالوج يضبطها تلقائيًا.
* **صالح حتى** — تاريخ انتهاء اختياري للعرض.

انتقل إلى تبويب **معاينة** في الأعلى لرؤية العرض بعد تطبيق القالب والبيانات
الحالية قبل إنشائه.

### بنود من الكتالوج [#بنود-من-الكتالوج]

يمكن كتابة كل بند يدويًا **أو** ملؤه من الكتالوج. استخدم خانة **بحث الكتالوج**
ثم افتح قائمة البند لاختيار **خدمة** أو **منتج** نشِط. يملأ الاختيار الوصف
والسعر ونسبة الضريبة، ويربط البند بذلك الصنف — وهو ما يسمح لاحقًا بتحويل
العرض إلى أمر بيع. اختر **بند مخصّص** لكتابة وصف وسعر حرّين. أضِف ما تشاء من
البنود بزر **إضافة بند**؛ تُحسب الإجماليات والضريبة وأي تقسيم بين العميل
والتأمين على الخادم.

## الإرسال والمشاركة [#الإرسال-والمشاركة]

* **إرسال** يُصدر العرض: يحصل على رقم دائم، وتُجمَّد نسخة غير قابلة للتعديل،
  ويُجهَّز ملف PDF.
* **مشاركة** يُنشئ رابطًا آمنًا (`/q/…`) وينسخه إلى الحافظة. الرابط محميّ
  برمز مُجزّأ، وقد يحمل كلمة مرور اختيارية، وله تاريخ انتهاء. يرى المستلِم
  عرضًا أنيقًا بهويتك دون أي بيانات داخلية، ويمكنه **القبول** أو **الرفض**.

## النسخ [#النسخ]

لكل عرض — في أي حالة — إجراء **نسخ**. ينسخ العنوان والمستلِم والقالب وقيم
الحقول والعملة وكل البنود إلى **مسودة** جديدة تبدأ دورة حياتها الخاصة (بلا
رقم وبلا روابط مشاركة). يُلحق بعنوان النسخة «(copy)».

## التحويل إلى أمر بيع [#التحويل-إلى-أمر-بيع]

بمجرّد أن يصبح العرض **مقبولًا** يظهر إجراء **تحويل**. التحويل:

1. يُنشئ مسودة **أمر بيع** من بنود العرض المرتبطة بالكتالوج.
2. يُسجّل الرابط على العرض وينقله إلى **محوَّل**.

اختر **الفرع** الذي يتبعه الأمر. تُنقل فقط البنود المرتبطة بخدمة أو منتج — إذ
يجب أن يشير بند أمر البيع إلى صنف من الكتالوج — لذا تُدرَج البنود المخصّصة
كـ«لن تُنقل». أعِد إضافتها من الكتالوج أولًا إن احتجتها. تأكيد أمر البيع
الناتج (في **المنتجات والخدمات ← أوامر البيع**) يفتح الفاتورة ويُرحّل بنودها.

> **المواعيد:** لا يحجز العرض زيارة تلقائيًا — فالجدولة تحتاج إجراءً وفترةً
> ومواردَ لا يحملها العرض. احجز الموعد من التقويم واربطه بالأمر عند الحاجة.

## القوالب [#القوالب]

افتح **عروض الأسعار ← القوالب** لإدارة التخطيطات. قوالب النظام للقراءة فقط؛
استخدم **تفريع** للحصول على نسخة قابلة للتعديل، أو **قالب جديد** لإنشاء قالبك.
يفتح الإنشاء أو التعديل **صفحة محرّر** مخصّصة تضمّ:

* **حقول النموذج** — المدخلات التي يملؤها المُعِدّ عند استخدام القالب. لكل حقل
  **مفتاح** و**نوع** (نص، رقم، عملة، تاريخ، أو **قائمة** بخيارات، أو **مكرِّر**)
  و**تسمية** ثنائية اللغة و**نصّ توضيحي** و**نصّ مساعدة** و**لاحقة** (وحدة مثل
  `%` أو `kg`) و**قيمة افتراضية** وعلامة **مطلوب**. يعرض نموذج العرض الجديد كل
  ذلك، وتمنع الحقولُ المطلوبة الإنشاءَ حتى تُملأ.
  * حقل **المكرِّر** قائمة صفوف يضيفها المُعِدّ (مثل حقل «الخدمات» القديم).
    عرّف **أعمدة** الصف (لكلٍّ مفتاح ونوع وتسمية؛ وأعمدة `القائمة` لها خياراتها)
    وتسمية زرّ الإضافة. على العرض ينقر المُعِدّ **إضافة صف** لإدخال ما يلزم من
    الصفوف، ويعرضها متن القالب كجدول.
  * **يمكن أن يحمل كل خيار سعرًا.** الحقل **المحسوب** للقراءة فقط على العرض،
    ويجمع تلقائيًا سعرَ كل خيار مُختار إضافةً إلى أعمدة الأرقام في المكرِّرات —
    وهو الإجمالي المحسوب آليًا من القالب القديم. أعطِ خيارات القوائم أسعارًا
    وأضِف حقلًا محسوبًا للحصول على إجمالي جارٍ. عيّن **العملة الأساس** للحقل
    المحسوب ووجّهه إلى القائمة التي تحمل **عملة الإجمالي**؛ عندئذٍ يُحوَّل
    الإجمالي حيًّا بأسعار صرف يومية (يحدّثها عملٌ خلفي من مزوّد أسعار ويخزّنها في
    قاعدة البيانات)، فيتغيّر السعر عند اختيار عملة إجمالي مختلفة.
  * **كل التسميات قابلة للترجمة.** استخدم مبدّل **EN / AR** أعلى مُنشئ الحقول
    لكتابة تسمية كل حقل ونصّه التوضيحي ونصّ المساعدة واللاحقة وتسميات الخيارات
    والأعمدة لكل لغة؛ ويعرضها نموذج العرض بلغة المُعِدّ المختارة.
* **المتن** — يُبنى بطريقتين عبر تبويبَي **المُنشئ** / **HTML**:
  * **المُنشئ** (سحب وإفلات): اسحب الكتل من اللوحة إلى منطقة التحرير — **ترويسة
    العرض**، **المستلِم**، **عنوان**، **نص**، **قيمة حقل**، **البنود**،
    **الإجماليات**، **فاصل**، **مسافة** — أو انقرها لإضافتها. اسحب مقبض الكتلة
    لإعادة الترتيب، واضبط إعداداتها المضمّنة (مثل مستوى العنوان أو الحقل
    المعروض). يُعاد توليد المستند أثناء عملك.
  * **HTML**: متن Handlebars المُولَّد، قابل للتعديل مباشرةً للتخطيطات المتقدّمة.
    المساعدات: `{{t … locale}}`، `{{money cents currency}}`، `{{date …}}`،
    `{{bps …}}`؛ وتُعرض قيم الحقول عبر `{{fieldValues.key}}`. ويُنقّى الناتج.
  * **معاينة**: المتن مُقدَّمًا ببيانات تجريبية — بما في ذلك إجمالي محسوب
    تجريبي — لتفحص التخطيط أثناء التحرير دون الحاجة إلى الحفظ.

يُحفظ تخطيط الكتل مع القالب، فيعيدك فتحه إلى المُنشئ. استخدم **معاينة** في
القائمة لعرض القالب ببيانات تجريبية قبل استخدامه على عرض حقيقي.


# Set up your clinic to take bookings (/ar/docs/clinic-admin/set-up-booking)



# Set up your clinic to take bookings [#set-up-your-clinic-to-take-bookings]

Before you can book an appointment, your clinic needs four core things: **a resource to book** (a doctor, nurse, room, or equipment), **working hours** for that resource, **a procedure template** (a description of what you're booking for), and **a client** to book the appointment for.

This guide walks through each of these in order. As you set them up, the "Set up booking" panel in the booking wizard will check them off and tell you what's still missing.

## 1. Add a resource to book [#1-add-a-resource-to-book]

Open **Core → Resources** and create your first resource:

1. If you haven't already, pick a **branch** from the sidebar — every resource belongs to one branch.

2. Click **Add resource** and choose a kind:
   * **Doctor** — a physician
   * **Staff** — a nurse, technician, anesthetist, interpreter, or chaperone
   * **Room** — a consultation room or operating theatre
   * **Equipment** — a medical device or other schedulable equipment

3. Fill in the form. Every resource needs a **name** (e.g., "Dr. Adel" or "Surgery Room 1") and a **concurrency limit** (how many appointments it can hold at once — usually 1).

4. If you're adding a Doctor or Staff member, you must link them to a **team member** in your organization. This connects the bookable resource to the real person who will see the appointment.

Once you've created your first resource, the "Set up booking" panel will move to the next step.

## 2. Set working hours [#2-set-working-hours]

Now that your resource exists, you need to tell the system **when it's available for bookings**.

Go back to **Core → Resources** and find the resource you just created. Click on it to open its detail view, then use the **Schedule** section to add recurring working hours:

1. Click **Add working hours**.
2. Pick the **days of the week** the resource works (e.g., Monday–Friday).
3. Set the **start and end times** for each day (e.g., 9am–5pm).
4. If the resource takes a break (e.g., lunch from 1pm–2pm), add a separate time slot for the afternoon (e.g., 2pm–5pm) and add a second "Break" or "Lunch" schedule line.

The booking engine uses these schedules to find available slots. A resource with no working hours is never offered as an option, even if everything else is set up.

<Callout type="info">
  You can have different schedules for different date ranges (e.g., summer hours from June to August), and you can add time-off entries to block specific dates when the resource is unavailable.
</Callout>

Once you've added working hours, the panel moves to the next step.

## 3. Add a procedure [#3-add-a-procedure]

Now you need to describe **what you're booking for**.

Open **Core → Procedure templates** and create your first procedure template:

1. Click **Add procedure**.
2. Give it a **name** (e.g., "General Consultation", "Surgery", "Checkup").
3. Set the **duration** the procedure takes (e.g., 30 minutes, 1 hour).
4. Click **Create**.

Once you've created a procedure template, the panel moves to the next step.

## 4. Say what the procedure needs [#4-say-what-the-procedure-needs]

Each procedure template needs to declare **which resources it requires**. For example, a "General Consultation" might need a Doctor and a Room, while a "Dental Cleaning" might need a Dentist (Doctor specializing in dentistry) and a Dental Chair (Equipment).

Open your procedure template and add **requirements**:

1. Click **Add requirement**.
2. Choose the resource **kind** (Doctor, Staff, Room, or Equipment).
3. If the kind is Doctor or Staff, you can optionally add **attributes** to narrow which ones match — for example, "specialty: Cardiology" to match only cardiologists, or "languages: Spanish" for staff who speak Spanish.
4. Set the **primary role** checkbox if this is the main resource for the procedure (e.g., the Doctor is usually primary for a consultation).
5. Click **Add**.

Repeat for each role the procedure needs. If a procedure has no requirements, the booking engine has no way to match a booking to resources, so it cannot offer any slots.

Once your procedure has at least one requirement, the panel checks the next step.

## 5. Match the procedure to your resources [#5-match-the-procedure-to-your-resources]

The booking engine now checks: &#x2A;*"Can we actually fill all the roles this procedure asks for?"**

For example, if your procedure requires a "Cardiologist" and you have a doctor named "Dr. Ahmed" who is a General Practitioner, there's a mismatch — the procedure will never be bookable because no available resource matches the requirement.

To fix this:

* **Option A:** Edit the **procedure** and relax the requirement. Remove the "specialty: Cardiology" filter if you don't actually need a specialist.
* **Option B:** Add a **resource** that matches the requirement. Hire or link a cardiologist doctor, then edit their profile to add the "Cardiology" specialty.

The "Set up booking" panel will tell you exactly what role is missing and which procedure has the problem, so you can make the right fix.

Once all your procedure requirements can be filled by your resources, you're almost ready.

## 6. Add a client [#6-add-a-client]

The last required step is to add at least one **client** (person) to book an appointment for:

1. Go to **Clients**.
2. Click **Add client**.
3. Fill in their **name, phone, email**, and any other fields your clinic requires.
4. Click **Create**.

Once you've added a client, your clinic is ready to book.

## Optional: Set up booking shifts [#optional-set-up-booking-shifts]

Booking shifts are **only needed if you use walk-in token queues** — that is, if clients can show up and be assigned a time slot on the spot, rather than booking a fixed appointment in advance.

If you do use walk-in queues:

1. Open **Appointments → Booking Shifts**.
2. Click **Add shift** and set the **start and end time** for the shift.
3. Click **Create**.

Appointments booked into shifts are different from appointments booked into fixed time slots — they're a separate booking mode. If your clinic only takes fixed appointments, you can skip this step entirely and your clinic will still be fully ready to book.

<Callout type="info">
  A shift that has already ended is not counted as active. The booking engine only looks at shifts that end at the current time or later.
</Callout>

***

Once all the required steps are complete, the "Set up booking" panel disappears — the booking wizard itself is always usable, even before setup is finished, so you can keep working through it top-down at any point. You're ready to book your first appointment!


# SMS providers and fallback (/ar/docs/clinic-admin/sms-providers)



# SMS providers and fallback [#sms-providers-and-fallback]

MediSync sends SMS through **providers** (carriers such as Twilio, Vonage, or SMS Misr).
You can use the ones MediSync provides, connect your own account, or mix both — and you
can tell MediSync which providers to try, in which order, for each country you message.

<Callout>
  SMS is a paid module. Turn it on in **Settings → Modules** first. You are billed per
  message *segment*, not per message — a long message is split into several segments by the
  carrier and costs more.
</Callout>

## Do I need to do anything? [#do-i-need-to-do-anything]

No. If you leave this alone, MediSync sends your appointment reminders through its own
providers and bills you per segment. Everything below is optional.

You would set up your own provider if you want to:

* **Use your own carrier contract** — you may have negotiated cheaper rates.
* **Send from your clinic's name** instead of a shared number (a "sender ID").
* **Use a local carrier**, which is usually cheaper and more reliable for numbers in your
  own country.

## Adding your own provider [#adding-your-own-provider]

Go to **Settings → SMS → Providers** and choose **Add provider**.

Pick your provider from the list and fill in the credentials it asks for. The form changes
per provider — Twilio wants an Account SID and Auth Token, Vonage an API key and secret,
and so on. You will find these in your provider's own dashboard.

Then press **Test connection**. This checks your credentials with the provider without
sending anything. If it fails, the error from the provider is shown so you can see exactly
what is wrong.

Finally, **Send test message** sends a real SMS to a number you choose, so you can confirm
it arrives and looks right. Test messages are **not billed** to your usage allowance.

<Callout type="warn">
  Your credentials are encrypted and are **never shown again** after you save them — not to
  you, not to MediSync staff. You will only see the last four characters, like `••••9876`.
  If you lose them, get new ones from your provider and paste them in again.

  Editing a provider without retyping the secret is safe: leaving the field blank keeps the
  saved value.
</Callout>

## Fallback: what happens when a provider fails [#fallback-what-happens-when-a-provider-fails]

A **chain** is the list of providers MediSync tries for one country, in order.

If the first provider fails — it is down, it rejects the message, or it simply does not
answer — MediSync automatically tries the next one. Your patient still gets their reminder.

Set this up in **Settings → SMS → Routing**:

1. Choose a country (or **Any country**, which is used when a country has no chain of its
   own).
2. Add the providers you want, and use the ▲ ▼ arrows to put them in the order you want
   them tried.
3. Optionally set a **sender ID** per provider for that country — many countries require a
   sender name to be registered with the carrier in advance.

A typical Egyptian clinic sets Egypt to *SMS Misr, then Twilio*: the local carrier is
cheaper, and Twilio is there so nothing is ever lost if SMS Misr has a bad day.

### When your providers all fail [#when-your-providers-all-fail]

By default, if every provider in your chain fails, MediSync falls back to **its own**
providers so the message still gets through. You are billed for it as normal.

If you would rather a message simply fail than go out through a carrier you did not choose,
turn off **Fall back to MediSync providers** in **Settings → SMS**.

### When a provider is failing repeatedly [#when-a-provider-is-failing-repeatedly]

If a provider keeps failing, MediSync **stops trying it for a while** instead of making
every message wait for it to time out. It is retried automatically once it has had time to
recover. You will see it marked as *Paused* in the providers list, with the time it will be
tried again.

Some failures pause a provider immediately, because retrying cannot help: a **wrong API key**
will not start working, and an **empty balance** will not refill itself. Both show a clear
reason in the list.

## What is *not* retried [#what-is-not-retried]

Some failures are the **number's** fault, not the provider's, so MediSync does not try
another carrier — it would fail in exactly the same way and cost you money:

* The number is **not a valid mobile number**.
* The person has **replied STOP** and opted out. MediSync will not message them through
  another carrier; doing so would breach the rules you both agreed to.

These appear in the log as failed, with the reason.

## The message log [#the-message-log]

**Settings → SMS → Log** shows every message, newest first: who it went to, whether it was
delivered, which provider carried it, and what it cost.

Open a message to see its full history — including any providers that were tried and
failed:

> Twilio — rejected (500 server error)
> Vonage — accepted → **delivered**

This is the first place to look when someone says a patient did not get their reminder.

### "Delivered" vs "Sent" [#delivered-vs-sent]

* **Sent** — the provider accepted the message.
* **Delivered** — the carrier confirmed it reached the phone.

Not every provider reports delivery back to us. Messages sent through **AWS SNS** stay at
*Sent* forever — SNS does not tell us what happened afterwards. That is normal and does not
mean the message failed.

If a carrier tells us a message it accepted was **not** delivered, MediSync automatically
tries the next provider in your chain.

### Message text is removed after 90 days [#message-text-is-removed-after-90-days]

The **text** of each message is deleted after 90 days and shown as *redacted*, because it
usually contains patient details. Everything else — when it was sent, whether it arrived,
which provider, and what it cost — is kept, so your records and invoices stay complete.

## Spend [#spend]

**Settings → SMS → Spend** shows the last 30 days: how many messages were sent and
delivered, how many segments they used, and what they cost.

The cost shown here is what the **carriers** charged, which can be slightly more than what
you are billed — some providers charge for a message even when they reject it. Your invoice
only ever counts messages that were actually sent.

## Running out of allowance [#running-out-of-allowance]

Your plan includes a number of message segments per month. By default, if you go over,
**messages keep sending** and the extra is added to your invoice — we would rather your
patients get their reminders than have them silently stop.

If you would rather sending **stop** when you hit your limit, turn on **Enforce hard cap**
in **Settings → SMS**.


# الموظفون والأدوار (/ar/docs/clinic-admin/staff-roles)



# الموظفون والأدوار [#الموظفون-والأدوار]

صلاحيات ميديسينك مبنيّة على الأدوار. تدعو شخصاً بالبريد الإلكتروني،
وتختار دوره، ويمنحه الدور مجموعة محدّدة من الصلاحيات. يستطيع المسؤولون
أيضاً تعديل صلاحيات فردية عندما لا تناسب الإعدادات الافتراضية.

## الأدوار الافتراضية [#الأدوار-الافتراضية]

| الدور            | المستخدم النموذجي            | ما يستطيع فعله                                        |
| ---------------- | ---------------------------- | ----------------------------------------------------- |
| **مسؤول**        | مالك العيادة / مدير الممارسة | كل ما في هذه الصفحة، والفوترة، والوحدات               |
| **موظف استقبال** | المكتب الأمامي               | حجز المواعيد، وإضافة/تعديل العملاء، وتسجيل الوصول     |
| **ممارس صحي**    | طبيب، ممرّض، معالج           | رؤية جدوله، وكتابة الملاحظات، والاطّلاع على مرضاه     |
| **محاسب**        | الشؤون المالية               | رؤية الفواتير، وتسجيل المدفوعات؛ بدون البيانات الطبية |
| **قراءة فقط**    | مدقّق، أو موظف مرافق         | رؤية كل ما يُسند إليه؛ بدون تعديل                     |

## دعوة زميل [#دعوة-زميل]

1. افتح **المؤسسة → الموظفون**.
2. اضغط **دعوة زميل**.
3. أدخل بريده الإلكتروني، واختر الدور، وأضف رسالة اختيارياً.
4. اضغط **إرسال الدعوة**. يرسل ميديسينك بريداً يحتوي رابطاً صالحاً
   لسبعة أيام.

يمرّ الشخص بمسار [قبول الدعوة](/ar/docs/getting-started/accept-invite)
عند الضغط على الرابط.

## إعادة إرسال الدعوة أو إلغاؤها [#إعادة-إرسال-الدعوة-أو-إلغاؤها]

تظهر الدعوات المعلّقة في **المؤسسة → الموظفون → المعلّقة**.

* **إعادة إرسال** — يُرسل رسالة جديدة مع رابط جديد (يتوقّف القديم عن
  العمل).
* **إلغاء** — يُبطل الدعوة، فلا يستطيع الشخص قبولها بعد ذلك.

## تغيير الدور [#تغيير-الدور]

1. افتح **المؤسسة → الموظفون → النشيطون**.
2. اضغط على صف الزميل.
3. في الدرج الذي يفتح، غيّر **الدور**.
4. احفظ.

تُطبَّق التغييرات فوراً. قد يحتاج الشخص إلى تحديث المتصفح لرؤية الصفحات
الجديدة أو فقدان الوصول إلى القديمة.

## إزالة زميل [#إزالة-زميل]

1. افتح **المؤسسة → الموظفون → النشيطون**.
2. اضغط الصف → **إزالة من المؤسسة**.
3. أكّد. يُسجَّل خروج الشخص من كل الأماكن؛ وتبقى ملاحظاته وسجلاته
   منسوبة لاسمه.

## صلاحيات أبعد من الأدوار [#صلاحيات-أبعد-من-الأدوار]

لبعض الميزات مفاتيح فردية تتجاوز الإعداد الافتراضي للدور. مثلاً، يستطيع
موظف الاستقبال الحصول على **التحليلات** دون أن يصبح مسؤولاً. افتح درج
الزميل واسحب لأسفل إلى **الصلاحيات** لترى الخيارات المتاحة.

### الإضافة والتعديل والحذف مفاتيح منفصلة [#الإضافة-والتعديل-والحذف-مفاتيح-منفصلة]

تقسّم عدة أقسام صلاحيتها إلى إجراءات منفصلة بدل مفتاح واحد شامل، فتمنح كل
شخص القدر الذي يحتاجه بالضبط:

| القسم                                               | المفاتيح المنفصلة         |
| --------------------------------------------------- | ------------------------- |
| **الموارد القابلة للحجز** (الأطباء والغرف والأجهزة) | إضافة · تعديل · إيقاف     |
| **قوالب الإجراءات**                                 | إنشاء · تعديل · حذف       |
| **الفروع**                                          | إنشاء · تعديل · أرشفة     |
| **قوالب الملاحظات**                                 | عرض · إنشاء · تعديل · حذف |
| **ورديات الحجز**                                    | فتح · تعديل · إغلاق       |

استخدام شائع: امنح موظف استقبال أقدم صلاحيتي **الإضافة** و**التعديل** على
الموارد القابلة للحجز دون **الإيقاف**، ليبقي كتالوج الحجز محدَّثاً دون أن
يستطيع سحب طبيب من الجدول.

يحتفظ كل قسم أيضاً بمفتاح **تحكّم كامل** واحد. منحه يعادل تفعيل كل الإجراءات
في القسم، ويبقى مفعّلاً على الأدوار التي كانت تملكه — ولا تحتاج المفاتيح
الفردية إلا حين تريد حجب شيء منها.

***

**مقالات المساعدة داخل التطبيق:** لا توجد مقالة مكرّسة لإدارة الموظفين
بعد.


# Get alerted before stock expires (/ar/docs/clinic-admin/stock-expiry-alerts)



# Get alerted before stock expires [#get-alerted-before-stock-expires]

If you track batches or lots for your clinic's stock (vaccines, reagents, medications — anything
with an expiry date), you can set up an automation rule that alerts someone automatically as a
batch approaches its expiry date, instead of relying on staff to notice it on a shelf check.

> This needs both the **Products & Services** module (for stock tracking) and the **Automations**
> module active. Enable them under **Organization → Settings → Modules** if you don't see
> **Automations** in the sidebar — see [Modules](/docs/clinic-admin/modules).

## How it works [#how-it-works]

Every night, MediSync checks every batch of stock across your branches for its expiry date. Any
automation rule you've built for &#x2A;*"Material expiring"** re-checks its condition against that
batch and fires if it matches — so the alert always reflects the batch's up-to-date days-until-expiry,
not a value that was true when you first received the stock.

## Create the rule [#create-the-rule]

1. Go to **Automations** in the sidebar and click **New rule**.
2. Under **Trigger**, choose **Material expiring**.
3. Add a condition: **Days until expiry** — **less than or equal** — and the number of days'
   warning you want (e.g. `30` for a month's notice). This is the "how soon is soon enough to tell
   me" setting — without a condition here, you'd hear about every tracked batch expiring within a
   year, which is rarely what you want.
4. Add an action for what should happen when the condition matches — most clinics start with
   **Notify the owner**, which puts an alert in the owner's in-app notifications. You can also add
   **Send email**, **Send SMS**, or **Send WhatsApp message** (each needs its own module active) to
   reach someone faster — see [WhatsApp messages from automation
   rules](/docs/clinic-admin/automation-messaging-providers) if you want WhatsApp alerts to come
   from your own number.
5. Name the rule (e.g. "Expiring stock — 30 day warning") and save it. New rules save as **enabled**
   — toggle a rule off from the rules list any time without deleting it.

You can build more than one rule if different warning windows should go to different people — for
example, a 60-day heads-up to the person who reorders stock, and a 7-day urgent alert to the
clinic owner.

## What you'll see [#what-youll-see]

* Each alert names the specific product, lot number, and branch it's about, along with how many
  days remain until expiry.
* A batch that's already inside your warning window when you first create the rule is picked up on
  the very next nightly check — you don't need to wait for stock levels to change.
* You won't get the same alert twice in one day, even if a batch matches more than one of your
  rules' checks that night — but a batch that still matches the next day will alert again, so an
  expiring batch keeps surfacing until it's used up, discarded, or its stock record is updated.
* Check **Automations → Runs** to see every time a rule has fired, whether the notification went
  out successfully, and to re-run one that failed.

## Recording batches with expiry dates [#recording-batches-with-expiry-dates]

Expiry alerts only work for stock you've recorded with a lot number and expiry date when receiving
it — plain stock adjustments with no expiry date won't be picked up. See your **Products &
Services** stock-receiving workflow for how to attach lot/expiry details when stock comes in.


# المورّدون (/ar/docs/clinic-admin/suppliers)



# المورّدون [#المورّدون]

صفحة **المؤسسة ← المنتجات والخدمات ← المورّدون** هي دليل موردي عيادتك: الشركات التي تُصدر لها أوامر شراء. وهي جدول بيانات كامل بنفس أدوات قائمة العملاء.

> تظهر الصفحة فقط عندما تكون وحدة **المنتجات والخدمات** مفعّلة ويكون لدورك صلاحية عرض المورّدين.

## العثور على المورّدين [#العثور-على-المورّدين]

* **البحث** — اكتب في مربع البحث لمطابقة اسم المورّد أو الشخص المسؤول أو البريد الإلكتروني.
* **عوامل التصفية** — افتح **عوامل التصفية** للتضييق حسب الحالة (نشط / غير نشط)، وما إذا كان لدى المورّد بريد إلكتروني أو هاتف مسجّل، ونطاق تاريخ الإنشاء. يعرض كل عامل عددًا مباشرًا.
* **الترتيب** — استخدم قائمة **الترتيب** (أو انقر على رأس العمود) للترتيب حسب الاسم أو جهة الاتصال أو البريد أو الحالة أو تاريخ الإنشاء/التحديث. انقر مرة أخرى لعكس الاتجاه.

## تخصيص الجدول [#تخصيص-الجدول]

* **الأعمدة** — يُظهر زر **الأعمدة** أو يُخفي أي عمود. الأعمدة الإضافية (العنوان، الملاحظات، تاريخ الإنشاء، آخر تحديث) مخفية افتراضيًا.
* **إعادة الترتيب** — اسحب رأس العمود لتحريكه.
* **التثبيت** — ثبّت عمودًا يسارًا أو يمينًا من قائمة رأسه ليبقى ظاهرًا أثناء التمرير.

يُحفظ تخطيط الأعمدة على هذا الجهاز.

## الإضافة والتعديل [#الإضافة-والتعديل]

* **إضافة مورّد** — يفتح الزر في الأعلى نموذجًا للاسم والشخص المسؤول والبريد والهاتف والعنوان والملاحظات وحالة التفعيل.
* **تعديل / إلغاء التفعيل / حذف*&#x2A; — افتح قائمة &#x2A;*⋯** للصف (أو انقر بزر الفأرة الأيمن على الصف). انقر على صف لفتح لوحة تفاصيله التي تحتوي أيضًا على اختصار **تعديل**.
* **الحذف** — لا يمكن حذف مورّد مرتبط بأمر شراء؛ ألغِ تفعيله بدلاً من ذلك. يُعلمك التطبيق عند حدوث ذلك.

## الإجراءات الجماعية [#الإجراءات-الجماعية]

حدّد المربعات لاختيار المورّدين، ثم استخدم الشريط العائم لـ **تفعيلهم** أو **إلغاء تفعيلهم** أو **حذفهم** معًا. يتم تخطّي المورّدين المرتبطين بأوامر شراء أثناء الحذف الجماعي ويُبلَّغ عنهم.

## التصدير [#التصدير]

تُنزّل قائمة **تصدير** في الأعلى القائمة الحالية المُصفّاة بصيغة **CSV** أو **XLSX** — مفيدة للمشاركة مع قسم المالية أو لعمل نسخة احتياطية من قائمة الموردين.


# Website builder (/ar/docs/clinic-admin/website-builder)



# Website builder [#website-builder]

**Organization → Website** is your clinic's own public site, built with a
drag-and-drop editor and published to a URL your clients can share. There
is no separate CMS to log into and no plugin to install — everything lives
inside MediSync alongside your appointments, clients, and billing.

## What you can build [#what-you-can-build]

The editor groups blocks into three categories on the left side of the
canvas:

* **Layout** — Hero, Image, Spacer. Use these to set the structure and
  visual rhythm of a page.
* **Clinic** — Services grid, Book appointment CTA, Staff list, Contact
  form. These are wired into MediSync data — for example, the **Book
  appointment** block uses your clinic's booking URL automatically.
* **Content** — Rich text. Paste in body copy, headings, and lists.

Each block has a settings panel on the right side of the canvas. Click
the block to edit its content; drag the dotted handle to reorder it.

## Creating your first page [#creating-your-first-page]

1. Open **Organization → Website**. If the Website module isn't on your
   plan, you'll see a "no permission" panel — talk to your sales rep.
2. Fill in **Page title** and **Slug** at the top of the page list. The
   slug becomes part of your URL (`/p/your-slug`) and can only contain
   lowercase letters, numbers, and hyphens.
3. Click **Create page**. The page opens in the editor.
4. Drag blocks from the left rail onto the canvas. Save is automatic
   (about once a second after you stop typing).
5. When you're happy, click **Publish** in the editor toolbar. The
   page is live within seconds.

You can take a published page off the public renderer at any time with
the **Unpublish** button in the editor's top-right.

## Page list [#page-list]

The Website page shows every page you own (drafts, published, and
archived). Click a page title to open the editor. The **Archive** button
soft-deletes the page — it disappears from the public site and frees a
slot back to your plan quota. Archiving is reversible by support.

## How visitors find your site [#how-visitors-find-your-site]

There are three ways to expose a published page; they layer on top of
each other:

1. **Custom domain.** Configure a custom domain in
   **Organization → Settings → Branding**. Once your DNS CNAME is
   pointing at MediSync and the cert provisions, your pages live at
   `https://yourclinic.com/p/<slug>`.
2. **Subdomain.** Claim a vanity subdomain in **Website → Settings**.
   Your site lives at `https://yourclinic.medisync.app/p/<slug>`.
3. **Path-based.** Every published page is always reachable at
   `https://medisync.app/o/<your-org-slug>/p/<slug>`, even before you
   set up DNS. This is the safe default — share this URL while you're
   still verifying a custom domain.

The page **slug** is the same across all three URLs. The org's
**homepage** (the page where **Homepage** is toggled on in
**Page settings**) is also served at the bare domain — for example
`https://yourclinic.com/`.

## Website settings [#website-settings]

**Website → Settings** controls the site-wide configuration:

* **Subdomain** — claim a `yourclinic.medisync.app` address. Letters,
  digits, hyphens only. Some names (`www`, `api`, `admin`, etc.) are
  reserved.
* **Favicon URL** — the small icon shown in browser tabs. Paste a
  direct URL to a 32×32 PNG or ICO.
* **Website is live** — the master switch. When this is OFF, every
  page on your site returns "not found" regardless of individual
  page status. Use this if you want to take the whole site down for
  maintenance.
* **Custom code (head + body)** — paste tracking pixels, analytics
  snippets, and other vendor-provided code here. See
  [Custom code](#custom-code) below for what's allowed.

Changes save when you click **Save settings**. They take effect within
about a minute on already-cached pages.

## Custom code [#custom-code]

The **Head code** and **Body code** sections let you paste vendor
snippets that should run on every page of your site — Google Tag
Manager, Meta Pixel, GA4, custom verification meta tags, and so on.

What's allowed:

* `<script>` tags (including async / defer / data-\* attributes — GTM
  and Meta Pixel both rely on these)
* `<noscript>` fallback wrappers
* `<meta>` tags (e.g. site verification, theme-color)
* `<link>` tags (preconnect, preload, custom canonical)
* `<style>` tags
* `<img>` tags (image pixels)

What's blocked at save time:

* `<iframe>`, `<object>`, `<embed>`, `<base>` — these are common XSS
  vectors and your save will fail with a clear error.
* Inline event handlers (`onclick="..."` etc.) — silently stripped
  by the sanitiser.
* `javascript:` URLs — stripped.
* `<form>`, `<input>`, `<button>` — silently stripped. To collect form
  data, use the **Contact form** block instead.

Each snippet is capped at **16 KB**. If yours is bigger, host it as a
file at your vendor and load it via `<script src="...">`.

A common pattern: paste your GTM container into **Head code**, then
use the **Body code** section for the `<noscript>` fallback the GTM
install snippet includes.

## Analytics [#analytics]

**Website → Analytics** shows traffic for your published pages:

* **Total views / Unique visitors / Avg per day** — KPI tiles for
  the selected range (last 7, 30, or 90 days).
* **Top pages** — the 10 most-visited pages in the range.
* **Recent form submissions** — the latest contact-form fills, newest
  first.

Visitor identity is **not** persisted. We hash the IP + browser
together with a salt that rotates every UTC midnight, so we can
count unique visitors per day without ever storing reversible
information about who visited. Raw events are retained for **90
days**; the daily rollups (the numbers shown in this dashboard)
are kept indefinitely.

## Plan limits [#plan-limits]

Your plan caps the number of **published pages** you can have at
once. Archiving a page frees a slot back immediately — there's no
hard delete, so you can always restore an archived page through
support if you change your mind.

When you hit the cap, the **Create page** button shows an error
message ("plan limit reached"). Either archive a page you no longer
need, or upgrade your plan.

## Tips [#tips]

* The **Book appointment CTA** block is greyed out in the editor if
  your plan doesn't include the Appointments module. Pages created
  with this block keep working if you later downgrade — they just
  become uneditable.
* Set one page as your **homepage** in Page settings. That page is
  served at the bare URL (e.g. `https://yourclinic.com/` rather than
  `https://yourclinic.com/p/home`).
* The **Contact form** block writes every submission to your
  analytics dashboard. There's no email forwarding yet — check the
  dashboard daily, or build a notification yourself with a webhook
  in the head code.


# قبول دعوة (/ar/docs/getting-started/accept-invite)



# قبول دعوة [#قبول-دعوة]

يدعوك مسؤول العيادة إلى ميديسينك عبر البريد الإلكتروني. يشرح هذا الدليل
تدفّق قبول الدعوة من البداية إلى النهاية.

## شكل رسالة الدعوة [#شكل-رسالة-الدعوة]

ستصلك رسالة من **MediSync** (`no-reply@medisync-solutions.com&#x60;) بعنوان
&#x2A;*«تمّت دعوتك إلى \<اسم عيادتك>»**. تحتوي الرسالة على:

* اسم العيادة والدور الذي ستشغله.
* زر أو رابط **قبول الدعوة**.
* ملاحظة عن موعد انتهاء صلاحية الرابط.

> **رابط الدعوة له صلاحية محدودة.** تبقى معظم الدعوات صالحة لمدة سبعة
> أيام. إذا انتهت صلاحية دعوتك، اطلب من المسؤول الذي دعاك أن يرسل لك دعوة
> جديدة من إعدادات **الموظفين** في عيادته.

## الخطوة 1 — اضغط رابط الدعوة [#الخطوة-1--اضغط-رابط-الدعوة]

بالضغط على الزر يفتح ميديسينك في المتصفح على رابط مشابه لـ
`https://staff.medisync-solutions.com/accept-invite?token=…`. تعرض الصفحة
اسم العيادة والدور الذي أنت على وشك قبوله.

## الخطوة 2 — أنشئ كلمة المرور [#الخطوة-2--أنشئ-كلمة-المرور]

إذا لم يكن بريدك الإلكتروني مسجّلاً مسبقاً، سيطلب منك ميديسينك تعيين كلمة
مرور:

1. اختر كلمة مرور لا تقل عن 12 حرفاً.
2. ادمج بين حروف وأرقام ورمز واحد على الأقل لزيادة القوة.
3. أكّد كلمة المرور.

إذا كان لديك حساب ميديسينك بنفس البريد الإلكتروني مسبقاً، تُربط الدعوة
تلقائياً بحسابك الحالي — تجاوز إلى الخطوة الثالثة.

## الخطوة 3 — تأكيد البريد الإلكتروني [#الخطوة-3--تأكيد-البريد-الإلكتروني]

يرسل ميديسينك رمز تأكيد لمرة واحدة إلى بريدك الإلكتروني للتأكد من ملكيته.
أدخل الرمز المكوّن من 6 أرقام في الصفحة التي تفتح. ينتهي الرمز بعد 10
دقائق، ويمكنك طلب رمز جديد إن لزم الأمر.

## الخطوة 4 — (اختيارياً) تفعيل المصادقة الثنائية [#الخطوة-4--اختيارياً-تفعيل-المصادقة-الثنائية]

قد يشترط المسؤول تفعيل المصادقة الثنائية (2FA). إذا جعلها إلزامية، ستُطلب
منك إعداداتها قبل الدخول إلى ميديسينك. راجع
[الملف الشخصي والأمان](/ar/docs/getting-started/profile-security) للشرح
الكامل.

## الخطوة 5 — أنت الآن داخل النظام [#الخطوة-5--أنت-الآن-داخل-النظام]

ستهبط مباشرة على لوحة تحكم عيادتك. احفظ الرابط بين إشاراتك المرجعية لكي
تعود إليه مباشرة في المرات التالية.

## حل المشكلات [#حل-المشكلات]

* **«الدعوة غير موجودة أو منتهية الصلاحية».** اطلب من المسؤول إعادة إرسال
  الدعوة.
* **«هذا البريد مرتبط بعيادة أخرى».** يرتبط كل حساب ميديسينك بعيادة واحدة
  في الوقت ذاته. إذا كنت تنتقل بين العيادات، سجّل الخروج من العيادة
  السابقة أولاً، أو راسل الدعم لنقل حسابك.
* **لم تصل رسالة الدعوة.** تحقق من مجلد الرسائل المزعجة، ثم اطلب من
  المسؤول إعادة الإرسال. إذا كان خادم بريدك يحجب رسائل المسؤول، يمكنه
  إضافة `no-reply@medisync-solutions.com` إلى قائمة المصادر الموثوقة.

راجع [حل المشكلات](/ar/docs/reference/troubleshooting) لمزيد من الإشارات
والحلول.


# Customize your dashboard (/ar/docs/getting-started/customize-dashboard)



# Customize your dashboard [#customize-your-dashboard]

Your **Overview** (the first page under Organization) is a grid of widgets you
arrange yourself — today's appointments, a KPI tile, the changelog, and more.
You can build several layouts and switch between them whenever you like.

## View vs. edit mode [#view-vs-edit-mode]

The Overview opens in **view mode** — everything is read-only. Click **Edit**
(top right) to start arranging. In edit mode you'll see a dotted canvas and
each widget grows a small toolbar.

When you're done, click **Save** to keep your changes or **Done** to leave edit
mode.

## Add a widget [#add-a-widget]

1. In edit mode, click **Add widget**.
2. Pick a category on the left (or **All widgets**) to narrow the list.
3. Click a widget card. It drops onto the grid.

## Arrange and resize [#arrange-and-resize]

In edit mode, each widget has a few controls:

* **Drag** — grab the handle (the dotted grip on the left of the widget's
  title bar) to move it.
* **Resize** — drag the bottom-right corner for a custom size, or use the
  **resize** menu (the frame icon) for quick **Small / Medium / Large** sizes.
* **Settings** — the gear icon (on widgets that support it) opens options like
  how many rows to show.
* **Remove*&#x2A; — the &#x2A;*×** takes the widget off your dashboard.

## Save and name a layout [#save-and-name-a-layout]

Click **Save**:

* If you're editing an existing layout, it updates in place.
* If you started fresh (blank or from a template), you'll be asked to **name**
  it — e.g. *Morning view* or *Billing day*. Names must be unique to you.

## Switch between layouts [#switch-between-layouts]

Once you've saved a layout, a **view switcher** appears next to the page title.
Open it to:

* jump between your saved layouts (the current one is ticked),
* **start from a template** your clinic has published,
* create a **new blank layout**, or
* **rename** / **delete** the layout you're viewing.

Switching while you have unsaved edits asks you to confirm first, so you never
lose work by accident. (You can't delete your only layout.)

## Where templates come from [#where-templates-come-from]

A fresh dashboard may start from a **template** your clinic admin set up — a
ready-made starting point, sometimes specific to your role. You can customize
it freely; saving makes your own private copy. Admins manage templates on the
[Dashboard templates](/en/docs/clinic-admin/dashboard-templates) page.

## Visual insights [#visual-insights]

Overview widgets now display visual insights alongside their numbers. Depending
on the widget type you'll see:

* **Charts and trend lines** — area charts for revenue and client trends; bar
  charts for ranked lists such as top services or aging receivables.
* **Donuts** — status breakdowns (invoices, appointments, client demographics)
  shown as a ring chart with a matching legend.
* **Gauges** — percentage KPIs such as quote conversion rate and no-show rate
  rendered as a radial dial.
* **Animated figures** — KPI numbers count up from zero on first load so you
  can see the value land, rather than it just appearing.

Animations automatically turn off when your operating system's **Reduce motion**
accessibility setting is enabled, and while you're in edit mode (so drag handles
don't conflict with chart interactions).

***

**In-app help:** no dedicated in-app article yet for dashboard customization.


# الملف الشخصي والأمان (/ar/docs/getting-started/profile-security)



# الملف الشخصي والأمان [#الملف-الشخصي-والأمان]

تُدار إعدادات حسابك من خلال صورتك الشخصية في أعلى يسار الشاشة. اضغط عليها
واختر **الحساب** لفتح الإعدادات.

## تحديث الملف الشخصي [#تحديث-الملف-الشخصي]

تحت **الحساب → الملف الشخصي** يمكنك تعديل:

* **اسم العرض** — الاسم الذي يراه الزملاء والعملاء.
* **رقم الهاتف** — يُستخدم لرموز التحقق عبر الرسائل القصيرة (اختياري).
* **الصورة الشخصية** — ارفع صورة مربعة (256 × 256 بكسل على الأقل).

تُحفظ التغييرات بمجرد النقر خارج الحقل.

## تغيير كلمة المرور [#تغيير-كلمة-المرور]

1. افتح **الحساب → الأمان**.
2. اضغط **تغيير كلمة المرور**.
3. أدخل كلمة المرور الحالية، ثم كلمة المرور الجديدة مرتين.
4. اضغط **حفظ**. ستبقى مسجّل الدخول على هذا الجهاز وسيُسجَّل خروجك من جميع
   الأجهزة الأخرى.

إذا نسيت كلمة المرور الحالية، سجّل الخروج واتبع مسار &#x2A;*نسيت كلمة المرور؟**
في صفحة تسجيل الدخول — راجع
[تسجيل الدخول](/ar/docs/getting-started/sign-in).

## المصادقة الثنائية (2FA) [#المصادقة-الثنائية-2fa]

تضيف المصادقة الثنائية خطوة ثانية بعد كلمة المرور: رمز قصير يُنشئه تطبيق
مصادقة (أو يُرسل إلى بريدك الإلكتروني إن لم تستخدم تطبيقاً).

### الإعداد [#الإعداد]

1. افتح **الحساب → الأمان**.
2. اضغط **تفعيل المصادقة الثنائية**.
3. امسح رمز QR بتطبيق مصادقة مثل **Google Authenticator** أو **1Password**
   أو **Authy**، أو أدخل المفتاح يدوياً.
4. أدخل الرمز المكوّن من 6 أرقام الذي يعرضه التطبيق لتأكيد الاقتران.
5. يعرض ميديسينك **رموز الاسترداد** — احفظها أو اكتبها في مكان آمن. كل
   رمز يعمل مرة واحدة ويسمح لك بتسجيل الدخول في حال فقدان جهازك المصادق.

### تسجيل الدخول مع المصادقة الثنائية [#تسجيل-الدخول-مع-المصادقة-الثنائية]

بعد إدخال كلمة المرور، يطلب ميديسينك رمزاً مكوّناً من 6 أرقام. افتح تطبيق
المصادقة واكتب الرمز الخاص بميديسينك. تتغير الرموز كل 30 ثانية — إذا كان
الرمز على وشك الانتهاء، انتظر الرمز التالي.

### إيقاف المصادقة الثنائية أو إعادة تعيين الجهاز [#إيقاف-المصادقة-الثنائية-أو-إعادة-تعيين-الجهاز]

* **إيقافها.** في **الحساب → الأمان**، اضغط **تعطيل المصادقة الثنائية**
  وأدخل كلمة المرور للتأكيد. افعل ذلك فقط على الأجهزة التي تثق بها.
* **فقدان جهاز المصادقة.** استخدم أحد رموز الاسترداد المحفوظة عند
  الإعداد. إذا فقدتها أيضاً، يستطيع مسؤول عيادتك إعادة تعيين المصادقة
  الثنائية على حسابك.

## الجلسات النشطة [#الجلسات-النشطة]

تسرد **الحساب → الأمان → الجلسات النشطة** كل متصفح وجهاز مسجّل حالياً
بحسابك. لكل جلسة ترى وقت آخر نشاط وعنوان IP ومعلومات المتصفح. اضغط
**إنهاء** بجوار أي جلسة لتسجيل خروج ذلك الجهاز.

استخدم **إنهاء كل الجلسات الأخرى** بعد تغيير كلمة المرور أو إذا كنت تشك
في استخدام حسابك بدون علمك.

## رموز الوصول للـ API [#رموز-الوصول-للـ-api]

إذا كانت عيادتك تربط ميديسينك بأداة أخرى، تسمح لك
**الحساب → الأمان → رموز الوصول** بإنشاء رموز قصيرة العمر للاستخدام عبر
الـ API. يعرض كل رمز نطاقه ووقت آخر استخدام وتاريخ انتهائه. أنشئ رمزاً،
وانسخه فوراً (يُعرض مرة واحدة فقط)، ثم ألغِه عندما تنتهي حاجة التكامل
إليه.

***

**مقالات المساعدة داخل التطبيق:** `account_access_token`،
`account_active_sessions`، `account_email_verified`،
`account_session_expires_in`.


# تسجيل الدخول (/ar/docs/getting-started/sign-in)



# تسجيل الدخول إلى ميديسينك [#تسجيل-الدخول-إلى-ميديسينك]

يوفّر ميديسينك صفحة تسجيل دخول خاصة بكل نوع من المستخدمين. افتح الصفحة
المناسبة لدورك:

* **موظفو العيادة** — [staff.medisync-solutions.com](https://staff.medisync-solutions.com/sign-in)
* **مسؤولو العيادة / المدراء الأعلى** — [admin.medisync-solutions.com](https://admin.medisync-solutions.com/sign-in)
* **العملاء** — [app.medisync-solutions.com](https://app.medisync-solutions.com/sign-in)

تقبل كل بوابة نفس بيانات الاعتماد التي وصلتك عبر البريد الإلكتروني عند
إنشاء حسابك.

## تسجيل الدخول بالبريد الإلكتروني وكلمة المرور [#تسجيل-الدخول-بالبريد-الإلكتروني-وكلمة-المرور]

1. افتح البوابة المناسبة لدورك (انظر الروابط أعلاه).
2. أدخل البريد الإلكتروني المرتبط بحسابك.
3. أدخل كلمة المرور.
4. اضغط **تسجيل الدخول**.

إذا كانت المصادقة الثنائية مفعّلة على حسابك، سيطلب منك ميديسينك رمزاً
مكوّناً من 6 أرقام بعد إدخال كلمة المرور. راجع
[الملف الشخصي والأمان](/ar/docs/getting-started/profile-security)
للتفاصيل.

## تسجيل الدخول بحساب جوجل [#تسجيل-الدخول-بحساب-جوجل]

في كل صفحة تسجيل دخول ستجد قسم &#x2A;*«أو تابع باستخدام»** وزر **تسجيل الدخول
بجوجل**. اضغط الزر واختر حساب جوجل المرتبط ببريدك الوظيفي. في أول مرة تستخدم
فيها جوجل، يربط ميديسينك حساب جوجل تلقائياً بحسابك في ميديسينك.

> **ملاحظة.** يعمل تسجيل الدخول بجوجل فقط إذا كان مسؤول مؤسستك قد فعّل هذه
> الخاصية، ومع نطاق البريد الإلكتروني المعتمد من قِبله فقط.

## نسيت كلمة المرور [#نسيت-كلمة-المرور]

1. في صفحة تسجيل الدخول، اضغط &#x2A;*نسيت كلمة المرور؟**
2. أدخل البريد الإلكتروني المرتبط بحسابك واضغط زر إعادة التعيين.
3. افتح بريدك الإلكتروني وابحث عن رسالة من ميديسينك، ثم اضغط على الرابط
   داخلها. الرابط صالح لفترة محدودة لأسباب أمنية — إذا انتهت صلاحيته،
   كرّر الخطوة الأولى لطلب رابط جديد.
4. أدخل كلمة مرور جديدة وأكّدها، ثم سيُعاد توجيهك إلى صفحة تسجيل الدخول.

إذا لم تصل رسالة إعادة التعيين خلال بضع دقائق، تحقق من مجلد الرسائل
المزعجة، وتأكد من صحة البريد الإلكتروني، ثم راجع
[حل المشكلات](/ar/docs/reference/troubleshooting).

## البقاء مسجّل الدخول [#البقاء-مسجّل-الدخول]

يحتفظ ميديسينك بتسجيل دخولك بين جلسات المتصفح افتراضياً. عند استخدام جهاز
مشترك، سجّل الخروج يدوياً عند الانتهاء:

1. اضغط على صورتك الشخصية في أعلى يسار الشاشة.
2. اختر **تسجيل الخروج**.

***

**مقالة المساعدة داخل التطبيق:** لا توجد مقالة مكافئة بعد — صفحة تسجيل
الدخول هي أول تفاعل لك مع ميديسينك.


# أهلاً بك (/ar/docs)



# أهلاً بك في مركز مساعدة ميديسينك [#أهلاً-بك-في-مركز-مساعدة-ميديسينك]

اعثر على إجابات للأسئلة الشائعة وشروحات خطوة بخطوة لكل ما يقدمه ميديسينك.
اختر القسم الذي يناسب طريقة استخدامك للمنصة.

## للجميع [#للجميع]

* **[ابدأ من هنا](/ar/docs/getting-started/sign-in)** — سجّل الدخول، واقبل
  دعوة الانضمام إلى عيادتك، وأمّن حسابك باستخدام المصادقة الثنائية.

## لموظفي العيادة [#لموظفي-العيادة]

* **[مسؤول العيادة](/ar/docs/clinic-admin)** — إعداد مؤسستك، واختيار الخطة،
  ودعوة الزملاء، وتحديد الميزات التي تستخدمها عيادتك.
* **[موظف الاستقبال](/ar/docs/receptionist)** — إضافة العملاء واستيرادهم،
  وحجز المواعيد وإعادة جدولتها، وتسجيل وصول العملاء، وإدارة الوسوم.
* **[الممارس الصحي](/ar/docs/practitioner)** — جدولك اليومي، وملاحظات
  العملاء، والتاريخ الطبي.

## للعملاء [#للعملاء]

* **[بوابة العملاء](/ar/docs/client-portal)** — إنشاء حساب، وحجز المواعيد، والاطلاع
  على سجلاتك. بعض الميزات قيد الإطلاق — تشير كل صفحة إلى ما هو متاح اليوم.

## لا تجد ما تحتاج؟ [#لا-تجد-ما-تحتاج]

توجّه إلى &#x2A;*[المرجع](/ar/docs/reference/faq)** للأسئلة الشائعة، ونصائح حل
المشكلات، وكيفية الوصول إلى فريق الدعم.

## لوكلاء الذكاء الاصطناعي [#لوكلاء-الذكاء-الاصطناعي]

نُنشر هذه الوثائق بصيغ صديقة لنماذج اللغة الكبيرة والأدوات البرمجية.

* **[llms.txt](/llms.txt)** — فهرس قصير قابل للقراءة آلياً لكل صفحة
  (العنوان والرابط والوصف). يتّبع اتفاقية [llmstxt.org](https://llmstxt.org) —
  يبحث عنه معظم مساعدي الذكاء الاصطناعي تلقائياً.
* **[llms-full.txt](/llms-full.txt)** — التفريغ الكامل بصيغة Markdown لكل
  صفحات الوثائق في ملف واحد. استخدمه عندما تريد قاعدة معرفية كاملة
  دفعة واحدة.
* **`.mdx` على أيّ صفحة** — أضف `.mdx` إلى أي رابط وثائق لجلب الصفحة
  بصيغة Markdown الخام. مثلاً
  [/ar/docs/clinic-admin/modules.mdx](/ar/docs/clinic-admin/modules.mdx).
  يعمل هذا على جميع صفحات الوثائق في `/en` و`/ar`.

لكل صفحة وثائق زرّ **نسخ كـ Markdown** وقائمة «فتح في ChatGPT / Claude
/ ذكاء اصطناعي آخر» في أعلى يمين الصفحة — مفيدان للصق صفحة واحدة في محادثة.


# ملاحظات العميل (/ar/docs/practitioner/client-notes)



# ملاحظات العميل [#ملاحظات-العميل]

الملاحظات هي السجلّ السريري للزيارة. لكل موعد ملاحظة واحدة أو أكثر.
تكتبها في محرّر الملاحظات — نصّ منسّق مع عناوين وقوائم وجداول
ومرفقات و@منشن.

## بدء ملاحظة [#بدء-ملاحظة]

من ملف العميل → **الملاحظات → ملاحظة جديدة**، أو من استشارة نشطة،
اضغط **بدء ملاحظة**.

## المحرّر [#المحرّر]

يعتمد المحرّر على TipTap. الميزات الأساسية:

* **شريط أدوات التنسيق** — عناوين، غامق/مائل، قوائم، اقتباسات،
  جداول، كتل برمجية.
* **الصور** — سحب وإفلات، أو لصق، أو اضغط **إدراج صورة**. تُحفظ
  بأمان ولا يمكن الوصول إليها خارج ميديسينك.
* **المرفقات** — PDF، DOCX، تقارير مختبر. اضغط **إرفاق ملف**.
* **@منشن** — اكتب `@` لذكر زميل؛ يتلقّى إشعاراً بالملاحظة.
* **القوالب** — اضغط **إدراج قالب** لإدراج هيكل معدّ مسبقاً
  (SOAP، ملخّص خروج، مخصّص).
* **الحفظ التلقائي** — تُحفظ الملاحظة كل بضع ثوانٍ أثناء الكتابة.
  يظهر مؤشّر **حُفظ للتو** أسفل اليمين.

## القوالب [#القوالب]

القوالب على مستوى العيادة. يستطيع المسؤولون إضافة قوالب جديدة في
**المؤسسة → قوالب الملاحظات**. ويستطيع الممارسون إنشاء قوالب
شخصية من إعدادات ملفهم الشخصي.

يحتوي كل قالب على إجراء **عرض** (أيقونة العين) يفتح معاينة للقراءة فقط
لمحتوى القالب — أي ما سيُدرج تماماً عند كتابة أمر `/` الخاص به. يعمل ذلك
أيضاً مع **قوالب النظام** المدمجة التي لا يمكن تعديلها لكن يمكن الآن
الاطلاع عليها قبل استخدامها. ومن معاينة أحد قوالبك الشخصية، يأخذك زر
**تعديل** مباشرةً إلى نموذج التعديل.

## من يرى ماذا [#من-يرى-ماذا]

* **الممارسون** — يرون كل ملاحظة على عملائهم.
* **المسؤولون** — يرون كل ملاحظة في العيادة.
* **الاستقبال / المحاسبون** — يرون **البيانات الوصفية** للملاحظة
  (من، متى، النوع) لا المحتوى.
* **العملاء** — يرون الملاحظات إذا فعّل المسؤول **مرئي للعميل**
  على نوع الملاحظة.

لكل ملاحظة أداة **الرؤية** في الأعلى إن احتجت إلى تعديل الرؤية
لكل ملاحظة (مثل مسودّة خاصة).

## تعديل ملاحظة نهائية [#تعديل-ملاحظة-نهائية]

عند الضغط على **إنهاء الملاحظة**، تصبح جزءاً من السجلّ الطبي،
قابلة للتعديل غير قابلة للحذف. اضغط **تعديل** لإضافة فقرة متابعة؛
يُحفظ كل من النصّ الأصلي والتعديل.

## اختصارات لوحة المفاتيح [#اختصارات-لوحة-المفاتيح]

| الاختصار           | الإجراء                              |
| ------------------ | ------------------------------------ |
| `Ctrl / ⌘ + S`     | حفظ يدوي (الحفظ التلقائي يحفظ فعلاً) |
| `Ctrl / ⌘ + B`     | غامق                                 |
| `Ctrl / ⌘ + I`     | مائل                                 |
| `Ctrl / ⌘ + K`     | إدراج رابط                           |
| `Ctrl / ⌘ + Enter` | إنهاء الملاحظة                       |


# الجدول اليومي (/ar/docs/practitioner/daily-schedule)



# الجدول اليومي [#الجدول-اليومي]

## تبويب اليوم [#تبويب-اليوم]

تبويب **اليوم** هو أوّل ما يفتح عند تسجيل الدخول. يعرض كل عميل
مجدول معك في اليوم، من الأعلى للأسفل بترتيب الوقت.

يعرض كل صفّ:

* اسم العميل وهاتفه.
* نوع الموعد.
* حالة الوصول (**مجدول**، **وصل**، **في الاستشارة**، **منجز**،
  **لم يحضر**).
* ملاحظة إن أضافها الاستقبال عند الحجز.

اضغط صفّاً لفتح ملف العميل في لوحة جانبية. اضغط **بدء الاستشارة**
لتقدّم الحالة.

## التقويم [#التقويم]

يمنحك **المواعيد → التقويم** عرض الأسبوع/الشهر لجميع الممارسين.
فتحاتك مميّزة بلون، وفتحات الآخرين مُعتمة.

استخدم التقويم لـ:

* معرفة متى تكون متاحاً لمتابعة.
* نظرة مسبقة على الأسبوع القادم.
* سحب موعد إلى وقت جديد (عادةً يقوم بذلك الاستقبال لكن تستطيع
  أنت أيضاً).

## وضع علامة عدم توفّر [#وضع-علامة-عدم-توفّر]

إذا احتجت إلى حجب وقت (غداء، أعمال إدارية، موعد شخصي):

1. **المواعيد → التقويم → رأس عمودك → حجب وقت**.
2. اختر البداية والنهاية والسبب.
3. احفظ.

يظهر الحجب في التقويم بلون محايد. لن يستطيع الاستقبال حجزك
فوقه.

## وضع علامة غير متوفّر لليوم كلّه [#وضع-علامة-غير-متوفّر-لليوم-كلّه]

للإجازات المرضية أو الغياب غير المخطّط، استخدم **تحديد غير متوفّر
لهذا اليوم** في رأس عمودك. يسرد ميديسينك كل موعد متأثّر ويعرض
تحويله إلى ممارس آخر أو إعادة جدولته. انظر
[إعادة الجدولة / الإلغاء](/ar/docs/receptionist/reschedule-cancel).

## ساعات العمل [#ساعات-العمل]

تحدّد ساعات عملك الافتراضية من قِبل مسؤول العيادة. إذا كانت
خاطئة — تعمل أيام الثلاثاء والخميس، لكن التقويم يعرضك متاحاً طوال
الأسبوع — اطلب من المسؤول تحديث ملفك الشخصي في
**المؤسسة → الموظفون → الممارسون**.


# نظرة عامة للممارس (/ar/docs/practitioner)



# الممارس الصحي — نظرة عامة [#الممارس-الصحي--نظرة-عامة]

بصفتك ممارساً، يدور يومك في ميديسينك حول ثلاث شاشات:

1. **اليوم** — قائمة العملاء المجدولين معك، مرتّبين.
2. **ملف العميل** — كل شيء عن الشخص الذي في الغرفة الآن.
3. **محرّر الملاحظات** — حيث تسجّل ما حدث في الزيارة.

موظفو الاستقبال يتولّون الحجز وتسجيل الوصول والفوترة؛ وأنت تركّز
على السير العمل السريري.

## سير استشارة نموذجية [#سير-استشارة-نموذجية]

1. يسجّل الاستقبال وصول العميل — يظهر صفّه في **اليوم** كـ
   **ينتظرك**.
2. اضغط **بدء الاستشارة**. تتحوّل الحالة إلى **في الاستشارة**.
3. افتح ملف العميل وتبويب **التاريخ الطبي** لسياق من الزيارات
   السابقة.
4. اكتب **ملاحظتك** — راجع
   [ملاحظات العميل](/ar/docs/practitioner/client-notes).
5. أرفق أيّ مستندات أحضرها العميل (نتائج مختبرات، أشعة).
6. اضغط **إنهاء الزيارة**. إذا كانت الفوترة مفعّلة، تُنشأ مسودّة
   فاتورة ليكملها الاستقبال.

## التالي [#التالي]

* **[الجدول اليومي](/ar/docs/practitioner/daily-schedule)** — كيف
  يعمل التقويم وتبويب اليوم.
* **[ملاحظات العميل](/ar/docs/practitioner/client-notes)** —
  المحرّر، والقوالب، والحفظ التلقائي.
* **[التاريخ الطبي](/ar/docs/practitioner/medical-history)** —
  العثور على الزيارات السابقة، والحساسية، وسجلّ الأدوية.


# التاريخ الطبي (/ar/docs/practitioner/medical-history)



# التاريخ الطبي [#التاريخ-الطبي]

في ملف العميل، تبويب **التاريخ الطبي** هو العرض الذي يجب أن يلقي
عليه الممارس نظرة قبل بدء الاستشارة.

## الأقسام [#الأقسام]

* **الحساسية** — حساسية الأدوية والطعام والبيئة مع درجة الشدّة.
  تظهر العناصر الحرجة ببانر أحمر أعلى الملف بصرف النظر عن
  التبويب الذي تعرضه.
* **الحالات المزمنة** — السكّري، ارتفاع الضغط، إلخ. لكل واحدة
  تاريخ بداية وملاحظات اختيارية.
* **الأدوية الحالية** — الاسم، والجرعة، والتكرار، والممارس
  الواصف، وسجلّ التجديد.
* **الزيارات السابقة** — قائمة عكسية زمنياً بكل المواعيد المنجزة
  مع عيادتك.
* **التاريخ العائلي** — اختياري، يُلتقط في الإدخال أو الزيارة
  الأولى.
* **التاريخ الاجتماعي** — التدخين، الكحول، العمل — إذا كان إدخال
  عيادتك يلتقط ذلك.

## تعديل التاريخ [#تعديل-التاريخ]

لكل صفّ إجراء **تعديل**. التغييرات مُرصّدة — تستطيع رؤية القيم
السابقة ومن غيّرها تحت **سجلّ التغييرات**.

الصفوف التي يمكن إضافتها بسرعة من رأس القسم:

* **+ حساسية** — النوع، وشدّة التفاعل، ووصف رد الفعل.
* **+ حالة** — الرمز (اختيارياً من ICD-10)، وتاريخ البدء،
  وملاحظات.
* **+ دواء** — الاسم، والجرعة، والتكرار، وتاريخ البدء/الانتهاء.

## الربط المتقاطع [#الربط-المتقاطع]

اضغط أيّ دواء أو حالة لرؤية **كل ملاحظة سابقة ذكرته**. مفيد عند
تجميع التاريخ من زيارات متفرّقة.

## استيراد من سجلات خارجية [#استيراد-من-سجلات-خارجية]

إذا أحضر العميل سجلات من عيادة أخرى (رُفعت كمستندات على ملفه)،
استخدم **استيراد إلى التاريخ** على ملف PDF لاستخراج الحساسية /
الأدوية بمساعدة الذكاء الاصطناعي. الاستخراج اقتراحي — تراجع
وتقبل قبل إضافته.

## من يستطيع التعديل [#من-يستطيع-التعديل]

* **الممارسون** — أيّ قسم.
* **المسؤولون** — أيّ قسم.
* **الاستقبال** — الحساسية فقط (تُلتقط عادةً في الإدخال).
* **العملاء** — قراءة فقط عبر بوابة العملاء (عند إطلاقها).


# إضافة عميل (/ar/docs/receptionist/add-client)



# إضافة عميل [#إضافة-عميل]

افتح **العملاء → إضافة عميل** أو اضغط `G` ثم `P` من أيّ مكان في لوحة
الموظفين.

## نموذج الإدخال [#نموذج-الإدخال]

تعتمد الحقول على كيفية ضبط مسؤول عيادتك لحقول العملاء. الأقسام الشائعة:

### الهوية [#الهوية]

* **الاسم** — يعتمد عدد حقول الاسم على
  [نمط الاسم](/ar/docs/clinic-admin/client-field-config) الذي
  اختاره مسؤول العيادة. اكتب الاسم كما تنطقه؛ لا يقوم ميديسينك
  بالنقل الحرفي.
* **تاريخ الميلاد** — يستنتج ميديسينك العمر ويشير إلى حالات جرعات
  الأطفال لاحقاً.
* **الجنس** — الجنس البيولوجي. تضيف بعض العيادات حقلاً مخصّصاً
  منفصلاً للهوية الجندرية.
* **الرقم الوطني** / **جواز السفر** — اختياري لكن مفهرس لبحث سريع.

### التواصل [#التواصل]

* **الهاتف** — الرقم الأساسي. يُستخدم لتذكيرات الرسائل القصيرة إذا
  كانت الإشعارات مفعّلة.
* **البريد الإلكتروني** — يُستخدم للميزات المرتبطة بالحساب (بوابة
  العملاء، الإيصالات الإلكترونية).
* **اللغة المفضّلة** — العربية أو الإنجليزية. تُستخدم للبريد
  الإلكتروني وتذكيرات الرسائل القصيرة.

### العنوان وغيره [#العنوان-وغيره]

يعتمد باقي النموذج على حقول عيادتك المخصّصة. اسأل المسؤول إن لم
تكن متأكداً من الحقول المنطبقة على نوع العميل.

## إلزامي مقابل اختياري [#إلزامي-مقابل-اختياري]

الحقول ذات النجمة الحمراء إلزامية. لا يُرسل النموذج بحقل إلزامي
فارغ. إذا كان الحقل إلزامياً بينما يجب ألا يكون — أو العكس — فاسأل
المسؤول (انظر
[ضبط حقول العملاء](/ar/docs/clinic-admin/client-field-config)).

## كشف التكرار [#كشف-التكرار]

أثناء كتابتك، يحذّرك ميديسينك إذا كان هناك عميل بنفس الاسم +
تاريخ الميلاد. اضغط التحذير لفتح السجل الموجود بدلاً من إنشاء
تكرار.

إذا كانت المطابقة إيجابية زائفة (مثل التوائم)، اضغط **متابعة إنشاء
عميل جديد**.

## بعد الحفظ [#بعد-الحفظ]

تهبط على صفحة الملف الشخصي للعميل. من هنا تستطيع:

* **حجز موعد** — راجع
  [حجز موعد](/ar/docs/receptionist/book-appointment).
* **إضافة مستندات** — ارفع وثائق الهوية، والسجلات السابقة،
  والموافقات.
* **بدء ملاحظة** — إذا كنت أيضاً الممارس، اكتب ملاحظة الزيارة
  الأولى.

***

**مقالات المساعدة داخل التطبيق:** `clients_add`،
`clients_required_fields_setting`.


# حجز موعد (/ar/docs/receptionist/book-appointment)



# حجز موعد [#حجز-موعد]

هناك نقطتا انطلاق طبيعيتان:

* **من ملف العميل** — اضغط زر **حجز موعد**. تُملأ بيانات العميل
  تلقائياً.
* **من التقويم** — &#x2A;*المواعيد → التقويم → +**، ثم اختر عميلاً.

## اختيار الوقت [#اختيار-الوقت]

يعرض التقويم توفّر كل ممارس. إعدادات على مستوى العيادة:

* **مدة الحجز** — طول الموعد الافتراضي. يحدّدها المسؤول.
* **ساعات العمل** — متى يكون كل ممارس متاحاً.
* **سياسة التداخل** — هل تسمح العيادة بالحجز المزدوج؟ بعض
  العيادات تسمح (الحالات غير المجدولة)، وأخرى لا تسمح.

اسحب عبر نطاق زمني لإنشاء حجز بهذه المدة، أو اضغط فتحة واحدة
واستخدم القائمة المنسدلة لتغيير المدة.

## تفاصيل الموعد [#تفاصيل-الموعد]

يطلب الدرج الذي يفتح:

* **الممارس** — يُملأ من العمود الذي ضغطت عليه.
* **المدة** — تُملأ بالافتراضي للعيادة.
* **النوع** — استشارة، متابعة، إجراء، إلخ (يحدّدها المسؤول).
* **ملاحظة للممارس** — نص حرّ قصير لأيّ شيء مهم (مثل «قادم
  لإزالة الغرز»).
* **إرسال تذكير** — فعّل/عطّل تذكيرات الرسائل القصيرة أو البريد
  مسبقاً (افتراضياً مفعّلة إذا كانت وحدة الإشعارات مشغّلة).

اضغط **احجز**.

## الحقول المخصّصة [#الحقول-المخصّصة]

إذا عرّف المسؤول **حقولاً مخصّصة** للمواعيد، يظهر قسم مخصّص باسم
**الحقول المخصّصة** في نموذج الحجز. املأ ما ينطبق (نص، أرقام، مفاتيح
نعم/لا، تواريخ، أو قوائم اختيار)؛ الحقول الإلزامية معلّمة بنجمة حمراء
ويجب إكمالها قبل حفظ الحجز. تُخزَّن هذه القيم على الموعد ويمكن استخدامها
**لتصفية قائمة المواعيد** — افتح لوحة التصفية لتظهر الحقول نفسها كصفوف
تصفية تتيح لك تضييق القائمة، مثلاً، إلى كل موعد موسوم بمنطقة معيّنة أو
مصدر إحالة محدّد.

يظهر القسم فقط عند إعداد حقول مخصّصة؛ العيادات التي لم تُعدّ أيّ حقول
لن تراه.

## التأكيد [#التأكيد]

* يظهر الموعد فوراً في التقويم، وفي **المواعيد → القادمة**،
  وعلى ملف العميل.
* إذا كانت تذكيرات الرسائل القصيرة مفعّلة، يتلقّى العميل رسالة
  تأكيد على الفور.
* إذا كانت العيادة تستخدم **التأكيد الذاتي**، ترافق رسالة التأكيد
  زرّ يضغطه العميل؛ حتى الضغط، يبقى الموعد **معلّقاً** بشارة
  صفراء.

## الحجز في المستقبل [#الحجز-في-المستقبل]

تحدّد العيادات **نافذة الحجز المسبقة القصوى** (30 أو 60 أو 90
يوماً شائعة). يُعتم التقويم التواريخ بعدها. غيّر النافذة من
إعدادات وحدة **المواعيد** إذا احتجت مزيداً من المرونة.

## الحضور الفوري في نفس اليوم [#الحضور-الفوري-في-نفس-اليوم]

اضغط **احجز** على فتحة فارغة اليوم واضبط الموعد ليبدأ فوراً.
لبعض العيادات نوع خاص **حضور بلا موعد** لا يحتاج إلى افتراضات
مدّة.

***

**مقالات المساعدة داخل التطبيق:** `appointments_slot_duration`،
`appointments_max_advance_booking_days`،
`appointments_allow_overlap`،
`appointments_require_confirmation`.


# تسجيل وصول العملاء (/ar/docs/receptionist/check-in)



# تسجيل وصول عميل [#تسجيل-وصول-عميل]

يعرض تبويب **اليوم** في لوحة الموظفين مواعيد اليوم مرتّبة. عند وصول
العملاء، تنقلهم بين الحالات.

## الحالات [#الحالات]

| الحالة           | المعنى                                |
| ---------------- | ------------------------------------- |
| **مجدول**        | الموعد موجود، لم يصل العميل بعد       |
| **وصل**          | سجّل العميل وصوله في الاستقبال، ينتظر |
| **في الاستشارة** | بدأ الممارس الزيارة                   |
| **منجز**         | انتهت الزيارة، جاهز للفوترة           |
| **لم يحضر**      | لم يصل العميل خلال المهلة             |

تُبرز لوحة التحكم الإجراء التالي لكل صفّ.

## تسجيل وصول [#تسجيل-وصول]

1. اعثر على صفّ الموعد في تبويب **اليوم**. استخدم مربع البحث إذا
   كانت القائمة طويلة.
2. اضغط **تسجيل الوصول**.
3. تحقّق من الهوية بأي وسيلة تتّبعها عيادتك — وثيقة هوية مصوّرة،
   تأكيد رقم الهاتف، الرقم الوطني.
4. إذا بدت بيانات العميل خاطئة (تغيّر الهاتف، ارتداد البريد)،
   اضغط اسم العميل لفتح الملف، وحدّثه، ثم عد.
5. اضغط **تأكيد تسجيل الوصول**.

ينتقل الصفّ إلى **وصل** ويراه الممارس في طابوره.

## الحضور بلا حجز مسبق [#الحضور-بلا-حجز-مسبق]

1. في **اليوم**، اضغط **حضور بلا موعد**.
2. ابحث عن العميل. إذا لم يكن في النظام، اضغط **إنشاء عميل جديد**
   وامرّ بالإدخال.
3. اختر ممارساً لديه فتحة متاحة.
4. اضغط **تسجيل الوصول**.

ينشئ ميديسينك الحجز عند الوقت الحالي ويسجّل وصول العميل في خطوة
واحدة.

## وضع علامة «لم يحضر» [#وضع-علامة-لم-يحضر]

إذا لم يصل العميل خلال `<المهلة>` من بداية موعده، لا يضع ميديسينك
العلامة تلقائياً — يجب على شخص ما فعل ذلك. (التحديد التلقائي
لعدم الحضور على خارطة الطريق.)

1. افتح الموعد.
2. اضغط **تحديد لم يحضر**.
3. أضف ملاحظة اختيارية.
4. أكّد.

تُحتسب حالة عدم الحضور في نسبة العميل في التحليلات ويمكنها
اختيارياً أن تُطلق رسالة متابعة.

## عكس تسجيل الوصول [#عكس-تسجيل-الوصول]

إذا سجّلت وصول شخص خطأً (عميل خاطئ، موعد خاطئ):

1. افتح الموعد → **المزيد → التراجع عن تسجيل الوصول**.
2. أكّد.

هذا إجراء مسجّل في سجلّ المراجعة؛ ويظهر التراجع في السجلّ.


# تاريخ العميل (/ar/docs/receptionist/client-history)



# تاريخ العميل [#تاريخ-العميل]

لكل عميل تبويب **التاريخ** في ملفه يسرد كل تفاعل مع عيادتك،
الأحدث أولاً.

## ما يتضمّنه التاريخ [#ما-يتضمّنه-التاريخ]

* **المواعيد** — مجدولة، منجزة، ملغاة، لم يحضر، مع الممارس
  والنتيجة.
* **الملاحظات** — ملاحظات الممارس من كل زيارة (الوصول يعتمد على
  دورك).
* **المستندات** — الملفات المرفوعة: الهويّات، السجلات السابقة،
  الموافقات، نتائج الفحوصات.
* **الفواتير والمدفوعات** — يراها موظفو الاستقبال والمحاسبون، لا
  الممارسون افتراضياً.
* **الرسائل** — الرسائل القصيرة والبريد الإلكتروني التي أرسلها
  ميديسينك نيابة عن العميل (التذكيرات، التأكيدات، الفواتير).
* **تغييرات الوسوم** — كل وسم أُضيف أو أُزيل، مع من فعل ذلك ومتى
  (انظر [الوسوم](/ar/docs/receptionist/tags)).

## التصفية والبحث [#التصفية-والبحث]

* **مرشّح النوع** (أعلى القائمة) — اعرض المواعيد فقط أو المستندات
  أو غيرها.
* **نطاق التاريخ** — ضيّق إلى شهر أو ربع معيّن.
* **نصّ حرّ** — ابحث داخل الملاحظات ومتن الرسائل.

## فتح زيارة سابقة [#فتح-زيارة-سابقة]

اضغط أيّ صفّ لفتح السجلّ الكامل:

* **موعد** ← ملخّص، وقت البدء/النهاية، الممارس، الملاحظات
  والمستندات المرفقة، حالة الفاتورة.
* **ملاحظة** ← الملاحظة الكاملة وأيّ مرفقات.
* **مستند** ← معاينة مدمجة لملفات PDF والصور.

## التصدير [#التصدير]

لنسخ السجلات التي يطلبها العملاء (غالباً ما يتطلبها القانون):

1. افتح **المزيد → تصدير التاريخ**.
2. اختر الأنواع المطلوبة (مواعيد، ملاحظات، مستندات، فواتير).
3. اختر **حزمة PDF** أو **CSV** حسب ما يحتاجه العميل.
4. اضغط **إنشاء**.

ينتج ميديسينك تنزيلاً خلال ثوانٍ. التصدير مسجّل في سجلّ المراجعة —
يستطيع المسؤول معرفة من صدّر ماذا ومتى.

## دمج العملاء المكرّرين [#دمج-العملاء-المكرّرين]

إذا انتهى العميل بملفّين (نفس الشخص، وتاريخ ميلاد خاطئ في أحدهما)،
يستطيع مسؤول العيادة دمجهما من
**العملاء → المزيد → العثور على التكرارات → دمج**. لا يستطيع
موظفو الاستقبال فعل ذلك بأنفسهم — بلّغ المسؤول بوسم مثل
`duplicate-merge-needed` (راجع [الوسوم](/ar/docs/receptionist/tags)).

***

**مقالات المساعدة داخل التطبيق:** لا توجد مقالة مكرّسة لتاريخ
العميل بعد.


# استيراد العملاء (/ar/docs/receptionist/import-clients)



# استيراد العملاء من ملف CSV [#استيراد-العملاء-من-ملف-csv]

استخدم هذا عند الانتقال إلى ميديسينك من نظام EMR آخر، أو عندما يكون
لدى عيادتك قائمة عملاء تاريخية لإضافتها.

## تحضير ملف CSV [#تحضير-ملف-csv]

1. صدِّر قائمة العملاء الحالية بصيغة CSV باستخدام ترميز **UTF-8**.
2. حمِّل قالب ميديسينك: **العملاء → استيراد → تنزيل القالب**. يحتوي على
   الأعمدة التي يتوقّعها ميديسينك بالترتيب الصحيح.
3. انسخ البيانات من ملفك المصدر إلى أعمدة القالب. اربط أعمدتك
   بأعمدتنا — لا تغيّر أسماء أعمدة ميديسينك.

### ملاحظات الأعمدة [#ملاحظات-الأعمدة]

* **أعمدة الاسم** — يعتمد عدد الأعمدة التي تحتاجها على
  [نمط الاسم](/ar/docs/clinic-admin/client-field-config) في عيادتك.
  اترك أعمدة الاسم التي لا تستخدمها فارغة.
* **تاريخ الميلاد** — `YYYY-MM-DD`. تُقبل صيغ أخرى لكنها ملتبسة
  (هل `01/02/2024` هو 2 يناير أم 1 فبراير؟). التزم بصيغة ISO.
* **الهاتف** — أدرج رمز البلد مع `+`. مثلاً `+966501234567`.
* **الحقول المخصّصة** — عمود لكل حقل مخصّص، مستخدماً **رأس العمود**
  الذي اختاره المسؤول.

## الرفع [#الرفع]

1. **العملاء → استيراد → رفع CSV**.
2. أفلت الملف أو اضغط للاختيار.
3. يحلّل ميديسينك أوّل 50 صفّاً ويعرض **معاينة** — كل عمود مربوط
   بالحقل المقابل. مرّر للتأكّد من صحّة الربط.
4. اضغط **بدء الاستيراد**.

## مراجعة الأخطاء [#مراجعة-الأخطاء]

إذا رُفض أيّ صفّ، يعرض ميديسينك:

* رقم الصفّ.
* السبب (مثلاً «حقل إلزامي مفقود: الهاتف»).
* المحتوى الخام للصفّ.

حمِّل ملف الأخطاء، وصحّحها في جدول بيانات، وأعد الرفع — تُعاد
استيراد الصفوف المصحّحة فقط. تُتخطّى الصفوف التي تم استيرادها
تلقائياً بناءً على **الرقم الوطني** (أو البريد إن لم يكن هناك
رقم).

## الحدود [#الحدود]

* **10,000 صفّ لكل ملف.** قسّم الاستيرادات الأكبر إلى ملفات متعدّدة.
* **50 ميغابايت لكل ملف**، وحوالي 4 ميغابايت في مسار المعاينة فقط.
* الاستيراد **لا يُكرّر بناءً على الرقم الوطني**: تشغيل نفس
  الملف مرتين لا يُكرّر العملاء (يُطابَقون ويُتخطّون).

## بعد الاستيراد [#بعد-الاستيراد]

يحمل كل عميل مستورد وسم &#x2A;*مستورَد في `<التاريخ>`** افتراضياً.
استخدم سير عمل [الوسوم](/ar/docs/receptionist/tags) لتصفية القائمة
ومراجعة الجودة.

***

**مقالات المساعدة داخل التطبيق:** `clients_import`.


# نظرة عامة لموظفي الاستقبال (/ar/docs/receptionist)



# موظف الاستقبال — نظرة عامة [#موظف-الاستقبال--نظرة-عامة]

يدور سير عمل موظف الاستقبال في ميديسينك حول ثلاث حلقات:

1. **تسجيل العملاء** — الإضافة أو الاستيراد، وتحديث البيانات باستمرار.
2. **جدولة المواعيد** — الحجز، والتذكير، وإعادة الجدولة، والإلغاء.
3. **إدارة اليوم** — تسجيل وصول العملاء، والعثور على تاريخهم، ووسم
   السجلات للمتابعة.

كل ما تحتاجه موجود في الشريط الجانبي لـ **staff.medisync-solutions.com**
مجمّعاً تحت **العملاء** و**المواعيد** و**اليوم**.

## نظرة سريعة [#نظرة-سريعة]

| المهمة          | الاختصار                                |
| --------------- | --------------------------------------- |
| إضافة عميل      | `G` ثم `P`، أو **العملاء → إضافة**      |
| العثور على عميل | `/` لتركيز البحث الشامل                 |
| حجز موعد        | **المواعيد → +** من أيّ ملف عميل        |
| تسجيل الوصول    | تبويب **اليوم** في لوحة التحكم الرئيسية |

## ترتيب القراءة الموصى به [#ترتيب-القراءة-الموصى-به]

1. **[إضافة عميل](/ar/docs/receptionist/add-client)** — تعرّف على
   نموذج الإدخال وقواعد الحقول الإلزامية التي حدّدتها عيادتك.
2. **[حجز موعد](/ar/docs/receptionist/book-appointment)**.
3. **[تسجيل الوصول](/ar/docs/receptionist/check-in)** — سير الوصول
   الذي ينقل الحجز من «مجدول» إلى «في الاستشارة».
4. **[إعادة الجدولة / الإلغاء](/ar/docs/receptionist/reschedule-cancel)**
   — نوافذ الإلغاء وإعادة الحجز.
5. **[استيراد العملاء](/ar/docs/receptionist/import-clients)** —
   مهمّة لمرّة واحدة عند الانتقال من نظام آخر.
6. **[تاريخ العميل](/ar/docs/receptionist/client-history)** —
   العثور على الزيارات السابقة وربطها.
7. **[الوسوم](/ar/docs/receptionist/tags)** — وضع علامات على العملاء
   للمتابعة، أو نتائج الفحوصات، أو مسائل الفوترة.


# إعادة الجدولة أو الإلغاء (/ar/docs/receptionist/reschedule-cancel)



# إعادة جدولة موعد أو إلغاؤه [#إعادة-جدولة-موعد-أو-إلغاؤه]

## إعادة الجدولة [#إعادة-الجدولة]

تحتفظ إعادة الجدولة بسجلّ الموعد نفسه — هي فقط تنقل الوقت.
استخدم هذا بدلاً من الإلغاء ثم الحجز للحفاظ على السجلّ.

1. افتح الموعد (من التقويم أو ملف العميل).
2. اضغط **إعادة الجدولة**.
3. اختر فتحة جديدة. يُختار نفس الممارس مسبقاً؛ غيّره إن لزم.
4. أضف **سبباً** — نصّ حرّ، يظهر للعميل في التذكير.
5. اضغط **حفظ**.

يُبلَّغ العميل عبر نفس القناة (رسالة قصيرة/بريد إلكتروني) التي
أرسلت بها رسالة التأكيد الأصلية.

### السحب على التقويم [#السحب-على-التقويم]

اختصار: اسحب كتلة الموعد في عرض التقويم إلى فتحة جديدة. يطلب
ميديسينك التأكيد قبل الحفظ.

## الإلغاء [#الإلغاء]

1. افتح الموعد.
2. اضغط **إلغاء الموعد**.
3. اختر **سبباً** — طلب العميل، إغلاق العيادة، عدم توفّر الممارس،
   إلخ.
4. فعّل **إبلاغ العميل** إذا أردت إرسال رسالة إلغاء (عادةً نعم).
5. أكّد.

تُفرَغ الفتحة فوراً.

## نافذة الإلغاء [#نافذة-الإلغاء]

تحدّد العيادات **نافذة إلغاء** — الحدّ الأدنى من الإشعار الذي
يجب على العميل تقديمه لئلا يُحتسب الإلغاء ضدّه. القيم الشائعة
24 أو 48 ساعة.

إذا ألغى العميل داخل النافذة، يقوم ميديسينك بما يلي:

* تحديد الموعد كـ &#x2A;*ملغى (متأخّر)**.
* اختيارياً، فرض رسم إلغاء متأخّر (يحدّده المسؤول).
* احتسابه في نسبة عدم الحضور للعميل في التحليلات.

إذا ألغيت **أنت** داخل النافذة (إلغاء من العيادة)، فلن يعاقب
ميديسينك العميل بصرف النظر عن الإعداد.

## إعادة جدولة جماعية [#إعادة-جدولة-جماعية]

إذا تغيّب ممارس بشكل غير متوقّع (مرض، طارئ):

1. افتح **المواعيد → التقويم**.
2. اضغط رأس عمود الممارس.
3. اختر **تحديد غير متوفّر لهذا اليوم**.
4. يسرد ميديسينك كل موعد متأثّر مع زرّ **إعادة جدولة الكلّ** يوجّه
   كل موعد في تسلسل لإعادة الجدولة.

***

**مقالات المساعدة داخل التطبيق:** `appointments_cancellation_window_hours`.


# الوسوم (/ar/docs/receptionist/tags)



# الوسوم [#الوسوم]

الوسوم بطاقات قصيرة تُرفقها بالعملاء أو بسجلات فردية. هي أسرع
وسيلة لتقسيم قائمة مرضاك لاحتياج محدّد — «من لديه نتائج فحوصات
معلّقة؟»، «من مُعلَّم لمراجعة الفوترة؟».

## إنشاء وسم [#إنشاء-وسم]

تعيش الوسوم على مستوى العيادة — يرى جميع الموظفين المجموعة نفسها.

1. **العملاء → الوسوم → وسم جديد**.
2. اختر اسماً قصيراً (كلمة أو كلمتين)، ولوناً، ووصفاً اختيارياً.
3. حدّد ما إذا كان الوسم:
   * **على مستوى العميل** — يرتبط بسجلّ العميل بالكامل.
   * **على مستوى الزيارة** — يرتبط بموعد واحد أو ملاحظة.
4. احفظ.

## إرفاق وسم [#إرفاق-وسم]

* **بعميل** — افتح ملف العميل، اضغط **الوسوم**، اختر من القائمة
  أو اكتب لإضافة وسم جديد على الفور.
* **بموعد** — افتح درج الموعد → **الوسوم**.

## التصفية حسب الوسم [#التصفية-حسب-الوسم]

في صفحة **العملاء**، افتح لوحة التصفية (أعلى اليمين) واختر وسماً
أو أكثر. تنحصر القائمة بالعملاء الذين يحملون كل الوسوم المختارة.
يتحدّث الرابط، لذا تستطيع حفظ الحالات الشائعة في الإشارات
المرجعية.

## تصنيفات شائعة للوسوم [#تصنيفات-شائعة-للوسوم]

* **مؤشّرات الحالة** — `new-client`, `vip`, `insurance-verified`.
* **المتابعة** — `recall-6-months`, `results-pending`,
  `missed-referral`.
* **الفوترة** — `outstanding-balance`, `insurance-claim-pending`.
* **الجودة** — `duplicate-merge-needed`, `imported-data-review`.

اتّفقوا على تصنيف موحّد في العيادة — تكاثر الوسوم العشوائية أسوأ
من عدم وجود وسوم.

## التطبيق / الإزالة الجماعية [#التطبيق--الإزالة-الجماعية]

في صفحة **العملاء**، حدّد صفوفاً متعدّدة، واضغط **إجراءات
جماعية → إضافة/إزالة وسوم**. مفيد بعد الاستيراد: طبّق
`imported-YYYY-MM` على الدفعة كاملة.

## الوسوم التلقائية [#الوسوم-التلقائية]

تظهر بعض الوسوم تلقائياً:

* `imported-on-YYYY-MM-DD` — يُضيفه مسار
  [الاستيراد](/ar/docs/receptionist/import-clients).
* `no-show-in-last-30-days` — يُضاف ليلياً إذا حدث عدم حضور
  خلال هذه النافذة.

تستطيع إزالتها يدوياً، لكن ميديسينك سيعيد تطبيقها إذا كان الشرط
لا يزال صحيحاً.

***

**مقالات المساعدة داخل التطبيق:** لا توجد مقالة مكرّسة للوسوم بعد.


# التواصل مع الدعم (/ar/docs/reference/contact-support)



# التواصل مع دعم ميديسينك [#التواصل-مع-دعم-ميديسينك]

أسرع طريق يعتمد على من تكون وعلى المشكلة.

## العملاء [#العملاء]

لأيّ شيء يخصّ **مواعيدك** أو فواتيرك أو سجلاتك، تواصل مع عيادتك
مباشرة. هاتفها وبريدها موجودان في
[app.medisync-solutions.com](https://app.medisync-solutions.com)
تحت **عن عيادتك**.

لمشكلة في بوابة العملاء نفسها (تسجيل الدخول، المصادقة الثنائية،
إلخ)، راسلنا على &#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)**.

## موظفو العيادة (الاستقبال، الممارسون) [#موظفو-العيادة-الاستقبال-الممارسون]

اسأل **مسؤول عيادتك** أولاً — يستطيع إعادة تعيين كلمات المرور،
وتغيير الأدوار، وفتح الوحدات، وحلّ معظم القضايا اليومية دون
الحاجة إلى دعم ميديسينك.

إن لم يستطع المسؤول المساعدة، راسل
&#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)** مع:

* اسم عيادتك والرابط الذي تستخدمه لتسجيل الدخول.
* بريد الحساب الذي تسجّل الدخول به.
* وصف قصير للمشكلة.
* لقطات شاشة إن كانت المشكلة مرئية.
* وقت حدوثها تقريبياً (الوقت المحلي يكفي).

## مسؤولو العيادة [#مسؤولو-العيادة]

للمسؤولين نموذج دعم مدمج في التطبيق:

1. سجّل الدخول في
   [admin.medisync-solutions.com](https://admin.medisync-solutions.com).
2. اضغط أيقونة &#x2A;*؟** في أعلى اليسار.
3. اختر **التواصل مع الدعم**.
4. اختر فئة، واكتب رسالتك، وأرفق الملفات إن لزم.

استخدام النموذج المدمج يعني أن طلبك يحمل تلقائياً معرّف مؤسستك
ومستوى خطّتك والصفحة التي كنت عليها — نستطيع المساعدة أسرع.

تستطيع أيضاً مراسلة &#x2A;*[support@medisync-solutions.com](mailto:support@medisync-solutions.com)** إن لم
يعمل النموذج المدمج (مثلاً، لا تستطيع تسجيل الدخول).

## أوقات الاستجابة [#أوقات-الاستجابة]

| الخطة     | مهلة أوّل ردّ                             |
| --------- | ----------------------------------------- |
| التجريبية | أفضل جهد (عادةً خلال يوم عمل)             |
| المبتدئة  | يوم عمل واحد                              |
| العيادة   | نفس يوم العمل                             |
| المجموعة  | 4 ساعات عمل، و24/7 للحوادث عالية الأولوية |

ساعات العمل من 9 إلى 18 بالتوقيت المحلي لعيادتك، من الأحد إلى
الخميس (منطقة الخليج) أو من الاثنين إلى الجمعة (المناطق الأخرى).

## قضايا الأمن [#قضايا-الأمن]

إن كنت تعتقد أنك اكتشفت ثغرة أمنية، راسل
&#x2A;*[security@medisync-solutions.com](mailto:security@medisync-solutions.com)** بدلاً من support@ — نعالجها
بشكل منفصل ونعطيها الأولوية.

## صفحة الحالة [#صفحة-الحالة]

تُنشر الحوادث الكبرى والصيانة المجدولة على
**status.medisync-solutions.com**. تحقّق منها قبل فتح طلب دعم —
إن كانت الحالة **قيد التحقيق** أو **محدّدة**، فنحن نعمل عليها.


# الأسئلة الشائعة (/ar/docs/reference/faq)



# الأسئلة الشائعة [#الأسئلة-الشائعة]

## الحسابات وتسجيل الدخول [#الحسابات-وتسجيل-الدخول]

### أنا مغلق خارج حسابي. [#أنا-مغلق-خارج-حسابي]

اتّبع [مسار نسيت كلمة المرور](/ar/docs/getting-started/sign-in). إن
لم ينجح، تواصل مع مسؤول عيادتك — يستطيع إعادة تعيين حسابك.

### هل يستطيع شخص واحد امتلاك حسابين؟ [#هل-يستطيع-شخص-واحد-امتلاك-حسابين]

لا — يفرض ميديسينك حساباً واحداً لكل بريد إلكتروني. إن كنت تعمل في
عيادتين تستخدمان ميديسينك، اطلب من كل منهما دعوتك ببريد مختلف.

### هل أستطيع تغيير بريدي الإلكتروني؟ [#هل-أستطيع-تغيير-بريدي-الإلكتروني]

نعم — **الحساب → الملف الشخصي → البريد الإلكتروني**. يرسل ميديسينك
رمز تحقّق إلى العنوان الجديد؛ أدخله للتأكيد.

### هل يدعم ميديسينك تسجيل الدخول الموحّد (SSO)? [#هل-يدعم-ميديسينك-تسجيل-الدخول-الموحّد-sso]

تسجيل الدخول بجوجل متاح لجميع المستخدمين إذا فعّله مسؤول العيادة.
الـ SSO المبني على SAML لخطط المؤسّسات على خارطة الطريق.

## العملاء والمواعيد [#العملاء-والمواعيد]

### كم مدّة الحجز المسبق؟ [#كم-مدّة-الحجز-المسبق]

يحدّد مسؤول عيادتك نافذة الحجز المسبقة القصوى — عادةً 30 أو 60 أو
90 يوماً. انظر
[مسؤول العيادة → الوحدات](/ar/docs/clinic-admin/modules).

### ماذا يحدث عند إلغاء متأخّر من العميل؟ [#ماذا-يحدث-عند-إلغاء-متأخّر-من-العميل]

إذا ألغى داخل نافذة الإلغاء، يُحتسب إلغاءً متأخّراً وقد يُطلق رسماً.
الإلغاءات التي تصدر عنك (العيادة) لا تعاقب العميل أبداً. انظر
[إعادة الجدولة / الإلغاء](/ar/docs/receptionist/reschedule-cancel).

### هل أستطيع دمج سجلات العملاء المكرّرة؟ [#هل-أستطيع-دمج-سجلات-العملاء-المكرّرة]

يستطيع المسؤولون دمج التكرارات عبر
**العملاء → المزيد → العثور على التكرارات → دمج**. يستطيع موظفو
الاستقبال وسم التكرارات للمسؤول.

## الفوترة [#الفوترة]

### كيف تُطبَّق تغييرات الخطّة؟ [#كيف-تُطبَّق-تغييرات-الخطّة]

تُطبَّق الترقيات فوراً مع رسم متناسب. تُطبَّق التخفيضات في نهاية
فترة الفوترة الحالية، فلا تفقد الوصول في منتصف الشهر.

### هل أستطيع الحصول على فاتورة الشهر الماضي؟ [#هل-أستطيع-الحصول-على-فاتورة-الشهر-الماضي]

كل الفواتير في **المؤسسة → الفوترة → الفواتير**. حمّل أيّ منها
كـ PDF.

### ماذا يحدث إذا فشل الدفع؟ [#ماذا-يحدث-إذا-فشل-الدفع]

يُعيد ميديسينك المحاولة تلقائياً لعدة أيام. بعد ثلاث محاولات فاشلة،
تُوقَف المؤسسة — ادفع الفاتورة المتأخّرة للعودة للعمل خلال دقيقة.

## البيانات والخصوصية [#البيانات-والخصوصية]

### أين تُخزَّن بيانات عيادتنا؟ [#أين-تُخزَّن-بيانات-عيادتنا]

يستضيف ميديسينك البيانات في المنطقة الأقرب إلى المنطقة الزمنية
لعيادتك. المناطق المحدّدة وشهادات الامتثال في صفحة المنتج.

### هل أستطيع تصدير بيانات عيادتنا؟ [#هل-أستطيع-تصدير-بيانات-عيادتنا]

نعم — يستطيع المسؤولون تصدير قوائم العملاء والمواعيد والملاحظات من
داخل كل قسم. لتصدير كامل للنظام، تواصل مع
[الدعم](/ar/docs/reference/contact-support).

### هل سجلات العملاء مشفّرة؟ [#هل-سجلات-العملاء-مشفّرة]

نعم — أثناء النقل (HTTPS / TLS 1.3) وفي الراحة (AES-256).

## اللغات [#اللغات]

### هل يعمل ميديسينك بالعربية؟ [#هل-يعمل-ميديسينك-بالعربية]

نعم — لوحة الموظفين وبوابة العملاء تدعمان الإنجليزية والعربية مع
تخطيط كامل من اليمين إلى اليسار. اضبط الافتراضي في
**المؤسسة → عام → اللغة الافتراضية**؛ يستطيع كل مستخدم تجاوزه في
ملفه الشخصي.

### هل تحترم تذكيرات الرسائل والبريد لغة العميل؟ [#هل-تحترم-تذكيرات-الرسائل-والبريد-لغة-العميل]

نعم — لكل عميل حقل **اللغة المفضّلة** يُلتقط في الإدخال. تستخدم
الرسائل التي يتلقّاها هذه اللغة.


# الموقع التسويقي (/ar/docs/reference/marketing-site)



# الموقع التسويقي لـ MediSync [#الموقع-التسويقي-لـ-medisync]

صفحة الهبوط العامة المتاحة على المسار الجذر (`/` في تطبيق
`landing-page`) هي الواجهة التسويقية لـ MediSync. وهي مترجمة بالكامل
وتُعرض بالإنجليزية والعربية (من اليمين إلى اليسار).

## الأقسام [#الأقسام]

تتكوّن الصفحة من الأقسام التالية، من الأعلى إلى الأسفل:

* **شريط التنقّل** — روابط مرساة بالإضافة إلى تسجيل الدخول وزر "احجز عرضاً توضيحياً".
* **القسم الرئيسي (Hero)** — العنوان والوصف وأزرار الإجراء الأساسية "احجز عرضاً توضيحياً" / "كن شريكاً".
* **سحابة الشعارات** — شعارات الجهات الموثوقة.
* **شريط الإحصاءات** — مقاييس متحرّكة بعدّاد تصاعدي.
* **المميزات** — وحدات المنتج معروضة كشبكة مميزات (`#features`).
* **كيف يعمل** — نظرة عامة من ثلاث خطوات للبدء (`#how-it-works`).
* **آراء العملاء** — اقتباسات العملاء (`#testimonials`).
* **الأسعار** — ثلاث باقات مع مفتاح تبديل بين الفوترة الشهرية والسنوية (`#pricing`).
* **الإجراء الختامي** — شريط التحويل النهائي.
* **التذييل** — أعمدة الروابط والمعلومات القانونية.

## تعديل النصوص [#تعديل-النصوص]

جميع النصوص الظاهرة قابلة للترجمة. توجد السلاسل في `messages/en.json`
و`messages/ar.json` ضمن مساحة الأسماء `landing_*` (على سبيل المثال
`landing_hero_title` و`landing_pricing_most_popular`). عدّل كلا الملفين
للحفاظ على تطابق الإنجليزية والعربية، ثم أعد تجميع كتالوجات الرسائل.


# حل المشكلات (/ar/docs/reference/troubleshooting)



# حل المشكلات [#حل-المشكلات]

اتّبع الخطوات بالترتيب — كل خطوة تستبعد سبباً شائعاً.

## لا أستطيع تسجيل الدخول [#لا-أستطيع-تسجيل-الدخول]

1. **تحقّق من الإملاء.** أعد كتابة بريدك بعناية؛ البريد غير حسّاس
   لحالة الأحرف لكن الأخطاء الإملائية صامتة.
2. **Caps Lock.** هل كلمة المرور بنفس حالة الأحرف التي عيّنتها؟
3. **مسار نسيت كلمة المرور.** راجع
   [تسجيل الدخول → نسيت](/ar/docs/getting-started/sign-in).
4. **ذاكرة المتصفح.** افتح نافذة تصفح خاصة / متخفّية وجرّب. إن
   نجحت، امسح كوكيز `medisync-solutions.com`.
5. **البوابة الخاطئة.** موظفو العيادة يسجّلون في &#x2A;*staff.**؛
   والمسؤولون في &#x2A;*admin.**؛ والعملاء في &#x2A;*app.**. البوابة الخاطئة
   تعرض «الحساب غير موجود» حتى مع البيانات الصحيحة.
6. **الحساب موقوف.** إذا فشل الدفع، تُقفل العيادة بأكملها حتى
   تُسدَّد الفاتورة. اسأل المسؤول.

## لا تصل رسالة إعادة التعيين [#لا-تصل-رسالة-إعادة-التعيين]

* تحقّق من مجلد الرسائل المزعجة.
* انتظر حتى 5 دقائق — بعض أنظمة البريد بطيئة.
* تأكّد من أن البريد الذي أدخلته يطابق المسجّل في حسابك.
* أضف `no-reply@medisync-solutions.com` إلى جهات الاتصال.
* اطلب من المسؤول إعادة إرسال الدعوة، التي تُنشئ رابط إعداد جديد
  أيضاً.

## رمز المصادقة الثنائية لا يعمل [#رمز-المصادقة-الثنائية-لا-يعمل]

* **انزياح الوقت.** تعتمد رموز تطبيق المصادقة على ساعة الجهاز.
  على أندرويد / آي أو إس ← الإعدادات ← التاريخ والوقت ← ضبط
  تلقائي.
* **إدخال خاطئ.** أضفت ميديسينك لحساب مختلف. جرّب رمز استرداد
  (تم توليده عند إعداد المصادقة الثنائية).
* **فقدان الجهاز.** رموز الاسترداد أولاً؛ إن فُقدت أيضاً، يستطيع
  مسؤول عيادتك إعادة تعيين المصادقة الثنائية على حسابك.

## لم تُحفظ تغييراتي [#لم-تُحفظ-تغييراتي]

* ابحث عن شريط أصفر «جارٍ الحفظ...» أو أحمر «فشل الحفظ» في
  الأعلى — قد يكون هناك خطأ تحقّق (حقل إلزامي ناقص).
* تحقّق من اتصالك. يُظهر ميديسينك شريط **غير متّصل** عند فقدان
  الاتصال؛ تُحفظ التغييرات في طابور وتُعاد المحاولة عند العودة.
* إن رأيت شريط تعارض 409، فقد حرّر شخص آخر نفس السجلّ — أعد
  التحميل لرؤية تغييراته ثم أعد تغييراتك.

## المواعيد تبدو خاطئة [#المواعيد-تبدو-خاطئة]

* **منطقة زمنية خاطئة.** تحقّق من
  **المؤسسة → عام → المنطقة الزمنية**. كل الأوقات في العيادة
  تشتقّ من هذا الإعداد الوحيد.
* **عدم تطابق اليوم.** إذا ظهرت مواعيد الثلاثاء يوم الاثنين،
  فمتصفحك في منطقة زمنية مختلفة عن العيادة — يعرض ميديسينك وقت
  العيادة، فالتقويم صحيح لكن «الوقت على الهاتف» قد يشعر بأنه خطأ
  للموظفين في منطقة أخرى.

## العملاء لا يستقبلون الرسائل القصيرة [#العملاء-لا-يستقبلون-الرسائل-القصيرة]

* تحقّق من احتواء الهاتف على رمز البلد (`+`).
* أكّد أن وحدة الإشعارات مفعّلة ولديها رصيد لمنطقتك.
* تحجب بعض شركات الرسائل القصيرة الأرقام لأسباب خارج تحكّمنا
  (تجوال، قوائم حجب جماعية) — اسأل العميل أن يتأكّد من قدرته
  على تلقّي الرسائل القصيرة من الأرقام القصيرة.

## بوابة العملاء فارغة [#بوابة-العملاء-فارغة]

حساب العميل الجديد لا يُربط تلقائياً بسجلّ عيادتك حتى يربطه موظف
عند الزيارة الأولى. حتى ذلك الحين تعرض البوابة عنصراً نائباً.

## لا أجد ميزة تذكرها الوثائق [#لا-أجد-ميزة-تذكرها-الوثائق]

* **ميزة مغلقة بالوحدات.** إذا ذكرت الوثائق «الفواتير» ولا ترى
  صفحة الفوترة، فمسؤولك أوقف وحدة الفوترة.
* **الدور يفتقر للصلاحية.** بعض الميزات (التحليلات، الفوترة)
  مقتصرة على المسؤول افتراضياً. اطلب من المسؤول منحك الصلاحية.

## ما زلت عالقاً [#ما-زلت-عالقاً]

[تواصل مع الدعم](/ar/docs/reference/contact-support) مع:

* ما الذي كنت تحاول فعله.
* ما الذي رأيته بدلاً من ذلك.
* الوقت (تقريبياً) — يساعدنا في إيجاد سجلّ الطلب ذي الصلة.
* لقطة شاشة إن أمكن.
