当前 DRG 系统中已有两套字典相关表体系:平台通用字典(CB_BasicDictionary/CB_BasicDictionarySub)和平台业务字典(HB_Dictionaries/HB_DictionariesDateDetail),这些表都绑定了行政区划(省/市/区)维度。DRG 系统中存在大量不依赖于行政区划的业务字典型数据(如费用类型、预警等级、科室分类、药品类别、操作类型等),需要一个独立于区划维度的纯 DRG 字典管理模块。
本设计采用单表自引用结构:通过 ParentDr 字段为空或不为空来区分"字典类型"和"字典项",简化表结构,降低维护成本。
Goals:
CB_DRGDictTable 单表,通过 ParentDr 自引用区分字典类型(ParentDr=NULL)和字典项(ParentDr=类型ID)Non-Goals:
HB_Dictionaries 等表结构CB_DRGDictTable(字典表,同时存储类型和项,持久化类: User.CBDRGDictTable):
| 字段 | 类型 | 说明 |
|---|---|---|
| ID | Integer (PK) | 主键 |
| ParentDr | FK→CB_DRGDictTable | 自引用外键:NULL=字典类型,非NULL=所属类型的ID |
| Code | %String(50) | 编码 |
| Name | %String(100) | 名称(显示名称) |
| Status | %String(1) | 状态:Y=启用,N=停用 |
| SortNo | %Integer | 排序号 |
| Remark | %String(MAX) | 说明/备注 |
| CreateDate | %Date | 创建日期 |
| CreateTime | %Time | 创建时间 |
| CreateUserDr | FK→HB_User | 创建人 |
索引设计:
IdxCode on (ParentDr, Code) — 同一类型下编码唯一(ParentDr=NULL 时类型编码全局唯一)IdxName on (ParentDr, Name) — 同一类型下名称唯一IdxParent on ParentDr — 快速查询某类型下的所有字典项设计理由:
Code 在同一 ParentDr 下唯一:类型编码全局唯一,项编码在同类型下唯一Status 显式控制启用/停用,比日期范围判断更直观复用现有的 src.util.operatetable 公共 Insert/Update/Delete 方法和 src.DRG.BasicData.InterFace 接口路由模式。
| 接口编号 | 方法 | 说明 | 查询条件 |
|---|---|---|---|
| 02010059 | GetDRGDictTypeList | 查询所有字典类型(不分页,ParentDr IS NULL) | ParentDr IS NULL |
| 02010060 | GetDRGDictItemList | 查询字典项列表(按类型筛选,分页) | ParentDr = 指定类型ID |
| 02010061 | SaveDRGDictItem | 新增/修改字典项(含启用/停用) | ParentDr = 指定类型ID |
| 02010062 | SaveDRGDictType | 新增/修改字典类型(含启用/停用) | ParentDr 置空 |
启用/停用复用 Save 方法,前端传入 Status 值(Y/N)即可。
参考提供的 UI 设计,采用左侧字典类型树/列表 + 右侧字典项表格布局:
左侧栏(字典类型):
ParentDr IS NULL 的字典类型右侧内容区(字典项管理):
Switch 组件,checked=Y(启用),unchecked=N(停用),蓝色=启用,灰色=停用弹窗(新增/编辑字典项):
(ParentDr, Code) 保证数据库层面不重复User.CBDRGDictTable.cls 持久化类,编译后自动建表src.DRG.BasicData.DictManage.cls 业务逻辑类InterFace.cls 中注册新接口映射