Skip to content

Checklist phát hành (Go-Live) — Hồ sơ bệnh án v2.1.0

File này dùng để làm gì: chốt cổng kiểm tra trước deploy, mức sẵn sàng, cutover, rollback và sign-off cho pilot Cao Lãnh (DL) + Tân Bình II (TM).

Nên đọc trước: decision-brief.md → E1 cổng phát hành → E2 pre-check → E3 cutover → E4 rollback → E5 sign-off.


Lịch sử thay đổi

Phiên bảnNgàyTác giảThay đổi
2.1.030/04/2026Ops/POLàm sạch ngôn ngữ theo package v2.1.0; giữ nguyên gate và thứ tự phát hành, chỉ đổi copy/prose cho dễ đọc hơn.
2.0.030/04/2026Ops/POĐồng bộ theo package v2.0.0: glossary canonical, PRD/UI/Dev/QA v2.0.0, _consistency-matrix.md, cổng kiểm tra sẵn sàng và publish safety cho pilot 2 CN.
1.5.728/04/2026Ops/POBổ sung go-live gate TC-15/BR-14 cho Ma trận ranh giới ảnh hưởng và smoke regression module không ảnh hưởng trước pilot
1.5.628/04/2026Ops/POĐồng bộ Dynamic Permission v2 vào go-live gate: seed action, Dynamic Permission UI grant/revoke, portal split, branch_mode và POS-only
1.5.128/04/2026Ops/POFix review đa góc nhìn: deploy order, rollback production không drop DB, hard gate incident/complaint và raw clinical access gate
1.528/04/2026Ops/POHardening sau review đa góc nhìn: Legal/SYT artifact là hard gate, support roster D0, scan/printer readiness, rollback reconcile/backfill và close reminder theo config
1.428/04/2026Ops/POChuẩn hóa theo po-ba-workflow mới: khai báo đầu vào chuẩn, heading tiếng Việt-first và owner readiness rõ hơn
1.3.227/04/2026Ops/POBổ sung gate cho Workbench need_record đúng DV cần BA và intake không accept nhầm KH/CN/record
1.3.127/04/2026Ops/POThêm gate hardening: safe-alert dictionary, token intake, source audit và cutoff chốt ngày theo cấu hình CN
1.327/04/2026Ops/POBổ sung gate vận hành thật: Bàn việc bác sĩ, Phiếu chuyển bác sĩ tư vấn, Phiếu khách tự khai, Trang điều phối phòng khám và Chốt ngày phòng khám
1.227/04/2026POCăn theo PRD v1.2: kiểm tra sẵn sàng và an toàn phát hành, 100% DV đang bán đã phân loại, unknown allergy risk không được go-live
1.021/04/2026POInitial go-live checklist theo DEC-025 3-phase rollout

Đầu vào chuẩn (Canonical Inputs)

FileVai tròNếu conflict
SOURCE_OF_TRUTH.mdNguồn sự thật chuẩn + Solution LockƯu tiên cao nhất
decision-brief.mdTóm tắt phạm vi/rủi ro/handoffChỉ định hướng độ ưu tiên kiểm tra sẵn sàng
prd.mdScope, lifecycle, ràng buộc nghiệp vụTheo truth đã khóa
dev-spec.md / qa-test-plan.md / handoff.mdViệc triển khai, quy ước kỹ thuật, coverage, blockerChecklist phát hành tổng hợp từ đây

Quy tắc sở hữu: go-live-checklist.md là nguồn chuẩn của readiness, cổng deploy, rollback và sign-off vận hành.


E1) Cổng phát hành

Phải đạt tất cả các check Day-1 trước khi bắt đầu pilot. Các check ghi rõ "Phase 2" là phần theo dõi tiếp, không chặn pilot Day-1.

E1.1) Cổng pháp lý và tuân thủ

