多醫師、多診間的預約排程系統,怎麼算得出可約時段
把行事曆上沒有事件的格子當成可約,是最直覺的做法。診所只要超過一位醫師、一間診間,這個做法就會出錯——時段開得出來,人卻湊不齊;或者明明排得下,系統卻說滿了。這一頁講的是另一種算法:把療程拆成階段,逐格去湊每一段要用的人員、空間與設備,全部同時空得出來,那一格才算數。
底下的畫面取自實際上線的系統(實例頁共 19 張,病患姓名、電話、診所名稱與日期都已在截圖上遮罩)。那家診所有十位醫師、五位專員。
診所預約系統是怎麼算出「可預約時段」的?
可約時段是算出來的,不是行事曆上的空格。系統把療程拆成階段,逐格檢查每個階段要的人員、診間與儀器是不是同時空得出來,全部湊得齊,那一格才會端到病患面前。
展開來看是四層條件疊在一起。第一層是診所的營業時間;第二層是每一位人員自己的班表,這一層決定當天有沒有人;第三層是療程本身要用掉哪些資源、各佔多久;第四層是那一格已經被別人佔走多少。四層都通過,這一格的剩餘容量才會大於零。
格點(時段之間相隔幾分鐘)可以設成 5、10、15、20、30、60 分。有建療程目錄的診所預設 15 分;沒有目錄的診所退回舊行為,格點與時長都是 30 分。
往前找多遠也有明確界線:第一輪掃未來 14 天;如果掃出來的有空日不夠,會一路往後延伸,最多掃到 60 天。這是為了避免一種假象:這兩週剛好排滿,病患就被告知「沒有時段」,其實第三週都是空的。
兩個人同時按下同一格,擋在資料庫這一層:檢查「這段時間的重疊數還小於容量」與寫入是同一個語句完成的,寫入被序列化,所以慢的那一筆當場被擋掉,不靠前端搶快。
多醫師、多診間的排班系統要設定哪些東西才會有時段?
三件事:人員的週班表與逐日班表、療程各階段的資源需求、空間與設備的數量。醫師排了班才有可預約時段,專員決定同一時段最多接幾組,診間與儀器只有被療程點名時才會成為上限。
班表分兩層。上層是週班表(星期幾、幾點到幾點),下層是逐日班表,用來覆蓋特定某一天。規則是全有全無:某位人員只要有自己的班表列,那些列就完全定義他的班;一列都沒有,才回頭沿用診所層的營業時間(排班模式下的醫師是例外,見下一段)。設定時最常踩的是零長度或顛倒的班(開始時間大於等於結束時間),這種列在寫入與計算兩邊都會被丟掉,不會靜默變成整天有班。
資源的型別不只醫師。系統分成人員(醫師、專員、治療師、助理)、空間(診間)與設備(儀器),各自可以有數量與獨立的 Google 日曆。班表的預設行為刻意不一樣:醫師在排班模式下沒有自己的班表就等於沒排班,因為醫師沒排班卻被當成整天在,是最貴的一種錯;診間、儀器與其他人員沒有自己的班表,則沿用診所營業時間。
設定完系統會把結果算給你看,而不是讓你自己去對。實際畫面上寫的是:醫師 10 位、排得出班 8 位;其他人員 5 位、排得出班 4 位;還有 2 位醫師整個月排不出任何班。這種「啟用中、但週班表與逐日班表都是空的」的人,看起來完全正常,卻一格時段都貢獻不了。
另外兩種狀況會被主動警示。一是所有醫師都排不出班——病患端每天都收到「目前沒有可預約的時段」,後台卻沒有任何一頁會報錯。二是班表斷崖:班表排到某一天就停了,系統掃未來 60 天,直接告訴你從哪一天起病患會約不到,建議現在就往後排。
一個療程要佔用醫師、診間、儀器多久,排程怎麼算?
每個階段各自寫:要哪一種資源、幾個、佔多久。人員是接力佔用,一段接一段往後排;同一間診間或同一台儀器整場只算一次,不會因為三個階段都用到就算成三倍。
一筆預約在系統裡是「依序的多個階段」。每個階段記自己的順序與時長,加上三個接續規則:這一段要不要跟上一段同一位人員、要不要同一間診間、人員是否整場都被綁住。每個階段底下再掛需求列,寫清楚資源種類、角色、數量與佔用分鐘數;佔用分鐘數沒填就等於整段。
把這兩件事分開,才算得出診所真實的樣子:醫師常常只在「看診」那一小段被佔用,前後的準備、等待與收尾不需要他。醫師被綁住的分鐘數變短,同一段時間裡塞得下的人就變多——這是資源感知排程與「一筆預約整段鎖住醫師」的差別。
合併規則也因此分兩種:人員類(醫師、專員)是接力,時間往後累加;空間與設備類去重取最大值,同一間房、同一台儀器整場都在,不重複計算。療程編輯頁右邊的時間軸會把客戶全程與各段佔用畫出來,讓你看出哪一段才是真正的瓶頸。
反過來也有一個常見的死結:療程的某個階段寫了「需 1 間診間」,而診所一間診間都沒有建,那個療程就永遠排不出任何時段。這種「階段需求在現有資源裡找不到對應」的情況,系統會在療程設定頁把有問題的項目逐條列出來。
為什麼多請一位助理,病患看到的時段沒有變多?
因為助理沒有被療程的任何一個階段點名。只有某個階段明確寫了需 1 間診間、需 1 台儀器、需 1 位治療師,那項資源才會成為可約量的上限,否則加再多都不會多出時段。
這句話值得寫進採購決策,因為它反過來也成立:可約量卡住的時候,加人不一定有用,要先看卡在哪一項。系統在「空間與設備」那一頁會直接把這件事講白。
真正會讓時段變多的,通常是這三件事之一:把醫師被佔用的分鐘數縮到他真的需要的那一段;補上排不出班的那幾位人員的班表;或是把班表往後排,讓 60 天的掃描視窗裡有東西可找。
行事曆頁上有一個小設計可以驗證這件事:每一格上方的圓點是當天有班的醫師,空心點代表那天只有專員值班——那一天只有不需要醫師的療程約得到。可約與不可約的差別,在同一個畫面上就看得出來卡在哪一種資源。
病患指名醫師或指定性別,系統怎麼回?
看資料有沒有填。醫師的性別填了,病患說「要約女醫師」時系統才算得出是哪幾天有班;暱稱填了,病患用小名問「某某當天會上班嗎」也對得到人。沒填就回「幫您跟診所確認」,不會亂排。
這是刻意的取捨:寧可承認查不到,也不猜。指名的問題只有三種正確答案——那位有班,給日期;那位沒班,講實話並給替代;資料不足,轉給人。把「猜一個看起來合理的日期」這個選項拿掉,是這套排程在對外回覆上最重要的一條規則。
約完之後的動作走同一套算法。病患要改約,系統重新用同一個療程的階段需求找位子,舊時段佔用的診間與儀器同步釋放、回到可約清單;要取消,位子連同該段的診間與儀器一起釋出;對方有講原因才記下來通知診所,沒講就留空,不編一個。改約與取消可以從 LINE 的按鈕、對話中的 AI,或帶權杖的預約連結三個入口進來,走的是同一條後端路徑。
這套排程系統做不到什麼?
要串你們既有的 ERP、POS 或排班系統,那一段是專案,不是開通就有;我們最熟的是診所。AI 判斷不了的問題會停手轉真人。班表沒排到的日子,系統只會照實說沒有時段,不會生一格出來。
其他幾條也一併講清楚。排程算的是資源,不是醫療判斷:療效保證、術後症狀判斷都列在禁答清單,AI 一律不答、轉櫃檯,對外內容的最終責任仍在醫療機構本身。敏感照片(例如醫療影像)一律不判讀,強制轉真人。超出規則範圍的客訴與情緒性留言會被標記需關注並通知第一線。
排程也不是排班顧問。系統會告訴你哪幾位排不出班、班表斷在哪一天、哪個療程的需求找不到對應資源,但要排幾個人、開幾間診間,是診所自己的決定。
費用的部分沒有月費,買斷價 NT$299,000。之後持續要付的只有兩筆:AI 平台的用量費(每則訊息約 NT$0.2,直接付給平台,我們不抽成),以及 LINE 官方帳號依 LINE 自己的方案計費。