Catalogue、优惠与保险计划业务 PRD
更新:2026-09-10 · 责任:运营/Finance/保险管理/平台 · 详细底表设计保留在原 Catalogue 技术规格中
2026-09-07 角色与价格维护确认: Finance
需要查看并维护获授权的价格资料;Clinic 与 CP 的财务价格工作统一在后台
Finance 完成,不切换成 Clinic 角色。复用本 PRD 与 CP
各自的权威价格记录、生效及版本规则,不反写历史账单或采购快照;维护权限不能只配置为读取,也不自动扩大为所有主档或发布审批权限。Insurance
与 Billing 合并为 Billing & Insurance 团队入口。统一场景及权限契约见
组织与权限产品方案。当前
Finance 的目录初始化仅授予
catalogue.read/coupon.read,价格写权限仍待实施;场景入口已按平台实施边界章节
实现,不能以入口可见视作价格维护权限已交付。
功能地图
先区分“共享定义”“患者持有”“本次使用”“实际资金”四层,再阅读各主数据功能。
| 功能 | 使用者/业务对象 | 产品方案与阅读位置 |
|---|---|---|
| 服务与非药品 | 目录维护者 · Item/Product | §3:共享售价、成本和可用诊所 |
| 检查目录及供应商成本 | 目录维护者/Finance · Test | §4:统一项目、Vendor 映射及分层成本 |
| 医生问诊定价 | 获授权价格维护者 · Pricing | §5:标准价、Policy/Clinic 例外及解析优先级 |
| 保险与企业计划 | 计划维护者 · Programme | §6:目录、Policy/Contract 来源、卡面与权益说明 |
| 套餐与优惠 | 运营 · Package/Campaign | §7:共享定义、患者权益及核销边界 |
| 导入、发布与变更 | 获授权维护者 · Draft/Version | §2、8–9:校验、发布、停用、历史与配置归属 |
1. 管理边界与导航
本 PRD 维护相关主数据的既有唯一业务规范;对外入口分属 Catalogue、Insurance & Benefit Programmes 和 Packages & Coupons 三个 App,均属于 Business Operations。2026-09-09 用户确认:保险/企业/员工计划独立,不放 Catalogue;Coupon 与 Service Packages 放同一 App。
Catalogue 固定导航为 Service Items、Lab & Imaging、Products、Consultation Pricing、Change History & Controls;只维护共享服务、检查、非药品项目、价格及成本。打开即进入实际列表,不另设说明性 Overview,不嵌套保险、套餐、优惠或 Other Settings。患者个人卡号在 Patient & eMR,药品临床属性及库存由 Pharmacy/CP 对应工作台承接。
Insurance & Benefit Programmes 承接 §6;Packages & Coupons 承接 §7。复杂 Benefit Contracts 后台仍不开放;既有有效企业/员工合同可作为卡种来源。入口及全局/个人/页面设置范围见App 与配置层级。
flowchart LR
A[Programme 共享计划目录] --> B[Patient 患者持卡及个人编号]
B --> C[Appointment 或 Visit 本次选择与核验]
C --> D[Cashier 付款责任与应收]
D --> E[Payment 实际到账与分配]
P[Policy 或 Benefit Contract] --> A
目录更新影响后续选用;患者默认计划不自动成为本次选择,本次人工核验也不代表实际收款。各层保留自己的来源与历史快照。
2. 共用规则
MD-06: 新记录 Draft → 发布后 Active → 停用 Inactive。发布、停用及价格变更要求相应权限、原因和审计;本期不强制第二人审批。已用于交易的记录不物理删除;签署处方/医嘱、套餐购买、报价及 Invoice 保存当时项目与适用价格/规则快照。
List Price 是对患者的参考售价,Cost 是内部成本,不能用同一个字段混写。主数据更新只影响后续按规则取价,不自动改历史交易。
3. Service Items 与 Products
| 内容 | Service Items | Products |
|---|---|---|
| 列表字段 | Code、Name、Category、List Price、Cost、Available Clinics、Status | SKU/Code、Name、Category、List Price、Cost、Available Clinics、Inventory Tracking、Status |
| 搜索筛选 | Code/Name、Category、Clinic、Status | 同左,另有 Inventory Tracking |
| 编辑补充字段 | Description、生命周期信息 | Barcode、Unit of measure、Description |
| 价格规则 MD-01 | 所有诊所共用同一 List Price 与 Cost | 同左;药品不在普通 Product 内维护 |
| 可用诊所 | 新建默认 All Clinics;可搜索多选、全选或清空 | 明确空选表示所有诊所不可用,不自动恢复 All Clinics |
Clinic 只控制能否选用,不能覆盖 Service/Product 的 List Price 或 Cost。Quantity、Lot、入库、出库和采购不在产品主档页处理。
4. Lab & Imaging
MD-02: 一个 Test Catalogue,不再拆四个平行页面。一条规范 Test Item 显示 Unique Code、Name、Category、Lab/Imaging、List Price、Vendor 覆盖、Cost 覆盖与状态;可按名称/代码、类型、Vendor、Category、Status 筛选。Test Item 对所有诊所可用,无 Available Clinics 字段。
点击项目打开详情:基本资料 → Vendor & Code Mapping → Clinic/Doctor Cost Schedule。
| 资料层 | 字段 | 定义 |
|---|---|---|
| Test Item | 唯一代码、名称、分类、类型、List Price | 患者售价统一,不随 Vendor/Clinic/Doctor 改变 |
| Vendor mapping | Vendor、Vendor Item Name、Vendor Code、Vendor Default Cost、生效信息 | 同一项目可有多个 Vendor;代码与默认成本属于该 Vendor |
| Cost schedule | Test Item、Vendor、Clinic、可选 Doctor、Cost、生效信息 | Doctor + Clinic + Vendor → Clinic + Vendor → Vendor Default → Cost unavailable |
Request Form Mapping 已从当前管理界面移除;旧四页结构和 Group Default Cost 不再作为验收标准。Vendor 映射、成本明细持久化及解析仍待后端,界面可编辑不等于落库成功。
5. Consultation Pricing
MD-03: 每位医生一套 Standard Consultation Price,适用于各就诊类型与诊所,可有诊所例外。Insurance Rate 按 Doctor + Card/Policy 定义,默认全诊所适用,也可另设诊所例外。
取价优先级固定为:Doctor + Policy + Clinic → Doctor + Policy → Doctor + Clinic → Doctor Standard → Price unavailable 。
列表显示 Doctor、Standard Price、Clinic Exceptions、Insurance Rates、Status;详情维护基础价与例外、生效信息。不得再按 Doctor + Clinic + Consultation Type 建另一套基础价。当前新模型及 Billing Resolver 未落地,不能以旧 Offering 返回了价格认定该规则通过。
6. Insurance & Benefit Programmes
独立 App 管理 Insurance、Corporate membership 和 Staff benefit 目录。这些是保险/合作保障安排,不是折扣券;患者持有资料及本次付款安排仍分别归 Patient/Visit。
6.1 卡种字段与来源
| 字段 | 要求 |
|---|---|
| Programme Type | Insurance、Corporate membership 或 Staff benefit |
| Provider/Sponsor、Card Name、Plan Name、Card Class、Status | 使用业务名称展示;不是患者个人实例 |
| Linked Policy | 只用于 Insurance,引用现有 Policy |
| Linked Benefit Contract | Corporate membership/Staff benefit 必填,且必须与合同类型匹配;Promotion/Insurance 类型 Benefit Contract 不可选 |
| Front/Back card face | 官方 JPEG/PNG/WebP,单张不超过 5 MB;可上传、预览、替换或移除,使用私有文件访问 |
MD-04: 类型切换清除不兼容来源,互斥保存。历史未标类型的卡兼容为 Insurance。卡种只存来源身份,不复制合同 Plan、Rule、额度、Pricing、Eligibility 或 Utilization。
保险卡页为卡面网格,支持类型/提供方/状态和关键词筛选;零数据仍有 New Card 入口,缺图明确显示,不能用示意卡冒充。患者持卡、预约和登记统一读取此目录。
6.2 简单 Policy 管理
Manage Policies 在保险页内打开侧边编辑,维护 Policy No./Name、有效期、Holder Type、Contract/Insurance Type 与 Billing 可见性。没有独立顶层 Policy 页。企业合作计划不得写入 Policy 假冒保险合同。
6.3 计划详情与双语权益说明
- 统一独立桌面 App、页面标题及 Patient & eMR 的目录引用名称为 Insurance & Benefit Programmes。覆盖 Insurance policy、Corporate membership、Staff benefit;稳定 app ID、API 路径及既有底表保持不变。企业 / 员工计划仍引用同类型 Benefit Contract,保险仍引用 Policy。
- 卡片的 View details 和既有卡片编辑抽屉增加
Benefits & policy information 只读区。权威数据来自
policy_card_info.card_id → policy_card.id,逐条显示title_cn、title_en、msg_cn、msg_en;保留多条记录、全文、换行、列表、强调和安全链接,在一个详情区域内按每条记录中文在前、英文在后连续展示,不分栏、不显示语言标签或选择器;空标题、空正文及全空记录自动隐藏,不自动翻译或补造业务规则。 - 说明按需从
GET /api/insurance-card-programmes/{id}/information读取,沿用benefits.read权限,响应禁止缓存;不添加到共享目录、患者 H5、自助登记或患者主档快照。排除软删除说明及已删除卡片。加载中、无记录、读取失败和重试有独立界面状态,切换卡片后不显示上一个请求的内容。 - 原始 HTML 必须净化后渲染,保留文本强调、颜色及列表;移除脚本、事件处理器、表单、嵌入内容、图片及不安全链接 / 样式。JSON 附件含业务说明与门户凭证,本轮不导入附件、不将其内容写入 Git 或预览。公开/本地演示均使用合成数据。
- 用户提供的 JSON 是按名称导出的示例,缺少
card_id、id、type、clazz_id。不按名称自动建立数据库关联,不推测clazz_id的适用范围;上线前须用目标环境数据核对直接关联覆盖率。这是说明展示能力,不是自动保险资格核验、费率解析、Claim 或预批核执行能力。 - 验收:保险和企业计划入口使用统一名称;一张卡的多条双语说明在单一区域内完整显示,无语言选择器;纯文本、富文本、单语言空值、无记录、失败重试、跨卡切换和恶意 HTML 均有对应验证。底表无 schema 变更、无说明写入,本轮不扩展编辑或批量导入。 当前代码与合成预览已有该展示链路。目标后端部署、真实关联数据与业务 UAT 单独验收;发布记录在变更日志与测试材料中维护,不在本页逐轮追加。详情抽屉不显示 Source preview;卡片编辑保留来源选择,展示区仅使用真实双语业务说明。
7. Packages & Coupons
MD-05: Coupon 字段包括名称/Code、折扣类型与值、最低消费、可选最高减免、有效日期、次数限制、适用对象、描述及 Stackable。默认不与 Contract/Benefit 叠加,只有明确 Stackable 才允许。
同一 App 内保留 Service Packages 与 Coupons 两个业务区。Packages 沿用现有 Setup、Sale、Wallet、Consumption、Liability 和 Lab 协作;Coupons 独立读取 Campaign、编辑并按权限发布,不再为了打开优惠页读取 Catalogue 全套底表。
Campaign 管理不代表 Cashier 已能核销;优惠与套餐的读取、维护、发布权限独立。套餐现有购买/支付链路不因导航合并改成统一 Cashier;实际核销必须保存 Campaign/版本与撤销历史,跨套餐与优惠叠加仍需对应后端实现。套餐核销、退款与财务规则见 Cashier/Pharmacy 文档。
8. 批量导入
支持的主数据用同一流程:Bulk import → 下载模块专用模板 → 上传 Excel/CSV → 全文件预校验 → Pass/Warning/Error 逐行预览 → 选择获支持的重复处理策略 → 确认导入 → 行级结果/错误下载及审计。
- 导入仅产生 Draft,不绕过发布权限,不把警告或错误隐藏成全成功。
- Service、Test Item、Product、Coupon、Policy 可复用现有导入基础;每种字段仍按本域验证。
- Insurance Card 逐卡维护,不提供 Excel 批量新增 。
- Clinic Availability、Vendor/Cost Schedule、Consultation Pricing 及 Package Component 的正确底表未完成前,不开放模拟成功导入。
9. 变更控制与配置归属
Catalogue 移除 Other Settings。共享系统资源归 System Settings,组织/账号/权限归 Organization & Access,个人模板/布局归 Personal Settings;药品及库存仍归所属业务 App。Change History & Controls 显示本模块谁改了什么、原因、版本、发布/停用结果,不是经营报表。
验收重点:字段含义、可用范围、价格优先级、失效与历史快照、互斥来源、导入前校验、实际持久化。每个尚缺底表的功能在实现记录标 Pending,不能因前端预览完成而关闭需求。