CheckYêu cầuPhụ tráchTrạng thái
LC-1Text consent cross-branch đã được luật sư Diva approve (Phase 2 only — không block Day-1)Anh Phong + Legal⏳ Chờ xử lý
LC-2Hợp đồng thành viên mới có điều khoản đồng ý (Phase 2 only — không block Day-1)Anh Phong⏳ Chờ xử lý
LC-3Retention policy 10 năm được IT + Legal confirm bằng văn bản/email (hot 1 năm MinIO + cold 9 năm archive plan)Infra + LegalHARD NO-GO nếu còn chờ xử lý
LC-4Quy trình SYT thanh tra không phản đối bản giấy ký tay + scan reference; phải có email/biên bản nội bộ, không chấp nhận chỉ phone callAnh Phong + LegalHARD NO-GO nếu còn chờ xử lý
LC-5Form hardcode "Phiếu tiền sử dị ứng" đúng phụ lục TT51/2017 (rà lại 6 câu hỏi + format)Anh Phát + LegalHARD NO-GO nếu còn chờ xử lý

E1.2) Cổng kỹ thuật

CheckYêu cầuPhụ tráchTrạng thái
TC-1Pre-req refactor *uuid.UUID + null-guard toàn repo merge vào mainBE Dev⏳ Chờ xử lý
TC-2Integration test insert_appointment_one với order_item_id NULL passQA + BE⏳ Chờ xử lý
TC-3Audit 3 tháng production log: không có appointment NULL order_item_id đang bug silent (hoặc đã fix nếu có)BE Dev⏳ Chờ xử lý
TC-4Migration 19 tables + views/actions pass trên staging mirror productionBE + DBA⏳ Chờ xử lý
TC-5ICD-10 catalog seed ~22k rows + search <100msBE Dev⏳ Chờ xử lý
TC-6MinIO bucket clinical-record-scans cấu hình private + signed URL 15 phútInfra⏳ Chờ xử lý
TC-7Permission/masked view tầng 3 test pass bằng Dynamic Permission v2; raw clinical_record/clinical_form_instance không expose cho runtime role user, Sale chỉ qua safe view/action và hard deny tầng 3QA⏳ Chờ xử lý
TC-7Amodule_permission_action + role_module.actions seed đủ theo module_id/portal; Dynamic Permission UI grant/revoke/refetch pass; portal split, branch_mode, is_pos_only pass P0 tests TC-052A..052FQA + BE + FE⏳ Chờ xử lý
TC-8Form JSON Schema renderer build thành công 7 templatesFE Dev⏳ Chờ xử lý
TC-9Print template PDF match layout bản giấy với header CNFE + BE⏳ Chờ xử lý
TC-10Autosave 30s stress test với 50 BS đồng thời — no data lossQA⏳ Chờ xử lý
TC-11Backup daily snapshot + MinIO versioning verifyInfra⏳ Chờ xử lý
TC-12Down migration chỉ test cho dev/staging/pre-D0; production rollback drill dùng pause/code rollback giữ DB + data reconcileBE + DBA⏳ Chờ xử lý
TC-13Bàn việc bác sĩ 6 nhóm việc không false-positive need_record, Trang xem an toàn (Sale) có từ điển cảnh báo an toàn, token phiếu tự khai kiểm tra đúng phạm vi, Trang điều phối phòng khám test phân quyền đạtQA + FE⏳ Chờ xử lý
TC-14Scheduler clinic_daily_close_reminder dry-run đúng theo close_reminder_times/close_cutoff_time từng CN; default chỉ dùng khi CN chưa cấu hìnhBE + QA⏳ Chờ xử lý
TC-15Regression ranh giới ảnh hưởng D6 pass: quy ước module trực tiếp, guard module gián tiếp và smoke module không ảnh hưởng không đổi menu, permission, transaction, report, job hoặc dữ liệu ngoài scopeQA + TL⏳ Chờ xử lý

E1.3) Cổng sẵn sàng nghiệp vụ

