From 231ce793bcf3f5fa97708bc71c3fbe40091d64e0 Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Mon, 10 Aug 2026 14:10:26 +0330 Subject: [PATCH] Add user guides for clinic management roles in Persian - Create README.md for user guides covering roles: independent doctor, clinic owner, clinic manager, secretary, and staff. - Add detailed step-by-step guides for setting up and managing clinics for clinic managers and clinic owners. - Include instructions for independent doctors on setting up their practice. - Provide a comprehensive guide for secretaries on daily operations and patient management. - Introduce staff guide for nurses and technicians on session management. --- .claude/skills/qa-clinicpro/guide-shots.mjs | 283 +++++++++++++++ .gitignore | 3 + docs/guide/README.md | 44 +++ docs/guide/clinic-manager.md | 217 ++++++++++++ docs/guide/clinic-owner-doctor.md | 236 +++++++++++++ docs/guide/independent-doctor.md | 364 ++++++++++++++++++++ docs/guide/secretary.md | 188 ++++++++++ docs/guide/staff.md | 77 +++++ 8 files changed, 1412 insertions(+) create mode 100644 .claude/skills/qa-clinicpro/guide-shots.mjs create mode 100644 docs/guide/README.md create mode 100644 docs/guide/clinic-manager.md create mode 100644 docs/guide/clinic-owner-doctor.md create mode 100644 docs/guide/independent-doctor.md create mode 100644 docs/guide/secretary.md create mode 100644 docs/guide/staff.md diff --git a/.claude/skills/qa-clinicpro/guide-shots.mjs b/.claude/skills/qa-clinicpro/guide-shots.mjs new file mode 100644 index 00000000..813a6c22 --- /dev/null +++ b/.claude/skills/qa-clinicpro/guide-shots.mjs @@ -0,0 +1,283 @@ +#!/usr/bin/env node +/** + * guide-shots.mjs — تصویربردار راهنمای کاربری. + * + * برای هر نقش لاگین می‌کند، فهرست صفحاتش را می‌پیماید و از هرکدام یک PNG می‌گیرد. + * خروجی: //.png به‌همراه shots.json که ترتیب و عنوان‌ها را + * برای متن راهنما نگه می‌دارد. + * + * node guide-shots.mjs --role clinic-owner --out /tmp/guide + * node guide-shots.mjs --all --out /tmp/guide + * + * وابستگی ندارد: Node 22 با WebSocket سراسری مستقیم با CDP حرف می‌زند. + */ +import { spawn } from 'node:child_process'; +import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +const BASE = process.env.CLINICPRO_BASE ?? 'https://clinic-pro.ddev.site'; +const CHROME = process.env.CHROME_BIN + ?? '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'; +const PASSWORD = process.env.GUIDE_PASSWORD ?? 'QaTest@1234'; +const PORT = Number(process.env.CDP_PORT ?? 9500); +process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + +/** + * پنج شخصیتِ راهنما. هر صفحه یک گام از داستانِ همان نقش است، پس ترتیب مهم است و + * الفبایی نیست: کاربر تازه‌وارد از داشبورد شروع می‌کند، نه از تنظیمات. + */ +const ROLES = { + 'independent-doctor': { + title: 'پزشک مستقل', + mobile: '0912000101', + pages: [ + ['dashboard', 'داشبورد'], + ['appointments', 'نوبت‌های امروز'], + ['appointments/new', 'ثبت نوبت جدید'], + ['patients', 'پرونده‌ها'], + ['my-patients', 'بیماران من'], + ['clinic-services', 'سرویس‌ها'], + ['service-categories', 'دسته‌بندی سرویس‌ها'], + ['insurance-pricing', 'بیمه و تعرفه'], + ['my-payments', 'پرداخت‌ها'], + ['claims', 'مطالبات بیمه'], + ['treatment-cases', 'دوره‌های درمان'], + ['resources', 'منابع'], + ['inventory', 'انبارداری'], + ['my-secretaries', 'منشی‌ها'], + ['staff', 'پرسنل'], + ['settings-menu', 'تنظیمات'], + ['appointment-settings', 'تنظیمات نوبت‌دهی'], + ['holidays', 'تعطیلات'], + ['record-number-settings', 'شمارهٔ پرونده'], + ['tags-settings', 'برچسب‌ها'], + ['sms-wallet', 'کیف پول پیامک'], + ['subscription', 'اشتراک'], + ['discounts', 'تخفیف‌ها'], + ['profile', 'پروفایل پزشک'], + ['account-settings', 'حساب کاربری'], + ], + }, + 'clinic-owner-doctor': { + title: 'پزشکی که کلینیک دارد', + mobile: '0912000201', + // این حساب هم مطب شخصی دارد هم کلینیک، پس اپ اول «انتخاب محیط» می‌پرسد. + context: 'کلینیک', + pages: [ + ['dashboard', 'داشبورد'], + ['appointments', 'نوبت‌های کلینیک'], + ['my-clinic', 'کلینیک من'], + ['settings/clinic-doctors', 'پزشکان کلینیک'], + ['settings/appointment-settings', 'نوبت‌دهی کلینیک'], + ['settings/practice-domain', 'حوزهٔ فعالیت'], + ['clinic-services', 'سرویس‌های کلینیک'], + ['resources', 'منابع'], + ['resources/types', 'نوع منابع'], + ['resources/pools', 'استخر منابع'], + ['resources/skills', 'مهارت‌ها'], + ['staff', 'پرسنل'], + ['my-secretaries', 'منشی‌ها'], + ['patients', 'پرونده‌ها'], + ['treatment-cases', 'دوره‌های درمان'], + ['my-payments', 'پرداخت‌ها'], + ['my-financial', 'مدیریت پرداخت'], + ['claims', 'مطالبات بیمه'], + ['inventory', 'انبارداری'], + ['settings-menu', 'تنظیمات'], + ['subscription', 'اشتراک'], + ], + }, + 'clinic-manager': { + title: 'مدیر کلینیک', + mobile: '0912000301', + pages: [ + ['dashboard', 'داشبورد'], + ['appointments', 'نوبت‌های درمانگاه'], + ['my-clinic', 'کلینیک من'], + ['settings/clinic-doctors', 'پزشکان'], + ['settings/appointment-settings', 'نوبت‌دهی'], + ['clinic-services', 'سرویس‌ها'], + ['service-categories', 'دسته‌بندی‌ها'], + ['resources', 'منابع'], + ['staff', 'پرسنل'], + ['my-secretaries', 'منشی‌ها'], + ['patients', 'پرونده‌ها'], + ['my-payments', 'پرداخت‌ها'], + ['claims', 'مطالبات بیمه'], + ['insurance-pricing', 'بیمه و تعرفه'], + ['inventory', 'انبارداری'], + ['treatment-cases', 'دوره‌های درمان'], + ['settings-menu', 'تنظیمات'], + ['sms-wallet', 'کیف پول پیامک'], + ['subscription', 'اشتراک'], + ], + }, + secretary: { + title: 'منشی', + mobile: '0912000209', + pages: [ + ['appointments', 'نوبت‌ها'], + ['appointments/new', 'ثبت نوبت'], + ['appointments/reserve', 'نوبت رزرو'], + ['patients', 'پرونده‌ها'], + ['patients/new', 'تشکیل پرونده'], + ['my-payments', 'پرداخت‌ها'], + ['claims', 'مطالبات بیمه'], + ['treatment-cases', 'دوره‌های درمان'], + ['secretary-earnings', 'درآمد من'], + ['secretary-settlement', 'تسویه حساب'], + ['account-settings', 'حساب کاربری'], + ], + }, + staff: { + title: 'پرسنل', + mobile: '09120002105', + pages: [ + ['my-sessions', 'جلسات امروز من'], + ['account-settings', 'حساب کاربری'], + ], + }, +}; + +const args = process.argv.slice(2); +const argOf = (name, fallback = null) => { + const i = args.indexOf(`--${name}`); + return i === -1 ? fallback : args[i + 1]; +}; +const OUT = argOf('out', '/tmp/guide'); +const WIDTH = Number(argOf('w', 1440)); +const HEIGHT = Number(argOf('h', 900)); +const WAIT = Number(argOf('wait', 3500)); +const wanted = args.includes('--all') ? Object.keys(ROLES) : [argOf('role')].filter(Boolean); + +if (wanted.length === 0) { + console.error('استفاده: --role یا --all'); + console.error('نقش‌ها: ' + Object.keys(ROLES).join(', ')); + process.exit(1); +} + +async function login(mobile) { + const res = await fetch(`${BASE}/api/v1/user/login`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ mobile_number: mobile, password: PASSWORD }), + }); + const body = await res.json(); + if (!body.access_token) { + throw new Error(`ورود ${mobile} ناموفق: ${JSON.stringify(body).slice(0, 160)}`); + } + return body; +} + +async function cdpUrl() { + for (let i = 0; i < 50; i++) { + try { + const r = await fetch(`http://127.0.0.1:${PORT}/json/version`); + return (await r.json()).webSocketDebuggerUrl; + } catch { await new Promise((r) => setTimeout(r, 300)); } + } + throw new Error('Chrome بالا نیامد'); +} + +const chrome = spawn(CHROME, [ + '--headless=new', '--disable-gpu', '--no-sandbox', '--hide-scrollbars', + '--ignore-certificate-errors', '--force-device-scale-factor=2', + `--remote-debugging-port=${PORT}`, `--user-data-dir=/tmp/guide-shots-${process.pid}`, + `--window-size=${WIDTH},${HEIGHT}`, 'about:blank', +], { stdio: 'ignore' }); + +const ws = new WebSocket(await cdpUrl()); +await new Promise((r) => ws.addEventListener('open', r, { once: true })); + +let msgId = 0; +const pending = new Map(); +ws.addEventListener('message', (e) => { + const m = JSON.parse(e.data); + if (m.id && pending.has(m.id)) { pending.get(m.id)(m.result); pending.delete(m.id); } +}); +const rpc = (method, params, sessionId) => new Promise((resolve) => { + const id = ++msgId; + pending.set(id, resolve); + ws.send(JSON.stringify({ id, method, params, sessionId })); +}); + +const { targetId } = await rpc('Target.createTarget', { url: 'about:blank' }); +const { sessionId } = await rpc('Target.attachToTarget', { targetId, flatten: true }); +const S = (m, p) => rpc(m, p, sessionId); +await S('Page.enable'); +await S('Runtime.enable'); +const evalJs = async (expression) => { + const { result } = await S('Runtime.evaluate', { expression, returnByValue: true, awaitPromise: true }); + return result?.value; +}; + +// اجرای تک‌نقشی نباید فهرست نقش‌های قبلی را پاک کند. +const manifestPath = join(OUT, 'shots.json'); +const manifest = existsSync(manifestPath) + ? JSON.parse(readFileSync(manifestPath, 'utf8')) + : {}; + +for (const roleKey of wanted) { + const role = ROLES[roleKey]; + const dir = join(OUT, roleKey); + mkdirSync(dir, { recursive: true }); + + const { access_token, refresh_token } = await login(role.mobile); + + // localStorage به origin وابسته است؛ اول باید روی همان دامنه باشیم. + await S('Page.navigate', { url: `${BASE}/admin/login` }); + await new Promise((r) => setTimeout(r, 1500)); + await evalJs(`localStorage.setItem('clinicpro-auth', ${JSON.stringify(JSON.stringify({ + state: { token: access_token, refreshToken: refresh_token, isAuthenticated: true }, version: 0, + }))}); + localStorage.setItem('pwa-dismissed','1'); + // تور راهنما روی تصویرها می‌افتد و متنِ خودِ راهنما را می‌پوشاند. + localStorage.setItem('clinicpro-tours-suppress','1');`); + + // حسابِ چندمحیطی تا محیطش را انتخاب نکند، هر مسیری به «انتخاب محیط» می‌رود. + if (role.context) { + await S('Page.navigate', { url: `${BASE}/admin/select-context` }); + await new Promise((r) => setTimeout(r, 2500)); + const picked = await evalJs(`(() => { + const btn = [...document.querySelectorAll('button')] + .find(b => b.textContent.includes(${JSON.stringify(role.context)})); + if (!btn) return false; + btn.click(); + return btn.textContent.trim().slice(0, 60); + })()`); + await new Promise((r) => setTimeout(r, 2500)); + console.log(` محیط انتخاب شد: ${picked || 'پیدا نشد ⚠'}`); + } + + manifest[roleKey] = { title: role.title, mobile: role.mobile, shots: [] }; + console.log(`\n### ${role.title} (${role.mobile})`); + + for (const [index, [path, label]] of role.pages.entries()) { + const file = `${String(index + 1).padStart(2, '0')}-${path.replace(/\//g, '-')}.png`; + await S('Page.navigate', { url: `${BASE}/admin/${path}` }); + await new Promise((r) => setTimeout(r, WAIT)); + + // تور خودکار روی صفحه می‌نشیند؛ بسته می‌شود تا تصویر خودِ صفحه را نشان دهد. + await evalJs(`(() => { + const close = document.querySelector('.driver-popover-close-btn'); + if (close) close.click(); + })()`); + await new Promise((r) => setTimeout(r, 400)); + + const landed = await evalJs('location.pathname'); + const empty = await evalJs('(document.body.innerText || "").trim().length < 40'); + const shot = await S('Page.captureScreenshot', { format: 'png' }); + writeFileSync(join(dir, file), Buffer.from(shot.data, 'base64')); + + const note = landed.endsWith(path) ? '' : ` (منتقل شد به ${landed})`; + console.log(` ${empty ? '⚠' : '✓'} ${label} → ${file}${note}`); + manifest[roleKey].shots.push({ file, path, label, landed, empty }); + } +} + +mkdirSync(OUT, { recursive: true }); +writeFileSync(manifestPath, JSON.stringify(manifest, null, 2)); +console.log(`\nفهرست: ${manifestPath}`); + +ws.close(); +chrome.kill(); diff --git a/.gitignore b/.gitignore index 33260e49..37d5dd21 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,6 @@ clinicpro/* # Database backups (never commit dumps to the repo) *.sql *.sql.gz + +# اسکرین‌شات‌های راهنمای کاربری — با guide-shots.mjs بازتولید می‌شوند و ۱۷ مگابایت‌اند +docs/guide/images/ diff --git a/docs/guide/README.md b/docs/guide/README.md new file mode 100644 index 00000000..7c2d8042 --- /dev/null +++ b/docs/guide/README.md @@ -0,0 +1,44 @@ +# راهنمای کاربری کلینیک‌پرو + +این پوشه متنِ مرجعِ راهنمای کاربری است. هر فایل یک نقش را از صفر تا صد پوشش می‌دهد و +همان متنی است که نسخهٔ وبلاگی از رویش ساخته می‌شود. + +## راهنماها + +| نقش | برای چه کسی | فایل | +|---|---|---| +| پزشک مستقل | پزشکی که مطب شخصی دارد و خودش همه‌چیز را می‌چیند | [independent-doctor.md](independent-doctor.md) | +| پزشکِ صاحب کلینیک | پزشکی که علاوه بر مطب، کلینیک هم دارد و پزشکان دیگر عضو آن‌اند | [clinic-owner-doctor.md](clinic-owner-doctor.md) | +| مدیر کلینیک | مدیر غیرپزشکِ یک درمانگاه | [clinic-manager.md](clinic-manager.md) | +| منشی | کسی که نوبت می‌گیرد، پرونده می‌سازد و پول می‌گیرد | [secretary.md](secretary.md) | +| پرسنل | پرستار یا تکنسینی که جلسهٔ درمان را انجام می‌دهد | [staff.md](staff.md) | + +## چطور به‌روز نگه داشته می‌شود + +تصویرها دستی گرفته نمی‌شوند. اسکریپت زیر برای هر نقش لاگین می‌کند، صفحاتش را می‌پیماید +و از هرکدام یک تصویر رتینا می‌گیرد: + +```bash +node .claude/skills/qa-clinicpro/guide-shots.mjs --all --out /tmp/guide +``` + +خروجی کنارِ تصویرها یک `shots.json` می‌گذارد که ترتیب، عنوان فارسی، مسیر واقعیِ +فرودآمده و «خالی بودن یا نبودن» هر صفحه را نگه می‌دارد. هر صفحه‌ای که به مسیر دیگری +منتقل شود در همان فایل علامت می‌خورد — همان‌طور که برای `my-clinic` و +`patients/new` منشی افتاد. + +تصویرها از محیط محلی با دادهٔ ساختگیِ `app:seed-scenarios` گرفته می‌شوند، نه از +محیط عملیاتی. هیچ نام، موبایل یا مبلغ واقعیِ بیمار در راهنما منتشر نمی‌شود. + +## حساب‌های نمونه + +همهٔ حساب‌های زیر محلی‌اند و رمزشان `QaTest@1234` است. روی محیط عملیاتی وجود ندارند. + +| نقش | موبایل | +|---|---| +| پزشک مستقل — دکتر سارا مرادی | `0912000101` | +| پزشک صاحب کلینیک — دکتر امیر کاظمی | `0912000201` | +| پزشک عضو کلینیک — دکتر نگار سلطانی | `0912000202` | +| مدیر کلینیک — رضا شریفی | `0912000301` | +| منشی کلینیک | `0912000209` | +| پرسنل — مریم رستمی | `09120002105` | diff --git a/docs/guide/clinic-manager.md b/docs/guide/clinic-manager.md new file mode 100644 index 00000000..7967c5b0 --- /dev/null +++ b/docs/guide/clinic-manager.md @@ -0,0 +1,217 @@ +# راه‌اندازی درمانگاه برای مدیر کلینیک — قدم به قدم + +تو پزشک نیستی ولی درمانگاه را می‌گردانی: پزشک می‌آوری، منشی می‌گیری، تعرفه می‌بندی و +پول را پیگیری می‌کنی. + +این راهنما از اولین ورود تا روزی می‌رود که چند پزشک روی یک تقویم کار می‌کنند و گزارش +مالی درمی‌آید. نه قدم است. + +اگر خودت هم ویزیت می‌کنی، مسیرت یک تفاوت دارد و آن انتخاب محیط است: +[راه‌اندازی کلینیک برای پزشکِ صاحب کلینیک](clinic-owner-doctor.md). + +--- + +## قدم ۰ — اولین ورود + +![داشبورد](images/clinic-manager/01-dashboard.png) + +چون فقط یک محیط داری، مستقیم وارد داشبورد درمانگاه می‌شوی و صفحهٔ «انتخاب محیط» را +نمی‌بینی. + +روز اول همه‌چیز صفر است. + +**قدم بعد:** بدون پزشک هیچ‌چیز کار نمی‌کند، پس از آن شروع کن. + +--- + +## قدم ۱ — دعوت پزشکان + +مسیر: تنظیمات ← پزشکان + +![پزشکان](images/clinic-manager/04-settings-clinic-doctors.png) + +پزشک را با شمارهٔ موبایلش دعوت می‌کنی. تا دعوت را نپذیرد عضو نمی‌شود. + +بعد از پذیرش، **خودِ پزشک** باید برنامهٔ هفتگی‌اش را بچیند. تو نمی‌توانی جایش این کار +را بکنی. تا آن را نچیند، در فهرست هست ولی ساعت آزادی ندارد و بیمار نمی‌تواند نوبت +بگیرد — این متداول‌ترین گیر روزهای اول است. + +> در منو، «کلینیک من» به همین صفحه می‌رسد. + +**قدم بعد:** قواعد نوبت‌دهی. + +--- + +## قدم ۲ — قواعد نوبت‌دهی درمانگاه + +مسیر: تنظیمات ← مدیریت نوبت‌دهی + +![نوبت‌دهی](images/clinic-manager/05-settings-appointment-settings.png) + +مهلت لغو، بازهٔ مجاز رزرو و پیش‌فرض‌هایی که همهٔ پزشکان از آن ارث می‌برند. + +**قدم بعد:** فهرست خدمات. + +--- + +## قدم ۳ — دسته‌بندی، بعد سرویس + +**ترتیبش مهم است.** سرویسی که دسته‌بندی ندارد بعداً نمی‌تواند دورهٔ درمان بگیرد، و آن +موقع اصلاحش یعنی دست‌کاری سرویسی که رویش نوبت ثبت شده. + +مسیر: تنظیمات ← دسته‌بندی‌ها + +![دسته‌بندی‌ها](images/clinic-manager/07-service-categories.png) + +مسیر: سرویس‌ها + +![سرویس‌ها](images/clinic-manager/06-clinic-services.png) + +هر سرویس سه چیز می‌خواهد: مدت، تعرفه، دسته‌بندی. مدت طول نوبت را تعیین می‌کند، پس +واقع‌بینانه بزن. + +سرویس‌ها به درمانگاه تعلق دارند نه به پزشک؛ یک بار می‌سازی و همه استفاده می‌کنند. + +**قدم بعد:** اگر بیمه می‌پذیری. + +--- + +## قدم ۴ — بیمه و تعرفه + +مسیر: تنظیمات ← مدیریت بیمه + +![بیمه و تعرفه](images/clinic-manager/14-insurance-pricing.png) + +برای هر بیمهٔ پایه و تکمیلی درصد پوشش را بزن. سهم بیمار سرِ صندوق از همین اعداد حساب +می‌شود. + +**قدم بعد:** اتاق‌ها و دستگاه‌ها. + +--- + +## قدم ۵ — منابع + +مسیر: منابع + +![منابع](images/clinic-manager/08-resources.png) + +در درمانگاهی که چند پزشک همزمان کار می‌کنند، این تنها راه جلوگیری از تداخل است. هر +اتاق، تخت یا دستگاه یک منبع است و تقویم خودش را دارد. + +**قدم بعد:** تیم. + +--- + +## قدم ۶ — پرسنل + +مسیر: تنظیمات ← پرسنل + +![پرسنل](images/clinic-manager/09-staff.png) + +پرستار و تکنسین را با موبایل و رمز اولیه اضافه می‌کنی و برایشان **مهارت** تعریف می‌کنی. +مهارت تعیین می‌کند هرکس در چه سرویس‌هایی قابل انتخاب باشد. + +هر پرسنل فقط [جلسات خودش](staff.md) را می‌بیند و به اطلاعات مالی دسترسی ندارد. + +**قدم بعد:** منشی. + +--- + +## قدم ۷ — منشی و مجوزهایش + +مسیر: تنظیمات ← مدیریت منشی + +![منشی‌ها](images/clinic-manager/10-my-secretaries.png) + +سه کار پشت سر هم: منشی را اضافه کن، پزشکانش را انتخاب کن، و در پنجره‌ای که بعد از +ذخیره باز می‌شود مجوزهایش را بده. + +مجوزها را دست‌کم نگیر. منشی‌ای که مجوز «ساخت پرونده» ندارد، وقتی روی «تشکیل پرونده» +بزند به داشبورد برمی‌گردد و هیچ پیامی نمی‌بیند. اگر شکایت کرد «کار نمی‌کند»، اول +همین‌جا را نگاه کن. + +**قدم بعد:** حالا درمانگاه آمادهٔ بیمار است. + +--- + +## قدم ۸ — روز کاری + +مسیر: نوبت‌ها + +![نوبت‌ها](images/clinic-manager/02-appointments.png) + +هر پزشک یک تب دارد و تب «همه» تصویر کل روز را می‌دهد. ثبت نوبت، پذیرش و قطعی‌کردن با +پرداخت از همین صفحه انجام می‌شود. + +قطعی‌کردن سه مرحله دارد: بیمه و هزینه، پرداخت، تأیید. پرداخت می‌تواند بین چند روش تقسیم +شود و پرداخت جزئی هم مجاز است. + +مسیر: پرونده بیماران + +![پرونده‌ها](images/clinic-manager/11-patients.png) + +پرونده‌ها متعلق به درمانگاه‌اند. بیماری که پیش دو پزشک مختلف رفته، یک پرونده دارد. + +**قدم بعد:** اگر درمان چندجلسه‌ای داری. + +--- + +## قدم ۹ — دوره‌های درمان + +مسیر: دوره‌های درمان + +![دوره‌های درمان](images/clinic-manager/16-treatment-cases.png) + +برای اینکه دوره خودکار باز شود، سرویس باید پروتکل فعال و دسته‌بندی داشته باشد. بدون +این دو، نوبت قطعی می‌شود ولی دوره‌ای ساخته نمی‌شود و خطایی هم نشان داده نمی‌شود. + +--- + +## بعد از راه‌اندازی: نگاه هفتگی و ماهانه + +![پرداخت‌ها](images/clinic-manager/12-my-payments.png) + +همهٔ صورتحساب‌ها با وضعیتشان و چهار عدد خلاصه در بالا. + +![مطالبات بیمه](images/clinic-manager/13-claims.png) + +طلب درمانگاه از بیمه‌ها. + +![انبارداری](images/clinic-manager/15-inventory.png) + +کالاهای مصرفی، پکیج‌ها و هشدار کمبود. + +![کیف پول پیامک](images/clinic-manager/18-sms-wallet.png) + +یادآوری نوبتِ بیماران از این موجودی کم می‌کند. خالی که شود، پیامک‌ها بی‌صدا قطع +می‌شوند. + +![اشتراک](images/clinic-manager/19-subscription.png) + +پلن درمانگاه سقف منشی، منبع و امکانات را تعیین می‌کند. + +![تنظیمات](images/clinic-manager/17-settings-menu.png) + +نقطهٔ ورود همهٔ تنظیمات. + +--- + +## چک‌لیست + +- [ ] پزشکان دعوت شده و پذیرفته‌اند +- [ ] هر پزشک برنامهٔ هفتگی‌اش را چیده است +- [ ] دسته‌بندی و سرویس‌ها ساخته شده‌اند +- [ ] بیمه‌ها و درصد پوششان وارد شده +- [ ] منابع تعریف شده‌اند +- [ ] پرسنل با مهارت و منشی با مجوز اضافه شده‌اند +- [ ] یک نوبت آزمایشی از ثبت تا پرداخت رفته است + +--- + +## راهنماهای دیگر + +- [پزشکِ صاحب کلینیک](clinic-owner-doctor.md) — اگر خودت هم ویزیت می‌کنی +- [پزشک مستقل](independent-doctor.md) +- [منشی](secretary.md) — همان پنل از نگاه منشیِ تو +- [پرسنل](staff.md) +- [فهرست همهٔ راهنماها](README.md) diff --git a/docs/guide/clinic-owner-doctor.md b/docs/guide/clinic-owner-doctor.md new file mode 100644 index 00000000..54571de9 --- /dev/null +++ b/docs/guide/clinic-owner-doctor.md @@ -0,0 +1,236 @@ +# راه‌اندازی کلینیک برای پزشکِ صاحب کلینیک — قدم به قدم + +تو هم ویزیت می‌کنی و هم کلینیک داری. یعنی باید دو چیز را جدا نگه داری: مطب شخصی‌ات و +کلینیکی که پزشکان دیگر در آن کار می‌کنند. + +این راهنما از اولین ورود شروع می‌شود و تا جایی می‌رود که چند پزشک روی یک تقویم مشترک +کار می‌کنند، منابع تداخل ندارند و پول همه یک‌جا دیده می‌شود. + +اگر خودت ویزیت نمی‌کنی و فقط مدیری، +[راه‌اندازی درمانگاه برای مدیر کلینیک](clinic-manager.md) کوتاه‌تر است. + +--- + +## قدم ۰ — ورود و انتخاب محیط + +اولین تفاوت همین‌جاست. چون هم مطب شخصی داری و هم کلینیک، بعد از ورود از تو می‌پرسد +کدام محیط. + +این یک سؤال ساده نیست؛ کل داده را عوض می‌کند. نوبت‌ها، بیماران، سرویس‌ها و پولِ هر محیط +جدا از دیگری است. بیماری که در کلینیک ثبت کنی در مطب شخصی‌ات دیده نمی‌شود و برعکس. + +![داشبورد کلینیک](images/clinic-owner-doctor/01-dashboard.png) + +برای عوض کردن محیط، از بالای صفحه سمت چپ کنار نامت. + +**بقیهٔ این راهنما فرض می‌کند محیط «کلینیک» را انتخاب کرده‌ای.** برای راه‌اندازی مطب +شخصی‌ات، [راهنمای پزشک مستقل](independent-doctor.md) را جدا برو. + +**قدم بعد:** بگو کلینیک چه‌کاره است. + +--- + +## قدم ۱ — حوزهٔ فعالیت کلینیک + +**چرا اول این:** حوزهٔ فعالیت تعیین می‌کند گردش کار درمان چطور باشد. عوض کردنش بعد از +شروع کار، پرونده‌های ساخته‌شده را سردرگم می‌کند. + +مسیر: تنظیمات ← حوزهٔ فعالیت + +![حوزهٔ فعالیت](images/clinic-owner-doctor/06-settings-practice-domain.png) + +زیبایی، دندان‌پزشکی، فیزیوتراپی. یک بار و درست انتخابش کن. + +**قدم بعد:** پزشکان. + +--- + +## قدم ۲ — دعوت پزشکان + +**چرا:** بدون پزشک، کلینیک تقویم ندارد. این ستون فقرات کار است. + +مسیر: تنظیمات ← پزشکان کلینیک + +![پزشکان کلینیک](images/clinic-owner-doctor/04-settings-clinic-doctors.png) + +پزشک را با شمارهٔ موبایلش دعوت می‌کنی. تا دعوت را نپذیرد، در نوبت‌دهی دیده نمی‌شود. + +بعد از پذیرش، هر پزشک باید **برنامهٔ هفتگی خودش** را بچیند. تا آن را نچیند در فهرست +هست ولی هیچ ساعت آزادی ندارد و بیمار نمی‌تواند نوبت بگیرد. این شایع‌ترین سؤال روزهای +اول است. + +> در منو، «کلینیک من» هم به همین صفحه می‌رسد. + +**قدم بعد:** قواعد مشترک نوبت‌دهی. + +--- + +## قدم ۳ — تنظیمات نوبت‌دهی کلینیک + +مسیر: تنظیمات ← مدیریت نوبت‌دهی + +![نوبت‌دهی کلینیک](images/clinic-owner-doctor/05-settings-appointment-settings.png) + +قواعدی که روی کل کلینیک اثر دارند: مهلت لغو، بازهٔ مجاز رزرو، و پیش‌فرض‌هایی که پزشکان +عضو از آن ارث می‌برند. + +**قدم بعد:** سرویس‌ها. + +--- + +## قدم ۴ — سرویس‌های کلینیک + +**نکتهٔ کلیدی:** سرویس به کلینیک تعلق دارد نه به پزشک. یک بار تعریفش می‌کنی و همهٔ +پزشکان می‌توانند رویش نوبت بدهند. نیازی نیست هر پزشک سرویس‌های خودش را بسازد. + +مسیر: سرویس‌ها + +![سرویس‌های کلینیک](images/clinic-owner-doctor/07-clinic-services.png) + +مثل مطب شخصی، هر سرویس مدت و تعرفه و دسته‌بندی می‌خواهد. اول دسته‌بندی بساز، بعد +سرویس — سرویسِ بدون دسته‌بندی بعداً نمی‌تواند دورهٔ درمان بگیرد. + +**قدم بعد:** اتاق‌ها و دستگاه‌ها. + +--- + +## قدم ۵ — منابع: جایی که کلینیک با مطب فرق می‌کند + +**چرا مهم‌تر از مطب شخصی است:** در مطب فقط وقت تو محدود است. در کلینیک، سه پزشک ممکن +است همزمان یک اتاق یا یک دستگاه بخواهند. بدون تعریف منبع، تداخل حتمی است و کسی هم +جلویش را نمی‌گیرد. + +مسیر: منابع + +![منابع](images/clinic-owner-doctor/08-resources.png) + +هر اتاق، تخت یا دستگاه را به‌عنوان منبع تعریف کن. + +![نوع منابع](images/clinic-owner-doctor/09-resources-types.png) + +اول نوعشان را بساز: اتاق عمل، یونیت، دستگاه لیزر. + +![استخر منابع](images/clinic-owner-doctor/10-resources-pools.png) + +اگر سه اتاق یکسان داری، به‌جای انتخاب دستی یک استخر بساز. سیستم خودش هرکدام را که آزاد +بود می‌دهد. + +![مهارت‌ها](images/clinic-owner-doctor/11-resources-skills.png) + +مهارت، پل بین سرویس و آدم یا دستگاه است. سرویسی که مهارت «لیزر» می‌خواهد فقط پرسنل و +منبعی را قبول می‌کند که آن مهارت را دارند. + +**قدم بعد:** تیم اجرایی. + +--- + +## قدم ۶ — پرسنل و منشی + +مسیر: تنظیمات ← پرسنل + +![پرسنل](images/clinic-owner-doctor/12-staff.png) + +پرستار و تکنسین با مهارت‌هایشان. جلسات درمان به این‌ها سپرده می‌شود و هرکدام فقط +[جلسات خودش](staff.md) را می‌بیند. + +مسیر: تنظیمات ← مدیریت منشی + +![منشی‌ها](images/clinic-owner-doctor/13-my-secretaries.png) + +منشیِ کلینیک می‌تواند روی چند پزشک کار کند. موقع افزودن انتخاب می‌کنی روی کدام پزشکان +دسترسی داشته باشد؛ نوبت و اطلاعات بقیه را اصلاً نمی‌بیند. + +بعد از ذخیره، پنجرهٔ مجوزها باز می‌شود. اگر منشی گفت «فلان دکمه کار نمی‌کند»، معمولاً +جوابش همین‌جاست. [راهنمای منشی](secretary.md) همین را از سمت او توضیح می‌دهد. + +**قدم بعد:** حالا کلینیک آمادهٔ نوبت است. + +--- + +## قدم ۷ — روز کاری: نوبت‌ها + +مسیر: نوبت‌ها + +![نوبت‌های کلینیک](images/clinic-owner-doctor/02-appointments.png) + +تفاوت اصلی با مطب شخصی، **تب پزشکان** بالای فهرست است. هر پزشک تب خودش را دارد و تب +«همه» تصویر کل روز کلینیک را می‌دهد. + +بقیهٔ چرخه مثل مطب است: ثبت نوبت، پذیرش، و «قطعی کردن نوبت» در سه مرحله — بیمه و هزینه، +پرداخت، تأیید. پرداخت را می‌توان بین چند روش تقسیم کرد و دکمه‌های درصدی زیر هر ردیف +مبلغ را سریع می‌گذارند. + +**قدم بعد:** پرونده‌ها. + +--- + +## قدم ۸ — پرونده و درمان + +مسیر: پرونده بیماران + +![پرونده‌ها](images/clinic-owner-doctor/14-patients.png) + +پرونده متعلق به کلینیک است، نه به پزشک. بیماری که این هفته پیش یک پزشک رفته و هفتهٔ +بعد پیش پزشک دیگر، یک پرونده دارد و همهٔ سابقه‌اش یک‌جاست. + +مسیر: دوره‌های درمان + +![دوره‌های درمان](images/clinic-owner-doctor/15-treatment-cases.png) + +درمان‌های چندجلسه‌ای. شرطش همان دو چیز است: سرویس پروتکل فعال داشته باشد و دسته‌بندی‌اش +خالی نباشد. + +--- + +## بعد از راه‌اندازی: نگاه ماهانه + +### پول کلینیک + +![پرداخت‌ها](images/clinic-owner-doctor/16-my-payments.png) + +همهٔ پرداخت‌های کلینیک از هر پزشکی، یک‌جا با وضعیتشان. + +![مدیریت پرداخت](images/clinic-owner-doctor/17-my-financial.png) + +درگاه، حساب بانکی و کارت‌خوان‌ها. همان روش‌هایی که سرِ صندوق انتخاب می‌کنی از اینجا +می‌آیند؛ تا اینجا را پر نکنی، فهرست روش‌ها خالی است. + +![مطالبات بیمه](images/clinic-owner-doctor/18-claims.png) + +طلب کلینیک از بیمه‌ها، به تفکیک بیمار. + +![انبارداری](images/clinic-owner-doctor/19-inventory.png) + +موجودی کالاهای مصرفی و هشدار کمبود. + +### سقف‌ها + +![اشتراک](images/clinic-owner-doctor/21-subscription.png) + +پلن کلینیک تعیین می‌کند چند منشی، چند منبع و کدام امکانات داشته باشی. + +![تنظیمات](images/clinic-owner-doctor/20-settings-menu.png) + +نقطهٔ ورود همهٔ تنظیمات کلینیک. + +--- + +## چک‌لیست + +- [ ] حوزهٔ فعالیت انتخاب شده +- [ ] پزشکان دعوت شده و دعوت را پذیرفته‌اند +- [ ] هر پزشک برنامهٔ هفتگی‌اش را چیده است +- [ ] سرویس‌ها با دسته‌بندی و تعرفه ساخته شده‌اند +- [ ] اتاق‌ها و دستگاه‌ها به‌عنوان منبع تعریف شده‌اند +- [ ] منشی با مجوزهای مشخص اضافه شده +- [ ] یک نوبت آزمایشی از ثبت تا پرداخت رفته و در پرداخت‌ها دیده شده + +--- + +## راهنماهای دیگر + +- [پزشک مستقل](independent-doctor.md) — برای راه‌اندازی مطب شخصیِ خودت +- [مدیر کلینیک](clinic-manager.md) +- [منشی](secretary.md) +- [پرسنل](staff.md) +- [فهرست همهٔ راهنماها](README.md) diff --git a/docs/guide/independent-doctor.md b/docs/guide/independent-doctor.md new file mode 100644 index 00000000..76ed1db0 --- /dev/null +++ b/docs/guide/independent-doctor.md @@ -0,0 +1,364 @@ +# راه‌اندازی کلینیک‌پرو برای پزشک مستقل — قدم به قدم + +تازه ثبت‌نام کرده‌ای و پنل خالی است. این راهنما تو را از همان لحظه تا جایی می‌برد که +بیمار نوبت می‌گیرد، پول ثبت می‌شود و گزارش مالی درمی‌آید. + +سیزده قدم است. به همین ترتیب انجامشان بده؛ هر قدم روی قدم قبلی سوار است. اگر قدم سوم +را قبل از دوم بروی، سرویس ساخته نمی‌شود. + +اگر کلینیک داری و پزشکان دیگری هم دارند کار می‌کنند، مسیر تو فرق دارد: +[راه‌اندازی کلینیک برای پزشکِ صاحب کلینیک](clinic-owner-doctor.md). + +--- + +## قدم ۰ — اولین ورود + +با موبایل و رمزت وارد می‌شوی. اولین چیزی که می‌بینی داشبورد است. + +![داشبورد در روز اول](images/independent-doctor/01-dashboard.png) + +روز اول همه‌چیز صفر است و طبیعی است. داشبورد آینهٔ کارِ توست؛ تا کاری نکنی چیزی نشان +نمی‌دهد. + +کنار عنوان هر صفحه یک `؟` هست. بزنی، راهنمای همان صفحه اجرا می‌شود. + +**قدم بعد:** پروفایلت را کامل کن. + +--- + +## قدم ۱ — پروفایل مطب + +**چرا اول این:** نام و تخصص تو روی سایت نوبت‌دهی و بالای هر صورتحساب می‌آید. تا کامل +نشود، بیمار نمی‌داند نوبت چه کسی را می‌گیرد. + +مسیر: منو ← پروفایل من + +![پروفایل پزشک](images/independent-doctor/24-profile.png) + +اینجا را پر کن: + +- نام و نام خانوادگی، همان‌طور که می‌خواهی بیمار ببیند +- تخصص — از فهرست انتخاب می‌شود، دستی تایپ نمی‌شود +- آدرس مطب و شهر +- تصویر پروفایل + +**نکته:** تخصص را دقیق انتخاب کن. جستجوی بیمار در سایت عمومی روی همین می‌چرخد. + +**قدم بعد:** قبل از ساختن سرویس، دسته‌بندی بساز. + +--- + +## قدم ۲ — دسته‌بندی خدمات + +**چرا اول این:** سرویسی که دسته‌بندی ندارد بعداً نمی‌تواند دورهٔ درمان بگیرد، چون +نواحی درمان از دل همین دسته‌بندی ساخته می‌شوند. این را روز اول درست کن تا ماه سوم +مجبور به اصلاح نشوی. + +مسیر: تنظیمات ← دسته‌بندی‌ها + +![دسته‌بندی سرویس‌ها](images/independent-doctor/07-service-categories.png) + +دسته‌ها را مثل فهرست کارهایت بچین: «لیزر»، «تزریق»، «مشاوره». اگر زیرمجموعه داری، +زیرش بساز — مثلاً زیر لیزر: صورت، بدن، ناحیه. + +**قدم بعد:** حالا سرویس‌ها. + +--- + +## قدم ۳ — تعریف سرویس‌ها + +**چرا:** سرویس واحدِ کارِ توست. نوبت روی سرویس بسته می‌شود، مدتش طول نوبت را تعیین +می‌کند و تعرفه‌اش وارد صورتحساب می‌شود. + +مسیر: منو ← سرویس‌ها ← افزودن + +![سرویس‌ها](images/independent-doctor/06-clinic-services.png) + +برای هر سرویس سه چیز را بده: + +- **نام** — همان که بیمار می‌شنود +- **مدت** — واقع‌بینانه باشد. اگر مشاوره بیست دقیقه است ولی پانزده بزنی، تا ظهر عقب می‌افتی +- **تعرفه** — مبلغ آزاد؛ سهم بیمه بعداً از رویش حساب می‌شود +- **دسته‌بندی** — از قدم ۲ + +**نکته:** لازم نیست همان روز همهٔ سرویس‌ها را بسازی. با سه چهار تای پرتکرار شروع کن. + +**قدم بعد:** ساعت کاری‌ات را اعلام کن. + +--- + +## قدم ۴ — برنامهٔ هفتگی و روش نوبت‌دهی + +**چرا:** تا برنامه نچینی، هیچ ساعت آزادی وجود ندارد و نوبت ثبت نمی‌شود. + +مسیر: تنظیمات ← مدیریت نوبت‌دهی + +![تنظیمات نوبت‌دهی](images/independent-doctor/17-appointment-settings.png) + +اول روزهای کاری و ساعتشان را بزن. بعد روش نوبت‌دهی را انتخاب کن: + +- **سرویسی** — طول هر نوبت از مدت سرویس می‌آید. برای کاری که مدتش متفاوت است مناسب‌تر + است؛ مشاوره بیست دقیقه، لیزر یک ساعت. +- **اسلاتی** — بازه‌های ثابت، مثلاً هر بیست دقیقه، فارغ از نوع کار. + +اگر شک داری، سرویسی را انتخاب کن. + +**قدم بعد:** روزهایی که نیستی را ببند. + +--- + +## قدم ۵ — تعطیلات + +مسیر: تنظیمات ← تعطیلات + +![تعطیلات](images/independent-doctor/18-holidays.png) + +تعطیلات رسمی کشور از قبل هست. سفر، کنگره و مرخصی‌ات را خودت اضافه کن تا آن روزها +نوبت باز نشود و مجبور به لغو دسته‌جمعی نشوی. + +**قدم بعد:** اگر بیمه می‌پذیری، قراردادها. + +--- + +## قدم ۶ — بیمه و تعرفه + +**اگر بیمه نمی‌پذیری، این قدم را رد کن.** همه‌چیز آزاد حساب می‌شود. + +مسیر: تنظیمات ← مدیریت بیمه + +![بیمه و تعرفه](images/independent-doctor/08-insurance-pricing.png) + +برای هر بیمهٔ پایه و تکمیلی، درصد پوشش را وارد کن. سهم بیمار سرِ صندوق از همین اعداد +حساب می‌شود، پس اشتباهش مستقیم به جیب می‌رسد. + +**قدم بعد:** الگوی شمارهٔ پرونده. + +--- + +## قدم ۷ — شمارهٔ پرونده + +مسیر: تنظیمات ← شماره پرونده + +![شمارهٔ پرونده](images/independent-doctor/19-record-number-settings.png) + +پیشوند، طول عدد و شمارهٔ شروع را تعیین می‌کنی. اگر از دفتر کاغذی یا نرم‌افزار قبلی +می‌آیی، شمارهٔ شروع را بالاتر از آخرین پروندهٔ قدیمی بگذار تا تداخل پیش نیاید. + +**قدم بعد:** تیم. + +--- + +## قدم ۸ — منشی و پرسنل + +**اگر تنها کار می‌کنی، این قدم را رد کن.** + +مسیر: تنظیمات ← مدیریت منشی + +![منشی‌ها](images/independent-doctor/14-my-secretaries.png) + +منشی را با موبایلش اضافه می‌کنی و رمز اولیه می‌گذاری. بعد از ذخیره پنجرهٔ مجوزها باز +می‌شود؛ همان‌جا تعیین کن چه کارهایی مجاز است: ثبت نوبت، تغییر وضعیت، لغو، ساخت پرونده، +ثبت پرداخت. + +هرچه ندهی، برایش کار نمی‌کند. [راهنمای منشی](secretary.md) نشان می‌دهد نتیجهٔ این +انتخاب‌ها از سمت او چطور دیده می‌شود. + +مسیر: تنظیمات ← پرسنل + +![پرسنل](images/independent-doctor/15-staff.png) + +پرسنل کسی است که جلسهٔ درمان را انجام می‌دهد. برایش مهارت تعریف کن؛ همان مهارت تعیین +می‌کند در چه سرویس‌هایی قابل انتخاب باشد. او فقط [جلسات خودش](staff.md) را می‌بیند. + +**قدم بعد:** حالا سیستم آمادهٔ اولین نوبت است. + +--- + +## قدم ۹ — اولین نوبت + +مسیر: نوبت‌ها ← افزودن نوبت + +![ثبت نوبت](images/independent-doctor/03-appointments-new.png) + +چهار چیز لازم است: پزشک، مراجعه‌کننده، سرویس، زمان. + +بیمار قبلی را با موبایل یا کد ملی جستجو کن. بیمار جدید را با نام و موبایل وارد کن؛ +پرونده‌اش خودکار ساخته می‌شود و لازم نیست جداگانه پرونده بسازی. + +هزینهٔ ویزیت اختیاری است، مگر در تنظیمات الزامی‌اش کرده باشی. هر مبلغی اینجا بزنی، +همان در مرحلهٔ قطعی‌کردن و در صورتحساب می‌آید. + +دکمهٔ ثبت تا کامل‌نشدن هر چهار مورد غیرفعال است. + +**قدم بعد:** روزِ مراجعه. + +--- + +## قدم ۱۰ — روز مراجعه: پذیرش، ویزیت، پول + +مسیر: نوبت‌ها + +![نوبت‌های امروز](images/independent-doctor/02-appointments.png) + +این صفحه‌ای است که هر روز بازش می‌کنی. بالا چهار عدد امروز، زیرش ناوبری روز و فیلترها، +پایین‌تر خودِ نوبت‌ها روی تایم‌لاین. + +وقتی بیمار آمد، روی نوبتش «قطعی کردن نوبت» را بزن. سه مرحله دارد: + +۱. **بیمه و هزینه** — بیمهٔ بیمار را انتخاب کن. مبلغ قابل پرداخت همان‌جا حساب می‌شود. +۲. **پرداخت** — روش و مبلغ. اگر بیمار نصف نقدی و نصف کارت می‌دهد، «افزودن روش» را بزن و + بین دو ردیف تقسیم کن. زیر هر ردیف دکمه‌های ۲۰٪، ۵۰٪، ۷۰٪ و ۱۰۰٪ هست تا مبلغ را سریع + بگذاری. +۳. **تأیید** — خلاصه را ببین و ثبت کن. + +با ثبت، سه اتفاق همزمان می‌افتد: وضعیت نوبت عوض می‌شود، مراجعه در پروندهٔ بیمار ثبت +می‌شود، و پرداخت در گزارش مالی می‌نشیند. + +پرداخت جزئی مجاز است. باقی‌مانده به‌عنوان «پرداخت ناقص» باقی می‌ماند و در فهرست +پرداخت‌ها دیده می‌شود. + +**قدم بعد:** پرونده‌ها را بشناس. + +--- + +## قدم ۱۱ — پروندهٔ بیمار + +مسیر: پرونده بیماران + +![پرونده‌ها](images/independent-doctor/04-patients.png) + +جستجو با کد ملی، شمارهٔ پرونده یا نام. فیلتر بر اساس جنسیت، بیمه، بازهٔ پذیرش، بدهی و +برچسب. + +![نمای کارتی بیماران](images/independent-doctor/05-my-patients.png) + +با باز کردن هر پرونده، تب‌هایش را می‌بینی: اطلاعات، سرویس‌ها، نوبت‌ها، دوره‌های درمان، +پرداخت‌ها، کیف پول، یادداشت، ضمیمه و پروندهٔ پزشکی. + +![برچسب‌ها](images/independent-doctor/20-tags-settings.png) + +برچسب‌هایی مثل «حساسیت دارویی» یا «پیگیری ویژه» بساز و روی پرونده‌ها بگذار؛ بعد با +همان‌ها فیلتر کن. + +**قدم بعد:** اگر درمانت چندجلسه‌ای است. + +--- + +## قدم ۱۲ — درمان چندجلسه‌ای + +**اگر همهٔ کارهایت یک‌جلسه‌ای است، این قدم را رد کن.** + +مسیر: سرویس‌ها ← همان سرویس ← تب دورهٔ درمان + +اول برای سرویس **پروتکل** تعریف کن: چند جلسه، با چه فاصله‌ای. مثلاً هشت جلسه با فاصلهٔ +یک ماه. + +بعد از آن، هر بار نوبتی از آن سرویس قطعی شود، دوره خودش باز می‌شود، همهٔ جلساتش ساخته +می‌شود، ولی فقط جلسهٔ اول نوبت می‌گیرد. جلسهٔ بعدی با انجام‌شدن جلسهٔ قبلی زمان‌بندی +می‌شود. + +مسیر: دوره‌های درمان + +![دوره‌های درمان](images/independent-doctor/11-treatment-cases.png) + +**دو شرطی که اگر رعایت نشوند دوره ساخته نمی‌شود و هیچ خطایی هم نمی‌بینی:** + +- سرویس باید **دسته‌بندی** داشته باشد — همان قدم ۲ +- سرویس باید **پروتکل فعال** داشته باشد + +**قدم بعد:** اگر اتاق یا دستگاه داری. + +--- + +## قدم ۱۳ — منابع و انبار + +**اگر دستگاه یا اتاقی نداری که همزمان قابل استفاده نباشد، این قدم را رد کن.** + +مسیر: منابع + +![منابع](images/independent-doctor/12-resources.png) + +منبع یعنی چیزی که تقویم خودش را دارد: دستگاه لیزر، اتاق عمل، تخت. با تعریفش، نوبت علاوه +بر وقت تو وقت آن را هم اشغال می‌کند و تداخل پیش نمی‌آید. + +مسیر: انبارداری + +![انبارداری](images/independent-doctor/13-inventory.png) + +کالاهای مصرفی و پکیج‌ها. مصرف هر جلسه از موجودی کم می‌شود و در مرز هشدار خبردار می‌شوی. + +--- + +## بعد از راه‌اندازی: کارهایی که ماهانه می‌کنی + +### دیدن پول + +مسیر: پرداخت‌ها + +![پرداخت‌ها](images/independent-doctor/09-my-payments.png) + +هر ردیف یک صورتحساب با وضعیتش: تسویه‌نشده، پرداخت ناقص، پرداخت شده. بالای صفحه مجموع، +پرداخت‌شده و تسویه‌نشده. + +### پیگیری بیمه + +مسیر: مطالبات بیمه + +![مطالبات بیمه](images/independent-doctor/10-claims.png) + +چقدر از بیمه طلبکاری و چقدر وصول شده، به تفکیک بیمار. + +### تخفیف + +![تخفیف‌ها](images/independent-doctor/23-discounts.png) + +قوانین تخفیفی که موقع صدور صورتحساب خودکار اعمال می‌شوند. + +### پیامک + +![کیف پول پیامک](images/independent-doctor/21-sms-wallet.png) + +یادآوری نوبت از این موجودی کم می‌کند. خالی که شود پیامک‌ها قطع می‌شوند و بیمار +یادآوری نمی‌گیرد. + +### اشتراک + +![اشتراک](images/independent-doctor/22-subscription.png) + +پلن تو سقف‌ها را تعیین می‌کند: چند منشی، چند منبع، کدام امکانات. اگر جایی به محدودیت +خوردی، اول اینجا را نگاه کن. + +### تنظیمات و حساب + +![تنظیمات](images/independent-doctor/16-settings-menu.png) + +نقطهٔ ورود همهٔ تنظیمات. + +![حساب کاربری](images/independent-doctor/25-account-settings.png) + +شمارهٔ ورود، رمز و اطلاعات شخصی خودت. + +--- + +## چک‌لیست: آماده‌ای یا نه + +- [ ] پروفایل و تخصص کامل است +- [ ] دسته‌بندی ساخته شده +- [ ] دست‌کم سه سرویس با مدت و تعرفه دارم +- [ ] برنامهٔ هفتگی چیده شده +- [ ] تعطیلات ثبت شده +- [ ] بیمه‌ها وارد شده‌اند (اگر بیمه می‌پذیرم) +- [ ] الگوی شمارهٔ پرونده تعیین شده +- [ ] یک نوبت آزمایشی ثبت و قطعی کرده‌ام و در پرداخت‌ها دیده‌ام + +آخری مهم‌ترین است. تا یک بار کل چرخه را نروی، نمی‌دانی کجا لنگ می‌زند. + +--- + +## راهنماهای دیگر + +- [پزشکِ صاحب کلینیک](clinic-owner-doctor.md) — وقتی پزشکان دیگری زیر نام تو کار می‌کنند +- [مدیر کلینیک](clinic-manager.md) +- [منشی](secretary.md) +- [پرسنل](staff.md) +- [فهرست همهٔ راهنماها](README.md) diff --git a/docs/guide/secretary.md b/docs/guide/secretary.md new file mode 100644 index 00000000..4ef090cf --- /dev/null +++ b/docs/guide/secretary.md @@ -0,0 +1,188 @@ +# کار روزانهٔ منشی در کلینیک‌پرو — قدم به قدم + +پزشک یا مدیر حسابت را ساخته و رمز اولیه‌ات را داده است. این راهنما یک روز کاری کامل را +با تو می‌رود: از ورود صبح تا بستن حساب آخر وقت. + +--- + +## قدم ۰ — اولین ورود + +با موبایل خودت و رمزی که مدیر داده وارد می‌شوی. + +منوی تو کوتاه‌تر از پزشک است. تنظیمات کلینیک، سرویس‌ها، منابع و اشتراک را نمی‌بینی؛ در +عوض دو چیز داری که پزشک ندارد: درآمد و تسویه‌حساب خودت. + +**قاعدهٔ کلی:** هر کاری که می‌توانی بکنی را پزشک یا مدیر برایت روشن کرده است. اگر +دکمه‌ای کار نکرد یا صفحه‌ای باز نشد، یعنی آن مجوز را نداری — نه اینکه سیستم خراب است. + +--- + +## قدم ۱ — صبح: نگاه به روز + +مسیر: نوبت‌ها + +![نوبت‌های امروز](images/secretary/01-appointments.png) + +اولین کار هر روز همین صفحه است. + +بالا چهار عدد: کل نوبت‌های امروز، انجام‌شده، در انتظار، لغوشده. + +زیرش نوار ابزار: + +- **تاریخ** — با فلش‌ها روز به روز، یا از تقویم یک روز مشخص +- **فیلتر خدمت** — فقط نوبت‌های یک سرویس +- **زمانبندی یا جدول** — زمانبندی ساعت‌های روز را کنار هم می‌چیند، جدول فهرست ساده می‌دهد +- **فیلترها** — وضعیت، بیمه، بیمار + +در کلینیک، هر پزشکی که رویش دسترسی داری یک تب دارد. پزشکانی که مدیر برایت انتخاب نکرده +اصلاً دیده نمی‌شوند. + +**قدم بعد:** تلفن زنگ می‌خورد. + +--- + +## قدم ۲ — گرفتن نوبت تلفنی + +مسیر: نوبت‌ها ← افزودن نوبت + +![ثبت نوبت](images/secretary/02-appointments-new.png) + +چهار چیز لازم است و دکمهٔ ثبت تا کامل‌نشدنشان غیرفعال می‌ماند: + +۱. **پزشک** — اول این، چون ساعت‌های آزاد از برنامهٔ اوست +۲. **مراجعه‌کننده** — بیمار قبلی را با موبایل یا کد ملی جستجو کن؛ بیمار جدید را با نام + و موبایل وارد کن و پرونده‌اش خودکار ساخته می‌شود +۳. **سرویس** — مدتش طول نوبت را تعیین می‌کند +۴. **زمان** — از ساعت‌های آزاد + +**نکته:** برای بیمار جدید لازم نیست اول پرونده بسازی و بعد نوبت بدهی. همین فرم هر دو +کار را می‌کند. + +### اگر بیمار زمان مشخص نمی‌خواهد + +مسیر: نوبت‌ها ← رزرو نوبت + +![نوبت رزرو](images/secretary/03-appointments-reserve.png) + +نوبت رزرو برای روزی ثبت می‌شود بدون ساعت مشخص. اول پزشک را انتخاب کن؛ تا انتخاب نشود +دکمهٔ ثبت غیرفعال است. + +**قدم بعد:** بیمار می‌آید. + +--- + +## قدم ۳ — پذیرش و گرفتن پول + +روی نوبتِ بیماری که آمده، «قطعی کردن نوبت» را بزن. سه مرحله دارد: + +**۱. بیمه و هزینه** — بیمهٔ بیمار را انتخاب کن. مبلغ قابل پرداخت همان‌جا حساب و نمایش +داده می‌شود. + +**۲. پرداخت** — روش و مبلغ: + +- اگر همه را یک‌جا می‌دهد، روش را انتخاب کن و ۱۰۰٪ را بزن +- اگر نصف نقدی و نصف کارت می‌دهد، «افزودن روش» را بزن و بین دو ردیف تقسیم کن +- زیر هر ردیف دکمه‌های ۲۰٪، ۵۰٪، ۷۰٪ و ۱۰۰٪ هست؛ درصد را می‌زنی و مبلغ خودش پر می‌شود +- برای کارت‌خوان می‌توانی شمارهٔ پیگیری را هم ثبت کنی + +**۳. تأیید** — خلاصه را ببین و ثبت کن. + +پرداخت جزئی مجاز است. باقی‌مانده به‌عنوان «پرداخت ناقص» می‌ماند و در فهرست پرداخت‌ها +دیده می‌شود، پس فراموش نمی‌شود. + +**قدم بعد:** اگر بیمار پرونده‌اش ناقص است. + +--- + +## قدم ۴ — پرونده‌ها + +مسیر: پرونده بیماران + +![پرونده‌ها](images/secretary/04-patients.png) + +جستجو با کد ملی، شمارهٔ پرونده یا نام. فیلترها: جنسیت، بیمه، بازهٔ پذیرش، بدهی، برچسب. + +با باز کردن پرونده می‌توانی اطلاعات بیمار را کامل کنی، سابقهٔ مراجعه‌ها و پرداخت‌هایش را +ببینی و یادداشت بگذاری. + +![تشکیل پرونده](images/secretary/05-patients-new.png) + +اگر مجوز ساخت پرونده داشته باشی، این فرم باز می‌شود. + +اگر نداشته باشی، کلیک روی «تشکیل پرونده» تو را به داشبورد برمی‌گرداند — دقیقاً همان +چیزی که در تصویر بالا می‌بینی. از مدیر بخواه در +[صفحهٔ منشی‌ها](clinic-manager.md) این مجوز را روشن کند. + +**قدم بعد:** آخر وقت. + +--- + +## قدم ۵ — آخر وقت: تسویه و پیگیری + +مسیر: پرداخت‌ها + +![پرداخت‌ها](images/secretary/06-my-payments.png) + +فهرست صورتحساب‌ها با وضعیتشان: تسویه‌نشده، پرداخت ناقص، پرداخت شده. آخر روز اینجا را +نگاه کن تا بفهمی چه کسی هنوز بدهکار است. + +مسیر: مطالبات بیمه + +![مطالبات بیمه](images/secretary/07-claims.png) + +سهم بیمه از خدمات، به تفکیک بیمار. + +--- + +## قدم ۶ — هماهنگی جلسهٔ بعدی + +مسیر: دوره‌های درمان + +![دوره‌های درمان](images/secretary/08-treatment-cases.png) + +بیمارانی که دورهٔ چندجلسه‌ای دارند و اینکه هرکدام جلسهٔ چندم‌اند. برای تماس و هماهنگی +جلسهٔ بعد، همین فهرست کار تو را راه می‌اندازد. + +--- + +## قدم ۷ — درآمد خودت + +مسیر: درآمد نوبت‌های آنلاین + +![درآمد من](images/secretary/09-secretary-earnings.png) + +سهم تو از نوبت‌هایی که آنلاین ثبت و پرداخت شده‌اند. هر ردیف یک نوبت با سهم تو. + +مسیر: تسویه حساب + +![تسویه حساب](images/secretary/10-secretary-settlement.png) + +درخواست برداشت به شماره شبای خودت و وضعیت درخواست‌های قبلی. + +![حساب کاربری](images/secretary/11-account-settings.png) + +شمارهٔ ورود، رمز و اطلاعات شخصی‌ات. رمز اولیه‌ای که مدیر داده را همین‌جا عوض کن. + +--- + +## وقتی چیزی کار نمی‌کند + +| چه می‌بینی | معنی‌اش | +|---|---| +| پزشکی در تب‌ها نیست | مدیر تو را روی آن پزشک تعریف نکرده | +| دکمهٔ «قطعی کردن» نیست | مجوز «تغییر وضعیت نوبت» را نداری | +| نمی‌توانم لغو کنم | مجوز «لغو نوبت» جداست از تغییر وضعیت | +| بعد از کلیک به داشبورد برمی‌گردم | آن صفحه در دسترس نقش تو نیست | +| ساعت آزادی برای پزشک نیست | آن پزشک هنوز برنامهٔ هفتگی‌اش را نچیده | + +پنج مورد اول را مدیر حل می‌کند، آخری را خود پزشک. + +--- + +## راهنماهای دیگر + +- [مدیر کلینیک](clinic-manager.md) — کسی که مجوزهای تو را تعیین می‌کند +- [پزشکِ صاحب کلینیک](clinic-owner-doctor.md) +- [پزشک مستقل](independent-doctor.md) +- [پرسنل](staff.md) +- [فهرست همهٔ راهنماها](README.md) diff --git a/docs/guide/staff.md b/docs/guide/staff.md new file mode 100644 index 00000000..e5c0fa5b --- /dev/null +++ b/docs/guide/staff.md @@ -0,0 +1,77 @@ +# کار روزانهٔ پرسنل درمان در کلینیک‌پرو + +تو پرستار یا تکنسینی هستی که جلسهٔ درمان را انجام می‌دهد. پنل تو عمداً کوچک است: نه +نوبت ثبت می‌کنی، نه پول می‌گیری، نه تنظیمات را می‌بینی. فقط جلساتی که به تو سپرده شده. + +چهار قدم است. + +--- + +## قدم ۰ — حسابت را چه کسی می‌سازد + +خودت ثبت‌نام نمی‌کنی. پزشک یا مدیر کلینیک تو را در +[صفحهٔ پرسنل](clinic-manager.md) اضافه می‌کند، موبایلت را وارد می‌کند و رمز اولیه +می‌گذارد. + +هنگام افزودن برایت **مهارت** تعریف می‌شود. مهارت تعیین می‌کند در چه سرویس‌هایی قابل +انتخاب باشی؛ سرویسی که مهارت «لیزر» می‌خواهد فقط کسی را قبول می‌کند که آن را دارد. + +بعد با شمارهٔ موبایل خودت وارد پنل می‌شوی. + +--- + +## قدم ۱ — صبح: فهرست جلسات + +مسیر: جلسات امروز من + +![جلسات امروز من](images/staff/01-my-sessions.png) + +تنها صفحهٔ اصلی توست. جلسه‌هایی که امروز به تو سپرده شده‌اند اینجا فهرست می‌شوند. + +اگر فهرست خالی است، یعنی یا جلسه‌ای به تو سپرده نشده یا تاریخ جلسه امروز نیست. + +--- + +## قدم ۲ — انجام جلسه + +روی جلسه بزن تا جزئیاتش باز شود: بیمار، خدمت، ناحیهٔ درمان و کالاهای مصرفی. + +سه کار اینجا انجام می‌دهی: + +۱. جلسه را **انجام‌شده** ثبت می‌کنی +۲. اگر کالایی مصرف شده، ثبتش می‌کنی تا از انبار کم شود +۳. اگر یادداشتی لازم است، می‌نویسی + +**نکتهٔ مهم:** با ثبتِ انجامِ جلسه، جلسهٔ بعدیِ همان دوره زمان‌بندی می‌شود. تا وقتی +ثبت نکنی، بیمار برای جلسهٔ بعد در صف قرار نمی‌گیرد. + +--- + +## قدم ۳ — چیزهایی که نمی‌بینی + +![بازگشت به داشبورد](images/staff/02-account-settings.png) + +اگر آدرس صفحه‌ای را دستی وارد کنی که به نقش تو مربوط نیست، پنل تو را به داشبورد +برمی‌گرداند. تصویر بالا دقیقاً همین است. + +این محدودیت عمدی است: اطلاعات مالی و پروندهٔ کامل بیماران به کار تو مربوط نیست. + +--- + +## اگر چیزی درست نبود + +| چه می‌بینی | معنی‌اش | +|---|---| +| جلسه‌ای در فهرستم نیست | به تو سپرده نشده، یا تاریخش امروز نیست | +| در انتخاب پرسنل ظاهر نمی‌شوم | مهارت لازمِ آن سرویس را ندارم | +| نمی‌توانم وارد شوم | رمز را پزشک یا مدیر گذاشته؛ از او بخواه دوباره تنظیمش کند | + +--- + +## راهنماهای دیگر + +- [منشی](secretary.md) — کسی که نوبت را ثبت می‌کند +- [مدیر کلینیک](clinic-manager.md) — کسی که حساب و مهارت تو را می‌سازد +- [پزشکِ صاحب کلینیک](clinic-owner-doctor.md) +- [پزشک مستقل](independent-doctor.md) +- [فهرست همهٔ راهنماها](README.md)