Sổ hẹn
Bản thử — dữ liệu lưu trong trình duyệt này, chưa nối SupabaseVùng tô vàng nhạt là khung giờ bệnh nhân muốn (khung vàng). Vùng gạch chéo là ngoài giờ bán. Bấm chỗ trống để lấy giờ, bấm ca để đổi trạng thái.
Thời lượng từng loại siêu âm
Sửa ở đây chỉ đổi mặc định cho ca đặt từ giờ trở đi. Ca đã hẹn giữ nguyên số phút lúc đặt.
Buổi làm việc và trần ca
Giờ làm là lúc phòng khám còn hoạt động. Giờ bán là khung bệnh nhân chịu nhận hẹn —
hẹn sau giờ bán thì họ từ chối, nên đừng chào bán. Chênh lệch giữa hai khung chính là phần tràn mỗi tối.
Giữ vãng lai và giữ cho Acuity là số chỗ không ai được đặt trước, thay cho các ô rỗng hiện nay.
Khi bỏ Acuity thì đặt số đó về 0.
Ngày khoá và ngày lễ
Ngày lễ không tự khoá. Phòng khám mở buổi tối và sáng Chủ nhật — ngày lễ rơi vào ngày thường có khi lại đông hơn vì bệnh nhân được nghỉ. Xem đề xuất rồi tự quyết từng ngày.
Ca bị từ chối
create table buoi_lam ( -- khai 1 lần, sửa khi đổi giờ
thu smallint primary key, -- 0=CN … 6=T7
gio_lam_bd time, gio_lam_kt time,
gio_ban_bd time, gio_ban_kt time, -- khung bệnh nhân chịu nhận
tran_vu int, tran_bs2 int,
giu_vang_lai int default 0,
giu_acuity int default 0,
nghi boolean default false
);
create table hen (
id bigserial primary key,
ngay date not null,
gio time not null,
thoi_luong_phut int not null, -- chép cứng lúc đặt
bs_thuc_hien text, -- null = chưa gán
chi_dinh_bs boolean not null default false, -- (yc)
sdt_chuan text, ho_ten text not null, ma_bn text,
loai_dv text not null, so_thai smallint not null default 1,
nguon text not null, -- dt|fb|quay|link|acuity|vanglai
trang_thai text not null default 'cho',
-- cho|den|dang|xong|khong_den|huy|doi
hen_goc_id bigint references hen(id),
hen_moi_id bigint references hen(id),
so_lan_doi smallint not null default 0,
doi_luc timestamptz,
kham_queue_id bigint,
gio_den timestamptz, gio_bat_dau timestamptz, gio_xong timestamptz,
ghi_de boolean not null default false, ly_do_ghi_de text,
ghi_chu text, tao_boi text, tao_luc timestamptz not null default now()
);
create index hen_ngay_bs on hen (ngay, bs_thuc_hien);
create index hen_sdt on hen (sdt_chuan);
-- chặn trùng giờ ở tầng dữ liệu, không phụ thuộc giao diện
create extension if not exists btree_gist;
alter table hen add constraint hen_khong_trung
exclude using gist (
bs_thuc_hien with =,
tsrange(ngay + gio, ngay + gio + (thoi_luong_phut||' min')::interval) with &&
) where (trang_thai in ('cho','den','dang') and not ghi_de);
create table tu_choi ( -- mỗi lần nói "hết chỗ rồi chị"
id bigserial primary key,
ngay date not null, -- ngày bệnh nhân muốn
chi_dinh_bs boolean not null default false,
ly_do text, -- het_tran | het_khung_vang | khac
tao_luc timestamptz not null default now()
);