CheckYêu cầuPhụ tráchTrạng thái
BR-1Admin đã cấu hình đủ 5 bước + SCR-04f kiểm tra sẵn sàng pass cho CN Cao Lãnh (DL) + Tân Bình II (TM)Admin + PO⏳ Chờ xử lý
BR-2100% KT đang hiệu lực có allergy_risk_level khác unknown — BS Phát xác nhậnAnh Phát + BS⏳ Chờ xử lý
BR-3100% DV đang bán của 2 CN pilot đã phân loại: mapped_requires_ba hoặc explicitly_no_baAdmin + QL CN⏳ Chờ xử lý
BR-8Xem trước tác động phát hành đã được PO + QL CN review và thời điểm áp dụng được chốtPO + QL CN⏳ Chờ xử lý
BR-4Training BS + Y tá + Lễ tân + QL CN + Sale pilot hoàn tất (4h/role/CN, Sale 2h safe-view/handoff)Ops + Training Lead⏳ Chờ xử lý
BR-5Tài liệu hướng dẫn user (PDF + video tutorial 10') readyPO + Training⏳ Chờ xử lý
BR-6Champion BS tại mỗi CN xác định + đã test thử flowOps⏳ Chờ xử lý
BR-7Mẫu giấy 2 CN pilot scan sẵn backup nếu PM sự cố; scanner/printer/tài khoản upload test pass và naming convention scan đã trainingOps + IT⏳ Chờ xử lý
BR-9BS champion pass UAT Bàn việc bác sĩ: xử lý BA thiếu/nháp/cần scan từ một mànQA + BS⏳ Chờ xử lý
BR-10Sale pilot pass UAT Trang xem an toàn (Sale): tư vấn được bằng safe-alert text đã duyệt nhưng không thấy tầng 3QA + Sales Lead⏳ Chờ xử lý
BR-11QL CN dry-run Chốt ngày phòng khám với dữ liệu backlog thậtOps + QL CN⏳ Chờ xử lý
BR-12QL CN xác nhận close_cutoff_timeclose_reminder_times cho 2 CN pilotOps + QL CN⏳ Chờ xử lý
BR-13Signed scan checklist dry-run pass: BA chính, cam đoan/cam kết, dị ứng, đơn thuốc/tờ điều trị nếu có, refusal witness nếu KH từ chối kýQA + Y tá + QL CN⏳ Chờ xử lý
BR-14PO + TL + QA sign-off Ma trận ranh giới ảnh hưởng v2.0.0: module trực tiếp có người phụ trách/việc/test, gián tiếp có guard, không ảnh hưởng có người phụ trách smokePO + TL + QA⏳ Chờ xử lý

E1.4) Cổng hỗ trợ

CheckYêu cầuPhụ tráchTrạng thái
SP-1Hotline hỗ trợ ưu tiên (Zalo/phone) cho 2 CN pilot 12h/day; số hotline và owner D0 phải được công bố T-1Ops + IT supportHARD NO-GO nếu còn TBD
SP-2On-call rotation BE + FE trong tuần 1-2 song song; roster có người chính/người dự phòng từng ngàyDev LeadHARD NO-GO nếu còn TBD
SP-3Runbook cho 10 scenarios phổ biến (form không lưu, scan fail, permission denied, ...)IT support + QA⏳ Chờ xử lý
SP-4Dashboard Grafana "Clinical Record Ops" deploy + 3 alert rules activeInfra + BE⏳ Chờ xử lý
SP-5Slack/Zalo channel pilot với 2 CN + Dev + PO; escalation path S1/S2 đã pinPO⏳ Chờ xử lý

E2) Pre-checks (1 tuần trước go-live)

E2.1. T-7 (1 tuần trước)

  • [ ] Announce go-live timeline tới 2 CN pilot (email + Slack)
  • [ ] Training refresher cho BS + Y tá + Lễ tân + QL CN + Sale pilot
  • [ ] Verify BS account + permission đúng role tại 2 CN
  • [ ] Verify scanner, printer, upload account, folder/naming convention scan tại từng CN pilot
  • [ ] Import danh mục KT cuối cùng + phân loại DV — Admin xác nhận 100% DV đang bán đã phân loại
  • [ ] Verify không còn KT đang hiệu lực có allergy_risk_level = unknown
  • [ ] Đính kèm bằng chứng Legal/SYT/retention vào go-live packet
  • [ ] Backup toàn bộ customer profile + appointment trước go-live (rollback insurance)

