# 场景说明
本案例中主要实现针对已有数据库表的快速服务开发,将开发后的服务发布称服务资产,并通过在线申请方式直接获取可以访问的服务地址及相关授权信息。
# 操作流程
# 第一步、前期准备
如果您是第一次使用平台,并需要为本示例配置自己的账号内容,需要在组织机构管理中添加员工和账号,并且给相应账号赋予对应权限。
# 数据源准备
准备一个可用的Mysql数据源,按照步骤初始化相关数据库及表字段。也可以直接使用一个已有的数据源。其他数据库也可以,相应的脚本需要自行调整。
# 步骤一.创建数据库及相关数据表
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8mb4;
DROP TABLE IF EXISTS `test`.`t_nurse`;
CREATE TABLE `test`.`t_nurse` (
`general_nurse_no` varchar(64) NOT NULL COMMENT '一般护理记录流水号',
`diag_no` varchar(32) NOT NULL COMMENT '就诊流水号',
`business_no` varchar(64) NOT NULL COMMENT '业务编号',
`org_code` varchar(32) NOT NULL COMMENT '机构代码',
`patient_org_no` varchar(64) NOT NULL COMMENT '注册机构的患者编号',
`upload_status_mark` varchar(1) NOT NULL COMMENT '数据上传标识',
`unified_social_credit_code` varchar(22) NOT NULL COMMENT '统一社会信用代码',
`org_name` varchar(70) NOT NULL COMMENT '机构名称',
`patient_name` varchar(50) NOT NULL COMMENT '患者姓名',
`gender_code` varchar(1) NOT NULL COMMENT '性别代码',
`gender_name` varchar(32) NOT NULL COMMENT '性别名称',
`birth_date` date NOT NULL COMMENT '出生日期',
`diag_type_name` varchar(16) NOT NULL COMMENT '就诊类型名称',
`diag_type_code` varchar(1) NOT NULL COMMENT '就诊类型代码',
`pat_no` varchar(36) NOT NULL COMMENT '门(急)诊号',
`hospital_no` varchar(36) NOT NULL COMMENT '住院号',
`bed_no` varchar(64) NOT NULL COMMENT '病床号',
`room_no` varchar(32) NOT NULL COMMENT '病房号',
`ward_name` varchar(100) NOT NULL COMMENT '病区名称',
`depart_no` varchar(64) NOT NULL COMMENT '科室编号',
`depart_name` varchar(64) NOT NULL COMMENT '科室名称',
`nurse_record_time` datetime NOT NULL COMMENT '护理记录时间',
`allergic_his` text COMMENT '过敏史',
`diet_case_code` varchar(4) DEFAULT NULL COMMENT '饮食情况代码',
`diet_case_name` varchar(1000) DEFAULT NULL COMMENT '饮食情况名称',
`diet_instruction_code` varchar(7) DEFAULT NULL COMMENT '饮食指导代码',
`diet_instruction_name` varchar(1000) DEFAULT NULL COMMENT '饮食指导名称',
`postproc_safe_check_mark` varchar(1) DEFAULT NULL COMMENT '发出手术安全核对表标志',
`risk_post_safe_check_mark` varchar(1) DEFAULT NULL COMMENT '发出手术风险评估表标志',
`revoke_safety_check_mark` varchar(1) DEFAULT NULL COMMENT '收回手术安全核对表标志',
`revoke_risk_check_mark` varchar(1) DEFAULT NULL COMMENT '收回手术风险评估表标志',
`foot_dorsal_artery_mark` varchar(1) DEFAULT NULL COMMENT '足背动脉搏动标志',
`breathe_rate` decimal(6,0) DEFAULT NULL COMMENT '呼吸频率(次/min)',
`pulse_rate` decimal(8,0) DEFAULT NULL COMMENT '脉率(次/min)',
`sbp` decimal(8,0) DEFAULT NULL COMMENT '收缩压(mmHg)',
`dbp` decimal(8,0) DEFAULT NULL COMMENT '舒张压(mmHg)',
`body_temperat` decimal(5,1) DEFAULT NULL COMMENT '体温(℃)',
`weight` decimal(7,2) DEFAULT NULL COMMENT '体重(kg)',
`oxy_saturation` decimal(8,1) DEFAULT NULL COMMENT '血氧饱和度(%)',
`update_time` datetime DEFAULT NULL COMMENT '业务数据更新时间',
`business_gener_time` datetime NOT NULL COMMENT '业务数据产生时间',
`insert_datcenter_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '入datacenter库时间',
`id` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '主键',
`gateway_yibao_name` varchar(50) CHARACTER SET utf8 NOT NULL COMMENT '医保代码',
`partition_date` date NOT NULL COMMENT '分区日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='一般护理记录';
INSERT INTO `test`.`t_nurse`(`general_nurse_no`, `diag_no`, `business_no`, `org_code`, `patient_org_no`, `upload_status_mark`, `unified_social_credit_code`, `org_name`, `patient_name`, `gender_code`, `gender_name`, `birth_date`, `diag_type_name`, `diag_type_code`, `pat_no`, `hospital_no`, `bed_no`, `room_no`, `ward_name`, `depart_no`, `depart_name`, `nurse_record_time`, `allergic_his`, `diet_case_code`, `diet_case_name`, `diet_instruction_code`, `diet_instruction_name`, `postproc_safe_check_mark`, `risk_post_safe_check_mark`, `revoke_safety_check_mark`, `revoke_risk_check_mark`, `foot_dorsal_artery_mark`, `breathe_rate`, `pulse_rate`, `sbp`, `dbp`, `body_temperat`, `weight`, `oxy_saturation`, `update_time`, `business_gener_time`, `insert_datcenter_time`, `id`, `gateway_yibao_name`, `partition_date`) VALUES ('20240621001', '20240304', 'B0001', '10101', '310107199007102938', '1', '91310000748756174J', '普元', '张三', 'M', '男', '2001-10-01', '验血', '1', '3011', '1001', '3421', '3401', 'A区', '5012', '内科', '2024-06-21 15:35:28', '无', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-06-21 15:36:26', '2024-06-21 15:36:22', '2024-06-21 15:36:17', 'id001', 'yb001', '2024-06-21');
INSERT INTO `test`.`t_nurse`(`general_nurse_no`, `diag_no`, `business_no`, `org_code`, `patient_org_no`, `upload_status_mark`, `unified_social_credit_code`, `org_name`, `patient_name`, `gender_code`, `gender_name`, `birth_date`, `diag_type_name`, `diag_type_code`, `pat_no`, `hospital_no`, `bed_no`, `room_no`, `ward_name`, `depart_no`, `depart_name`, `nurse_record_time`, `allergic_his`, `diet_case_code`, `diet_case_name`, `diet_instruction_code`, `diet_instruction_name`, `postproc_safe_check_mark`, `risk_post_safe_check_mark`, `revoke_safety_check_mark`, `revoke_risk_check_mark`, `foot_dorsal_artery_mark`, `breathe_rate`, `pulse_rate`, `sbp`, `dbp`, `body_temperat`, `weight`, `oxy_saturation`, `update_time`, `business_gener_time`, `insert_datcenter_time`, `id`, `gateway_yibao_name`, `partition_date`) VALUES ('20240621002', '20240302', 'B0002', '10102', '310107199007102932', '1', '91310000748756174J', '普元', '李四', 'M', '男', '2001-10-01', '验血', '1', '3011', '1001', '3421', '3401', 'A区', '5012', '内科', '2024-06-21 15:35:28', '无', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-06-21 15:36:26', '2024-06-21 15:36:22', '2024-06-21 15:38:49', 'id002', 'yb002', '2024-06-21');
INSERT INTO `test`.`t_nurse`(`general_nurse_no`, `diag_no`, `business_no`, `org_code`, `patient_org_no`, `upload_status_mark`, `unified_social_credit_code`, `org_name`, `patient_name`, `gender_code`, `gender_name`, `birth_date`, `diag_type_name`, `diag_type_code`, `pat_no`, `hospital_no`, `bed_no`, `room_no`, `ward_name`, `depart_no`, `depart_name`, `nurse_record_time`, `allergic_his`, `diet_case_code`, `diet_case_name`, `diet_instruction_code`, `diet_instruction_name`, `postproc_safe_check_mark`, `risk_post_safe_check_mark`, `revoke_safety_check_mark`, `revoke_risk_check_mark`, `foot_dorsal_artery_mark`, `breathe_rate`, `pulse_rate`, `sbp`, `dbp`, `body_temperat`, `weight`, `oxy_saturation`, `update_time`, `business_gener_time`, `insert_datcenter_time`, `id`, `gateway_yibao_name`, `partition_date`) VALUES ('20240621003', '20240305', 'B0002', '10102', '310107199007102932', '1', '91310000748756174J', '普元', '王五', 'M', '男', '2001-10-01', '验血', '1', '3011', '1001', '3421', '3401', 'A区', '5012', '内科', '2024-06-21 15:35:28', '无', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-06-21 15:36:26', '2024-06-21 15:36:22', '2024-06-21 15:41:06', 'id003', 'yb003', '2024-06-21');
INSERT INTO `test`.`t_nurse`(`general_nurse_no`, `diag_no`, `business_no`, `org_code`, `patient_org_no`, `upload_status_mark`, `unified_social_credit_code`, `org_name`, `patient_name`, `gender_code`, `gender_name`, `birth_date`, `diag_type_name`, `diag_type_code`, `pat_no`, `hospital_no`, `bed_no`, `room_no`, `ward_name`, `depart_no`, `depart_name`, `nurse_record_time`, `allergic_his`, `diet_case_code`, `diet_case_name`, `diet_instruction_code`, `diet_instruction_name`, `postproc_safe_check_mark`, `risk_post_safe_check_mark`, `revoke_safety_check_mark`, `revoke_risk_check_mark`, `foot_dorsal_artery_mark`, `breathe_rate`, `pulse_rate`, `sbp`, `dbp`, `body_temperat`, `weight`, `oxy_saturation`, `update_time`, `business_gener_time`, `insert_datcenter_time`, `id`, `gateway_yibao_name`, `partition_date`) VALUES ('20240621004', '20240303', 'B0003', '10102', '310107199007102932', '1', '91310000748756174J', '普元', '刘六', 'M', '男', '2001-10-01', '验血', '1', '3011', '1001', '3421', '3401', 'A区', '5012', '内科', '2024-06-21 15:35:28', '无', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-06-21 15:36:26', '2024-06-21 15:36:22', '2024-06-21 15:38:49', 'id004', 'yb004', '2024-06-21');
INSERT INTO `test`.`t_nurse`(`general_nurse_no`, `diag_no`, `business_no`, `org_code`, `patient_org_no`, `upload_status_mark`, `unified_social_credit_code`, `org_name`, `patient_name`, `gender_code`, `gender_name`, `birth_date`, `diag_type_name`, `diag_type_code`, `pat_no`, `hospital_no`, `bed_no`, `room_no`, `ward_name`, `depart_no`, `depart_name`, `nurse_record_time`, `allergic_his`, `diet_case_code`, `diet_case_name`, `diet_instruction_code`, `diet_instruction_name`, `postproc_safe_check_mark`, `risk_post_safe_check_mark`, `revoke_safety_check_mark`, `revoke_risk_check_mark`, `foot_dorsal_artery_mark`, `breathe_rate`, `pulse_rate`, `sbp`, `dbp`, `body_temperat`, `weight`, `oxy_saturation`, `update_time`, `business_gener_time`, `insert_datcenter_time`, `id`, `gateway_yibao_name`, `partition_date`) VALUES ('20240621005', '20240303', 'B0003', '10102', '310107199007102932', '1', '91310000748756174J', '普元', '田七', 'M', '男', '2001-10-01', '验血', '1', '3011', '1001', '3421', '3401', 'A区', '5012', '内科', '2024-06-21 15:35:28', '无', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-06-21 15:36:26', '2024-06-21 15:36:22', '2024-06-21 15:38:49', 'id005', 'yb005', '2024-06-21');
# 系统信息配置
# 步骤一.进入系统管理页面,点击【新增系统】,进入表单页面。
# 步骤二.录入系统信息和已经准备好的数据源信息。
录入信息系统,系统名称为“测试系统”。 录入数据源信息,数据源编码设置为“testdb”。
# 步骤三.确认元数据是否采集成功,查看数据源下的元数据列表。
# 第二步、服务开发
使用数据服务模块开发单表服务。
# 服务开发
通过平台数据服务开发功能,以“零代码”方式将准备好的数据库表自动发布⚖️单表的API查询服务,并提供在线服务授权、调试等功能。
# 步骤一.进入数据开发页面,点击【新增】按钮。
# 步骤二.选择单表服务。
# 步骤三.配置服务基本信息。其中服务编码会做为服务地址的一部分,因此需要全局唯一设置。一般可以是表名。
# 步骤四.选择准备好的数据表。
# 步骤五.选择服务可以使用的输入参数,示例中取消了全部字段,则当前服务不允许输入查询参数。
# 步骤六.默认选中所有字段作为输出参数,点击【提交】按钮,完成服务开发配置。
# 服务发布
# 步骤一.选择配置的服务,点击操作栏中的【发布】按钮
# 步骤二.选择服务对应的数据源信息,选择刚才配置的“测试数据源”,提交后完成服务发布。
# 第三步、服务编目
服务发布后在资产编目中将原生服务发布为数据资产。
# 服务编目
将上一步中发布的数据服务编制成数据资产,以提供对外的服务资产检索及在线申请共享使用。
# 步骤一.进入资产编目页面,点击【新增】按钮。
# 步骤二.选择【基于服务编目】。
# 步骤三.配置资产基本信息,完成后点击【下一步】。
# 步骤四.选择【中台封装api】,在服务列表中选择配置的“一般护理记录查询”服务。确认服务信息后点击【提交】按钮完成目录编制。
# 编目审核
服务目录编制完成后,会自动发起编目审核流程。在流程中心处理审批任务,提交后完成服务发布。
# 步骤一.进入流程中心-我的任务页面,在查询框中输入“一般护理记录”则可以找到待审批的记录。
# 步骤二.点击流程标题,进入审批页面。确认目录数据,点击【提交】完成审批。
目前平台预设的编目发布只需要一步审批即可,因此提交后资产状态变更为“已发布”。
# 步骤三.在资产检索页面中查询已发布服务资产。
# 第四步、服务申请
在资产检索或者资产浏览页面中查看已发布的数据资产列表,查看资产详情,选择需要申请的资产清单,填写申请表单发起资产申请审批流程。
# 资产申请
# 步骤一.在资产检索页面中查询已发布服务资产。
可以在资产检索或者资产浏览中查看已发布资产信息,通过检索功能定位已发布资产“一般护理记录查询”。 点击资产名称可以查看资产详情,在资产详情页面右上角也可以点击【立即申请】按钮发起申请。
# 步骤二.填写申请单。其中共享类型选择“数据服务”。
申请表单中共享类型分为三种,数据落地、数据服务、文件下载。具体区别详见资产浏览描述。本示例中主要演示在线数据服务共享,因此在选择共享类型时请选择“数据服务”。
# 资产审核
# 步骤一.在流程中心-我的任务中查看已有待办。
在待办中可以根据申请的资产名称查询任务。 资产审核流程共分为两步,分别是业务部门审批以及数据部门审批。其中业务部门审核会由根据用户所申请的资产对应的部门管理员来审批,如果一次申请多个资产,则会触发会签,即多个部门管理员一起审批。目前平台策略是需要全部通过才能进去下一步。数据服务部门管理员则是由数据部门管理员角色审批。
业务部门审批主要是对合规性和数据权责的确认,数据部门审批主要是对需求的合理性和可落地性进行评估。 审批环节主要是确认申请单内容,完成后提交即可通过审批。
# 步骤二.在资源准备中完成线上服务授权,提交完成申请流程。
在完成审批后会有一个“资源准备”的环节,针对不同的数据共享方式,在资源准备环节中需要处理的内容也略有不同。此示例中我们选择了“数据服务”的共享方式。 在页面中会看到三种操作方式:
- 服务授权:主要针对原生服务的直接授权,利用平台已有能力实现在线自动授权,授权中可以配置服务的入参 、出参以及数据的脱敏加密配置。
- 关联服务授权:数据资产支持服务关联,因此我们可以将已关联的服务直接提供授权,这里面支持原生服务关联和第三方服务关联,原生服务关联后授权方式和上一步一致,三方服务则需要手动录入授权信息。
- 添加自定义授权:直接服务地址、授权信息的手动录入,一般多用于线下授权配置后,平台人工录入的场景。 在本示例中我们选择【服务授权】,对原生服务进行授权操作。 配置服务的入参、出参以及数据的脱敏加密配置后,提交即可完成。 授权信息会自动回显在列表中。确认授权完成后点击【提交】即可完成审批。
# 获取数据使用方式
在线获取数据服务地址及相关授权信息。
# 步骤一.在资产申请中查看已申请流程
在资产申请中查看已经发起的申请流程,找到对应的申请记录。
# 步骤二.在详情页面中获取数据服务授权信息
在详情页面中点击资产列表前方的小箭头,展示当前资产下的数据获取方式。本示例是通过服务方式共享,因此展示的是服务地址以及相关的授权信息。 如果是原生服务,可以参照服务调用说明进行调用。 如果是管理员账号,也可以直接在服务授权页面进行在线调试。