fa_doctors/application/admin/controller/doctor/Doctor.php/application/admin/view/doctor/doctor/add.html| 序号 | 表单显示名称 | 数据库字段名 | 字段类型 | 是否必填 | 取值说明 |
|---|---|---|---|---|---|
| 1 | 用户名 | username |
文本 | 是 | 登录用户名,需符合username规则 |
| 2 | 密码 | password |
密码 | 是 | 登录密码,需符合password规则 |
| 3 | 医生姓名 | realname |
文本 | 是 | 医生真实姓名 |
| 4 | 医疗机构 | institution_id |
下拉选择 | 是 | 所属医疗机构ID |
| 5 | 科室 | department_id |
下拉选择 | 科室级必填 | 所属科室ID(医生等级为科室级时必填) |
| 6 | 医生等级 | doctor_grade |
单选 | 否 | 1=管理级(查看所有) 2=科室级(查看医生科室下数据) 3=医生级(查看该医生数据) |
| 7 | 职称 | doctor_title |
文本 | 否 | 医生职称 |
| 8 | 医生角色 | doctor_role |
树形多选 | 是 | 从doctor_menu表选择,逗号分隔存储ID |
| 9 | 报告权限 | is_report |
单选 | 是 | 1=启用, 0=禁用 |
| 10 | 状态 | status |
单选 | 是 | 1=正常, 0=禁用 |
| 11 | 医生分类 | doctor_class |
多选下拉 | 是 | 1=临床医生 2=报告医生 3=审核医生 4=确认医生 5=登记医生 6=远程申请医生 7=远程报告医生 8=远程审核医生 9=报告修改医生 10=影像检查删除医生 (逗号分隔) |
| 12 | 检查权限 | exam_class |
多选下拉 | 是 | CR, CT, DX, ES, MR, XA, ECG, MG, PT, RF, PETCT, US (逗号分隔,*表示全部) |
| 13 | 是否为管理员 | is_admin |
单选 | 否 | 0=否, 1=是 |
| 14 | 登陆安全验证 | is_send_message |
单选 | 否 | 0=否, 1=是 |
| 15 | 短信消息推送 | send_sms |
单选 | 否 | 0=否, 1=是 |
| 16 | 检查分配权重 | weight |
数字 | 否 | 用于自动分配检查时的权重值 |
| 17 | 联系电话 | phone |
文本 | 否 | 医生联系电话 |
| 18 | 特殊机构 | special_institution |
下拉多选 | 否 | 医生可访问的特殊机构ID(逗号分隔) |
usernamerequired;usernamepasswordrequired;passworddoctor_grade1:管理级(查看所有数据)2:科室级(查看医生科室下数据,必须选择科室)3:医生级(查看该医生数据)doctor_roledoctor_menu 表(医生权限菜单表)/admin/doctor/doctor/doctorRoleTreeis_report1:启用(有报告权限)0:禁用(无报告权限)doctor_class1:临床医生2:报告医生3:审核医生4:确认医生5:登记医生6:远程申请医生7:远程报告医生8:远程审核医生9:报告修改医生10:影像检查删除医生doctor_department_class 表存储医生-科室-分类的关联关系exam_classCR:CR(计算机X射线摄影)CT:CT(计算机断层扫描)DX:DX(数字X射线摄影)ES:ES(内窥镜)MR:MR(磁共振)XA:XA(血管造影)ECG:ECG(心电图)MG:MG(乳腺摄影)PT:PT(正电子发射断层扫描)RF:RF(射频透视)PETCT:PETCT(正电子发射计算机断层扫描)US:US(超声)* 表示拥有所有检查类型的权限weightspecial_institution(表单输入字段)special_contact(实际存储表)special_contact 表中建立多条关联记录did(医生ID), sid(特殊机构ID), status(状态)参数接收
$params = $this->request->post("row/a");
代码位置:Doctor.php:131-138
调用Service层处理
$res = $this->service->addDoctor($params);
Service层处理(DoctorService::addDoctor)
事务处理
额外处理
updateDoctorClass()updateSpecialInstitution()exam_class 特殊处理
* 转换为所有检查类型的列表*fa_doctors:医生主表| 表名 | 关联字段 | 说明 |
|---|---|---|
fa_institution |
institution_id |
医疗机构表 |
fa_department |
department_id |
科室表 |
doctor_menu |
doctor_role |
医生权限菜单表(树形结构) |
doctor_department_class |
doctor_id, department_id, doctor_class |
医生-科室-分类关联表 |
special_contact |
did(医生ID), sid(机构ID) |
医生-特殊机构关联表 |
device |
device_ids |
设备表(已注释,暂不使用) |
['2','3','7']doctors 表不直接存储doctor_department_class 表存储每个分类的关联记录** 展开为所有类型NULL 表示禁用(0)is_null($status) ? '0' : $status/admin/doctor/doctor/doctorRoleTreeid:医生ID(编辑时传入,用于回显已选权限)返回:jstree格式的树形数据
[
{
"id": "1",
"parent": "#",
"text": "权限名称",
"type": "menu",
"state": {"selected": false},
"bind": ["2", "3"]
}
]
/admin/doctor/doctor/importfile:Excel文件路径php
protected $exam_class = [
'CR' => 'CR', 'CT' => 'CT', 'DX' => 'DX',
'ES' => 'ES', 'MR' => 'MR', 'XA' => 'XA',
'ECG' => 'ECG', 'MG' => 'MG', 'PT' => 'PT',
'RF' => 'RF', 'PETCT' => 'PETCT', 'US' => 'US'
];
配置项:
protected $doctor_class = [
1 => '临床医生', 2 => '报告医生',
3 => '审核医生', 4 => '确认医生',
5 => '登记医生', 6 => '远程申请医生',
7 => '远程报告医生', 8 => '远程审核医生',
9 => '报告修改医生', 10 => '影像检查删除医生'
];
php
protected $doctor_role = [
1 => '技师',
2 => '本地医生',
3 => '远程医生'
];
说明:此配置项保留,但实际使用的是从 doctor_menu 表动态读取的权限树
required;usernamerequired;passwordrequiredrequiredrequiredrequiredrequiredrequired(多选至少选一个)required(多选至少选一个)必填字段:username, password, realname, institution_id, doctor_role, is_report, status, doctor_class, exam_class 必须填写
条件必填:当 doctor_grade = 2(科室级)时,department_id 必须填写
字段格式:
特殊处理:
* 表示所有检查类型权限控制:
事务处理:
关联数据处理:
doctor_department_class 表special_contact 表下拉选择数据来源:
doctor_menu 表读取树形权限addDoctor($params)
formatSaveParams($params)
getDoctorClass($doctorId)
updateDoctorClass($doctorId, $departmentId, $doctorClass)
updateSpecialInstitution($doctorId, $params)
formatImportData($excelData)
| 日期 | 版本 | 说明 | 修改人 |
|---|---|---|---|
| 2025-12-05 | v1.0 | 初始版本,整理医生表单所有字段说明 | - |