E2.2. T-3 (3 ngày trước)

  • [ ] Apply DB migrations + seed trên production theo C7, verify backup trước/sau migration
  • [ ] Apply Hasura metadata: actions/events/schedulers/views/permissions; raw clinical tables không cấp runtime user
  • [ ] Deploy backend handlers /actions, /events, /schedulers + event dispatcher registrations
  • [ ] Deploy FE production với feature flag OFF cho toàn bộ CN
  • [ ] Dry-run scheduler clinical_record_missing_reminderclinic_daily_close_reminder, chưa gửi notification thật nếu CN chưa live
  • [ ] Publish module qua publish_clinic_module cho 2 CN pilot, không bật trực tiếp clinic_enabled: true
  • [ ] Verify clinic_module_publication.status = live đúng thời điểm áp dụng hoặc scheduled nếu thời điểm áp dụng tương lai; runtime chỉ mở khi live AND effective_at <= now()
  • [ ] Verify SCR-14 Bàn việc bác sĩ có đủ việc trong ngày cho từng BS pilot
  • [ ] Verify SCR-16 Trang điều phối phòng khám hiển thị đúng 2 CN pilot + lệch cấu hình = 0
  • [ ] Smoke test BS tạo 1 BA test với KH demo
  • [ ] Smoke test checklist bản scan đã ký: upload thiếu phải giữ printed, upload đủ mới chuyển signed
  • [ ] Verify notification nhắc BS gửi đúng channel
  • [ ] Verify CN spa thuần khác KHÔNG thấy UI change nào (critical — DEC-001)

E2.3. T-1 (1 ngày trước)

  • [ ] Final sign-off từ Sếp Nam + Anh Phong + Anh Phát + Chị Thảo
  • [ ] Final sign-off Legal + Infra/Ops cho LC-3/LC-4/LC-5 và support roster D0
  • [ ] QL CN chạy thử SCR-17 Chốt ngày phòng khám trước giờ mở pilot
  • [ ] Sale pilot tạo 1 handoff demo và BS acknowledge
  • [ ] Broadcast cho toàn chuỗi: "Tính năng BA start pilot CN X + Y. Các CN khác không đổi gì."
  • [ ] Dev + QA + PO standby cả ngày go-live
  • [ ] Rollback plan review (E4)

E3) Kế hoạch cutover — rollout song song 3 phase (DEC-025)

E3.1) Phase 1 — Song song giấy + PM (Tuần 1-2)

Mục tiêu: BS + Y tá + Lễ tân làm quen PM. Giấy vẫn là workflow chính; PM coverage tính theo appointment/form_type cần BA có draft/completed/printed/signed hoặc visit-only log hợp lệ, không bắt buộc signed trong Phase 1.

NgàyHoạt độngĐo lường
D0 (go-live day)BS điền BA GIẤY như cũ + song song điền PM (không bắt buộc complete)Coverage PM ≥ 50%
D1-D3Tiếp tục song song. Dev + PO có mặt tại CN hỗ trợ tại chỗ nếu cầnCoverage PM ≥ 70%
D4-D7BS đã quen, song song tiếp tụcCoverage PM ≥ 85%
D8-D14Daily standup với champion BS mỗi CN, fix bug tại chỗCoverage PM ≥ 90%, no P0 bug

Success criteria Phase 1:

  • ≥90% lượt cần BA có bản PM (dù chưa signed) hoặc visit-only log hợp lệ nếu chỉ khám thuần
  • BS NPS ≥ 6/10
  • Không có incident y khoa do PM (VD: bỏ qua allergy check)

Exit Phase 1 → Phase 2 khi: Success criteria đạt đủ 3 tiêu chí trên.

