# 机构表单字段说明文档 ## 文档信息 - **文档名称**:机构管理-新增机构表单字段说明 - **数据库表名**:`fa_institution` - **对应功能**:机构管理 - 新增机构 - **源码路径**:`/application/admin/controller/institution/Institution.php` - **表单视图**:`/application/admin/view/institution/institution/add.html` - **生成日期**:2025-12-05 --- ## 字段对照表 | 序号 | 表单显示名称 | 数据库字段名 | 字段类型 | 是否必填 | 取值说明 | |------|-------------|-------------|---------|---------|---------| | 1 | 机构ID | `id` | 文本 | 是 | 机构唯一标识 | | 2 | 机构名称 | `name` | 文本 | 是 | | | 3 | 医院级别 | `institution_level` | 文本 | 是 | | | 4 | 状态 | `status` | 单选 | 是 | 1=启用, 2=禁用 | | 5 | 作为远程诊断医院 | `super_level` | 单选 | 是 | 0=否, 1=是 | | 6 | 地区 | `area` | 级联选择 | 是 | 省/市/区,存储时拆分为下面3个字段 | | 7 | - 省份 | `ris_province` | 文本 | - | 从area拆分 | | 8 | - 城市 | `ris_city` | 文本 | - | 从area拆分 | | 9 | - 区县 | `ris_district` | 文本 | - | 从area拆分 | | 10 | 医院地址 | `address` | 文本 | 否 | | | 11 | 经度 | `lng` | 文本 | 是 | 隐藏字段,通过地址自动获取 | | 12 | 纬度 | `lat` | 文本 | 是 | 隐藏字段,通过地址自动获取 | | 13 | 商务负责人 | `sale_id` | 文本 | 否 | 销售人员ID(多个用逗号分隔) | | 14 | - 销售姓名 | `sale_name` | 文本 | - | 自动从sale_id查询fa_admin表获取nickname | | 15 | 代理商 | `agent_id` | 文本 | 否 | 从fa_admin表选择,限定group_id=3 | | 16 | 报告绑定条件 | `institution_condition` | 多选 | 否 | -1=未知,0=手机,1=身份证,2=病历号,3=检查号,4=住院号,5=门诊号,6=病人id(逗号分隔) | | 17 | 报告主标题 | `report_title` | 文本 | 否 | | | 18 | 报告副标题 | `report_subtitle` | 文本 | 否 | | | 19 | 本地域名 | `local_domain` | 文本 | 否 | | | 20 | 影像存储单位代码 | `image_unit_code` | 文本 | 否 | | | 21 | 报告关键字 | `keyword` | 文本 | 否 | 关键字ID,多个用逗号分隔 | | 22 | - 关键字文本 | `keyword_text` | 文本 | - | 自动从ins_keyword表获取name,逗号分隔 | | 23 | 检查列表展示字段 | `custom_field` | 多选 | 否 | 逗号分隔存储 | | 24 | 历史检查数据源 | `interconnected_exam_ins` | 文本 | 否 | | | 25 | 历史检查患者索引字段 | `interconnected_ins_field` | 多选 | 否 | 逗号分隔存储 | | 26 | 报告未出之前是否可以查看影像 | `report_see` | 单选 | 否 | 1=可以查看, 0=不可以(默认1) | | 27 | AI报告解读开关 | `ai_suggest` | 单选 | 否 | 1=启用, 0=禁用 | | 28 | 同心智医-报告解读 | `interpret` | 单选 | 否 | 0=禁用, 1=启用 | | 29 | 同心智医-机构编码 | `interpret_code` | 文本 | 否 | | | 30 | 短信推送患者数字影像链接 | `patient_sms` | 单选 | 否 | 0=不发送, 1=发送(默认0) | | 31 | 检查自动分配 | `is_auto_mode` | 单选 | 否 | 0=不开启, 1=开启(默认0) | | 32 | 开启新版浏览器 | `is_new_browser` | 单选 | 否 | 0=不开启, 1=开启(默认0) | | 33 | 公众号邮件发送功能 | `patient_send_email` | 单选 | 否 | 0=不开启, 1=开启(默认0) | | 34 | 打印页面是否展示审核医生 | `review_print` | 单选 | 否 | 1=展示, 2=不展示(默认1) | | 35 | 安装时间 | `install_time` | 日期 | 否 | 格式:YYYY-MM-DD | | 36 | 患者过滤-检查时间 | `filter` (JSON字段) | 文本 | 否 | 存储在filter字段的exam_datetime属性中,格式YYYYMMDD | | 37 | 患者过滤-检查类型 | `filter` (JSON字段) | 文本 | 否 | 存储在filter字段的exam_class属性中,多个用逗号分隔,如CT,MR | | 38 | 打印报告页互认标识 | `hr_info` | 文本 | 否 | | | 39 | 备注 | `remark` | 文本域 | 否 | | --- ## 重要字段详细说明 ### 1. 作为远程诊断医院 (super_level) - **字段名**:`super_level` - **数据类型**:INT - **取值**: - `0`:否 - `1`:是 - **说明**:标识该机构是否作为远程诊断医院使用 - **代码位置**:Institution.php:29-33 ### 2. 影像存储单位代码 (image_unit_code) - **字段名**:`image_unit_code` - **数据类型**:VARCHAR - **说明**:用于存储机构的影像存储单位代码 - **代码位置**:Institution.php:101-105 ### 3. 打印页面是否展示审核医生 (review_print) - **字段名**:`review_print` - **数据类型**:INT - **取值**: - `1`:展示(默认) - `2`:不展示 - **说明**:控制打印报告页面是否显示审核医生信息 - **代码位置**:Institution.php:181-185 ### 4. 商务负责人 (sale_id / sale_name) - **存储字段**:`sale_id` (存储ID,逗号分隔) - **显示字段**:`sale_name` (存储姓名,逗号分隔) - **数据来源**: - 从 `fa_auth_group_access` 表查询 group_id 为 6 或 7 的用户 - 从 `fa_admin` 表获取对应的 id 和 nickname - **关联表**:`fa_auth_institution_access` 存储机构与销售人员的关联关系 - **代码位置**:Institution.php:184-212 ### 5. 代理商 (agent_id) - **字段名**:`agent_id` - **数据来源**: - 从 `fa_auth_group_access` 表查询 group_id = 3 的用户 - 从 `fa_admin` 表获取对应的用户信息 - **代码位置**:Institution.php:463-485 ### 6. 地区字段 (area / ris_province / ris_city / ris_district) - **表单输入**:`area` (格式:省/市/区) - **数据库存储**:拆分为三个字段 - `ris_province`:省份 - `ris_city`:城市 - `ris_district`:区县 - **处理逻辑**: ```php $area = explode('/',$params['area']); $params['ris_province'] = $area[0] ?? ''; $params['ris_city'] = $area[1] ?? ''; $params['ris_district'] = $area[2] ?? ''; ``` - **代码位置**:Institution.php:152-161 ### 7. 患者过滤字段 (filter) - **字段名**:`filter` - **数据类型**:TEXT (存储JSON格式) - **包含属性**: - `exam_datetime`:检查时间过滤(格式:YYYYMMDD) - `exam_class`:检查类型过滤(如:CT,MR,逗号分隔) - **存储格式**: ```json { "exam_datetime": "20250101", "exam_class": "CT,MR" } ``` - **说明**:低于设定检查时间或匹配检查类型的数据不会被患者搜索到 - **代码位置**:Institution.php:170-180 ### 8. 报告绑定条件 (institution_condition) - **字段名**:`institution_condition` - **数据类型**:VARCHAR (逗号分隔) - **可选值**: - `-1`:未知 - `0`:手机 - `1`:身份证 - `2`:病历号 - `3`:检查号 - `4`:住院号 - `5`:门诊号 - `6`:病人id - **说明**:用于配置报告绑定的条件字段 - **数据来源**:conditionDict() 方法定义 - **代码位置**:Institution.php:722-734 --- ## 数据处理流程 ### 新增机构时的数据处理 1. **参数接收** ```php $params = $this->request->post("row/a"); ``` 2. **字段转换处理** - 地区拆分:`area` → `ris_province`, `ris_city`, `ris_district` - 过滤条件:`exam_datetime`, `exam_class` → `filter` (JSON) - 多选字段:数组 → 逗号分隔字符串 - 销售人员:`sale_id` → 查询获取 `sale_name` - 关键字:`keyword` → 查询获取 `keyword_text` 3. **关联表处理** - 插入 `fa_auth_institution_access` 表,建立用户与机构的关联关系 - 包括创建人和销售人员 4. **日志记录** ```php SysLog::recode("institution", "C", $params); ``` ### 编辑机构时的数据处理 - 与新增流程类似 - 额外处理销售人员变更:`updateSaleInsId()` 方法 - 更新 `fa_auth_institution_access` 表中的关联关系 --- ## 关联数据表 ### 主表 - `fa_institution`:机构主表 ### 关联表 | 表名 | 关联字段 | 说明 | |-----|---------|-----| | `fa_admin` | `agent_id`, `sale_id` | 管理员表(代理商、销售人员) | | `fa_auth_group_access` | `uid`, `group_id` | 权限组关联表(筛选代理商和销售) | | `fa_auth_institution_access` | `uid`, `institution_id` | 用户机构访问权限表 | | `ins_keyword` | `keyword` | 关键字表 | --- ## 业务规则 ### 1. 机构ID唯一性 - 新增时检查机构ID是否已存在 - 代码:`Institution.php:145-148` ### 2. 销售人员权限 - 销售人员必须属于权限组 6 或 7 - 定义位置:`Institution.php:54-57` ### 3. 代理商权限 - 代理商必须属于权限组 3 - 定义位置:`Institution.php:49` ### 4. 安装时间处理 - 空值时设置为 NULL - 代码:`Institution.php:141-143` ### 5. 事务处理 - 新增和编辑操作使用数据库事务 - 确保数据一致性 --- ## API接口说明 ### 1. 销售人员下拉列表 - **接口**:`/admin/institution/institution/saleSelectList` - **方法**:GET/POST - **返回**:销售人员列表 (id, nickname) - **代码位置**:`Institution.php:492-514` ### 2. 代理商下拉列表 - **接口**:`/admin/institution/institution/agentSelectList` - **方法**:GET/POST - **返回**:代理商列表 (id, username) - **代码位置**:`Institution.php:463-485` ### 3. 获取经纬度 - **接口**:`/admin/institution/institution/getLngLat` - **方法**:POST - **参数**:name (地址名称) - **返回**:lng (经度), lat (纬度) - **代码位置**:`Institution.php:703-720` --- ## 配置项说明 ### 1. 自定义字段配置 - **配置键**:`ins_custom_field` - **获取方式**:`Config::get('ins_custom_field')` - **代码位置**:`Institution.php:235` ### 2. 互联字段配置 - **配置键**:`interconnected_ins_field` - **获取方式**:`Config::get('interconnected_ins_field')` - **代码位置**:`Institution.php:236` --- ## 注意事项 1. **必填字段**:id, name, institution_level, status, super_level, area 必须填写 2. **字段格式**: - 日期格式:YYYY-MM-DD - 逗号分隔字段:去除空值,trim处理 3. **数据校验**: - 使用模型验证器(modelValidate) - 验证器路径:`/application/admin/validate/institution/Institution.php` 4. **权限控制**: - 代理商和销售人员从特定权限组筛选 - 通过 `fa_auth_institution_access` 表控制访问权限 5. **事务处理**: - 所有增删改操作都在事务中执行 - 失败时自动回滚 6. **日志记录**: - 所有操作记录到系统日志 - 操作类型:C(新增), U(更新), D(删除) --- ## 更新记录 | 日期 | 版本 | 说明 | 修改人 | |-----|------|------|-------| | 2025-12-05 | v1.0 | 初始版本,整理机构表单所有字段说明 | - | --- ## 相关文档 - 数据库设计文档 - 权限管理说明 - API接口文档