Bắt buộc trong Phase 1: mỗi ngày QL CN close SCR-17 trước close_cutoff_time của CN; nếu CN chưa cấu hình riêng thì dùng 20:00 Asia/Ho_Chi_Minh. Ops review SCR-16 sáng hôm sau.

E3.2) Phase 2 — PM là chính, giấy in ra ký (Tuần 3-4)

Mục tiêu: PM trở thành công cụ chính. BS điền PM → in → ký → tải bản scan đã ký.

NgàyHoạt độngĐo lường
D15Stop ghi giấy từ đầu. PM là nguồn chính.Coverage PM 100% (đối với BA mới)
D15-D21BS điền PM → in → BS + KH ký tay → Y tá tải bản scan đã kýTải bản scan đã ký ≥ 70% trong 24h sau in
D22-D28Ổn định, fix edge caseTải bản scan đã ký ≥ 85% trong 24h

Success criteria Phase 2:

  • 100% BA mới nằm trên PM
  • ≥85% tải bản scan đã ký trong 24h sau in
  • ≥95% BA có đủ chữ ký và scan checklist bắt buộc (signed status)
  • 0 incident "BA không tìm thấy" khi SYT thanh tra

Exit Phase 2 → Phase 3 khi: đạt đủ 4 tiêu chí.

Bổ sung kiểm soát vận hành: scan backlog >24h phải <5% trước khi chuyển Phase 3.

E3.3) Phase 3 — Full PM (Tuần 5+)

Mục tiêu: Workflow standard. Mở rộng sang các CN PK khác.

TuầnHoạt động
Tuần 5Full PM tại 2 CN pilot. Bắt đầu training CN PK tiếp theo (Ninh Kiều, Hải Châu)
Tuần 6-8Rollout Ninh Kiều + Hải Châu theo cùng flow 3-phase rút gọn (1 tuần/phase)
Tuần 9+Mở rộng tới Biên Hoà, TDM, Sóc Trăng (sau khi có GP)

Go/No-go decision tại cuối Tuần 4:

  • GO: Mở rộng các CN PK còn lại
  • NO-GO: Rollback, review spec, điều chỉnh → pilot lại

E4) Kế hoạch rollback

E4.1) Trigger rollback

Phải rollback nếu xảy ra bất kỳ 1 trong các tình huống:

  1. Incident y khoa nghiêm trọng (VD: KH sốc phản vệ do BS bỏ qua allergy check + hệ thống không block đúng) — IMMEDIATE
  2. Data corruption (BA bị mất, save sai, display sai KH khác) — IMMEDIATE
  3. Performance nghiêm trọng (autosave fail >20% trong 1h, form load >10s) — 24h
  4. Pháp lý reject (SYT thanh tra phản đối bản digital, yêu cầu ngừng) — IMMEDIATE
  5. BS không thể dùng (≥3/5 BS pilot complain dropout, NPS <4) — 1 tuần review → decide

E4.2) Quy trình rollback

Tầng 1 — Tắt feature flag (nhanh nhất, ~15 phút):

  1. Admin chuyển clinic_module_publication.status = paused cho 2 CN pilot
  2. FE hide tab Hồ sơ BA + sổ + notification (ngay sau reload)
  3. BS quay lại quy trình giấy
  4. BA data trong PM giữ nguyên (không xoá) để investigate

Tầng 2 — Rollback code + giữ nguyên DB (production sau D0):

  1. Giữ clinic_module_publication.status = paused, chặn action/scheduler clinical.
  2. Re-deploy app về bản trước feature nếu lỗi nằm ở FE/BE; không chạy down migration drop clinical tables.
  3. Giữ pre-req OrderItemID *uuid.UUID nếu production đã có walk-in/null data; chỉ rollback code quanh handler gây lỗi.
  4. Đóng clinic_daily_close ngày rollback với status escalated + reason rollback.
  5. Chỉ dùng down migration trong dev/staging hoặc production pre-D0 khi chưa có dữ liệu BA thật.

Data preservation:

  • MinIO scan files: KHÔNG xoá; giữ theo retention 10 năm, đánh dấu rollback batch để investigate nếu cần
  • Database BA records: KHÔNG xoá, mark archived + retain
  • Access log: giữ vĩnh viễn (audit)
  • Tất cả BA phát sinh trong thời gian rollback dùng giấy phải được reconcile vào PM sau khi phục hồi: nhập visit-only/BA tối thiểu, upload scan giấy, ghi source_type='paper_fallback' hoặc log import tương đương.

E4.3) Sau rollback

  • [ ] Root cause analysis trong 7 ngày
  • [ ] Backfill/reconcile danh sách BA giấy phát sinh trong thời gian rollback, có người phụ trách và deadline từng CN
  • [ ] Fix + re-test trên staging 2 tuần
  • [ ] Re-pilot với scope thu hẹp (1 CN only) nếu cần
  • [ ] Update SOURCE_OF_TRUTH.md + PRD với lessons learned

E5) Ký duyệt

E5.1) Ký duyệt trước go-live

Vai tròNgườiNội dung xác nhận
CEOSếp NamApprove go-live pilot 2 CN + budget + timeline
Business Lead PKAnh PhongDanh mục KT + phân loại DV đã sẵn sàng; consent cross-branch theo dõi cho Phase 2
Medical LeadAnh PhátAllergy risk level đã phân loại; đào tạo BS pilot hoàn tất
OperationsChị ThảoĐào tạo hoàn tất; BS champion sẵn sàng; runbook đã có
Legal/Compliance— (TBD)LC-3/LC-4/LC-5 có văn bản xác nhận, không còn xác nhận miệng
IT Support Lead— (TBD)Hotline, on-call roster, scanner/printer/upload account pass
Tech Lead— (TBD)Pre-req refactor + 14 TC checks pass
QA Lead— (TBD)100% P0 pass + overall TC pass ≥95% + edge cases covered
POSơn ThọAll gates E1-E4 reviewed, acceptance final

E5.2) Ký duyệt sau pilot (30 ngày sau go-live)

MetricTargetActualPass/Fail
% BA hoàn thành đúng ngày≥90%__
Thời gian TB BS điền 1 BA≤10 phút__
Tỉ lệ BA có đủ chữ ký/scan checklist≥95%__
Tỉ lệ upload scan đủ checklist trong 24h≥85%__
NPS BS≥7/10__
CN spa thuần complaint0__
Incident y khoa0__

Go/No-go full rollout: hard gate phải pass trước khi xét metric mềm: Incident y khoa = 0CN spa thuần complaint = 0. Sau khi 2 hard gate pass, 5 metric vận hành còn lại phải đạt tối thiểu 4/5 và không có P0 bug mở. Bất kỳ incident y khoa hoặc complaint từ CN spa thuần đều dừng mở rộng và kích hoạt review rollback/pause.


E6) Liên hệ chính

Vai tròNgườiLiên lạcKhi nào gọi
POSơn Thọsontho.mkt@gmail.comSpec question, priority decision
Business Lead PKAnh PhongClassification DV, danh mục KT, pháp lý
Medical LeadAnh PhátMedical issue, allergy safety, BS workflow
OpsChị ThảoTraining, runbook, CN issue
Ops Dashboard OwnerTBD OpsTheo dõi SCR-16, Chốt ngày phòng khám, escalation
Dev Lead BETBDBackend issue, migration, API
Dev Lead FETBDUI issue, form renderer
InfraTBDMinIO, Hasura, scheduler, performance
QA LeadTBDTest case, bug triage
Hotline support 2 CN pilotTBD - NO-GO nếu chưa gán T-1Zalo/phone pilotBS/Y tá/Lễ tân/Sale cần help tại chỗ

End of Go-Live Checklist v2.1.0. Mọi sign-off bắt buộc trước go-live D0; checklist này là nguồn chuẩn cho readiness, rollback và cutover.