Compare commits

...

298 Commits

Author SHA1 Message Date
xueqingkun 357aea83e8 README.md update 1 year ago
liu 51484d6733 bugfix:修复问题 1 year ago
liu 2deeb08c6d bugfix:修复问题 1 year ago
liu d5f392d0d1 bugfix:修复问题 1 year ago
liu 1766021c2b bugfix:修复问题 1 year ago
xueqingkun 31b1b34b12 manage: 修改docker文件 1 year ago
xueqingkun 14e8cb760e README: 添加说明文档 1 year ago
xueqingkun f2ba8df622 manage : 修改test服务端口 1 year ago
xueqingkun 4a8573e751 manage : 修改test环境数据库地址 1 year ago
xueqingkun b6547b4389 web : queryHistoryList fix null bug 1 year ago
xueqingkun 55914c5b05 rasa : 去除modelId 1 year ago
xueqingkun 7ebc5e6276 rasa : 修改Dockerfile 1 year ago
xueqingkun 3c0d5acbd9 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 2060c06a34 rasa : 修改Dockerfile 1 year ago
liu aa1629ade5 代码提交:测试类上传 1 year ago
liu 878e0146fa 代码提交:测试类上传 1 year ago
liu 7571705f6e 代码提交:上传视频 1 year ago
xueqingkun 369f8a6ae4 web : 修改注释 1 year ago
xueqingkun 20bdd4dda2 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 6768578a16 代码提交:上传视频 1 year ago
liu 70d20b1ac0 代码提交:修改minio为test的bucket 1 year ago
liu 7eadb12c2c 代码提交:默认视频 1 year ago
xueqingkun de9057e600 web : 添加配置文件 1 year ago
liu 117c5b0b64 代码提交 1 year ago
xueqingkun 736cfc3291 web : talkByVideo添加video-base64 1 year ago
xueqingkun b7a2236cef Merge branch 'dev_2.0.0_test' into dev_2.0.0 1 year ago
xueqingkun 8a035d66d9 web : talkByVideo添加默认值 1 year ago
xueqingkun b95218a11e README: 添加环境访问地址 1 year ago
liu 92989d281d bugfix:修复诊断依据不正确的问题 1 year ago
liu 7a68456ef7 bugfix:修复初步诊断依据不正确的问题 1 year ago
liu 518192984c 优化视频播放的地址 1 year ago
xueqingkun 43c881f1c0 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun fcff56f26e manage: 修复bug 1 year ago
liu bc683dbfae 优化,去除answer的patient依赖 1 year ago
liu 8663175bb4 优化 1 year ago
liu 696bbaaf05 提交本地视频方案的相关代码 1 year ago
liu 37e5a93833 提交本地视频方案的相关代码 1 year ago
liu 3a2217e3d9 增加暂存接口 1 year ago
liu 167181c66c bugfix 1 year ago
liu b86e582e6e 增加视频回复 1 year ago
liu 4ff3c6bf31 增加视频回复 1 year ago
xueqingkun 6263047420 test: mino - 语料 add 1 year ago
liu f5f91244fc bugfix:修复位置名称没有的问题 1 year ago
liu 8ba94d592e bugfix:优化诊断结果不显示的问题 1 year ago
liu 9c08c8cdce bugfix:优化诊断结果不显示的问题 1 year ago
liu 37d84d1011 bugfix:增加邮编不显示的问题 1 year ago
liu 686f378e4c bugfix:增加邮编不显示的问题 1 year ago
xueqingkun d92f26d1b7 web: operation_history_flag ADD 1 year ago
xueqingkun 7922a8e0c0 web: operation_history_flag ADD 1 year ago
liu 976b33d6e7 回复增加本地video接口 1 year ago
liu f85c2a627b 增加字段 1 year ago
xueqingkun 0ff139a803 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 5c88a419f9 web: operation_history_flag ADD 1 year ago
liu f8dd864942 优化阈值 1 year ago
liu c704386be2 优化answer为varchar 1 year ago
liu ffb509017d 文件类提交 1 year ago
liu 87a8941f35 bugfix:修复最后问诊时间不更新的问题 1 year ago
xueqingkun 806618e611 web: 查询辅助检查项添加排序功能 1 year ago
xueqingkun 4173d4b9fd Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 081e49a92c model: 修改查询处置计划树 1 year ago
liu 97b955a5a8 bugfix:修复最后问诊时间不更新的问题 1 year ago
liu dd6f149730 bugfix:修复初步诊断未选中的问题 1 year ago
xueqingkun 50c9805ce4 web: 修改queryDiagnosticBasisListForPrimary 接口 1 year ago
liu 759d168966 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu c2548a115b bugfix:修复最终诊断预期诊断为空的问题 1 year ago
xueqingkun 0a00e89278 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun a4d03a4322 web: 修改 savePrimary 接口,添加疾病唯一校验 1 year ago
liu 97e4ed0ad6 bugfix:修复初步诊断可以提交相同疾病的问题 1 year ago
liu be56dbb188 提交集成minio的代码 1 year ago
liu 61f72c6ec8 增加初步诊断修改时,可以新增项目 1 year ago
liu d0a145582d 增加初步诊断修改时,可以新增项目 1 year ago
liu a563f6f397 增加初步诊断修改时,可以新增项目 1 year ago
liu 43f0f2ef4c 优化,增加了校验注解 1 year ago
liu 72e0670e28 bugfix:修复新增初步诊断显示null的问题 1 year ago
liu c295051802 bugfix:修复体温计不能正确查询到结果的问题 1 year ago
liu ef4a3fc96b bugfix:修复体温计不能正确查询到结果的问题 1 year ago
liu 3d741b282e bugfix:修复电子病历不能正确保存的问题 1 year ago
liu a1da405d37 bugfix:修复新建问诊未生成病历的问题 1 year ago
liu 627ab5d889 提交辅助检查判读结果 1 year ago
xueqingkun 2308f3f8a6 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 92fc5403e1 manage: 修改配置文件 1 year ago
liu 81a20bf16f 提交辅助检查判读结果 1 year ago
liu 0fadda6819 提交websocket相关优化代码 1 year ago
xueqingkun 297dcc53b3 manage: 添加日志配置文件 1 year ago
xueqingkun f38198085b Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 7841153e58 manage: 添加dockerfile文件 1 year ago
liu 718f395719 提交websocket相关代码 1 year ago
liu 5736487568 提交websocket相关代码 1 year ago
liu 2ce1252556 提交websocket相关代码 1 year ago
liu 1fc3b08900 提交websocket相关代码 1 year ago
liu 4d85b74c52 提交websocket相关代码 1 year ago
liu c6c47b9507 提交websocket相关代码 1 year ago
liu 047cd36495 提交websocket相关代码 1 year ago
xueqingkun c6de710292 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 62d38a29e8 web: 添加配置文件环境 1 year ago
liu 665016f998 提交websocket相关代码 1 year ago
liu 001f40204f 提交websocket相关代码 1 year ago
liu 60b1b6e46d 提交websocket相关代码 1 year ago
liu f976fc5efb 提交websocket相关代码 1 year ago
xueqingkun f5ca86ede5 rasa: 设置modelId默认为1;
调整对话接口
1 year ago
xueqingkun d8a35320f4 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 497a5a0ebc rasa: 设置modelId默认为1 1 year ago
liu f1aeb1eeb7 提交websocket相关代码 1 year ago
xueqingkun b5377bb305 web:添加 查看资源是否有剩余 接口 1 year ago
xueqingkun 6f365d133e Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 8e0704a60e web:代码调整 1 year ago
liu 3c91a96586 提交websocket相关代码 1 year ago
xueqingkun a97dfd599f web:代码调整 1 year ago
xueqingkun f98abe0149 web:代码调整 1 year ago
xueqingkun 6821cd03cb model:重构TreatmentPlanRecordService.queryByProcessId接口 1 year ago
xueqingkun ef03a59de4 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 41711c4c0e 提供分页查询 1 year ago
xueqingkun 9cad83457e Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu f6781d276f 提供分页查询 1 year ago
xueqingkun d852904594 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu badf0b4b44 优化诊毕接口 1 year ago
xueqingkun f581af1ad3 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 4ef4e47016 优化诊毕接口 1 year ago
liu eceebb3c08 优化诊毕接口 1 year ago
xueqingkun 28043a2976 model:修改controller入参 1 year ago
xueqingkun 9dfff24041 model:queryTree:采用数据库中的id替换md5计算出的虚拟id 1 year ago
xueqingkun 63796445b4 model:vp_config_treatment_plan表添加firstMeasuresId字段 1 year ago
xueqingkun d010af373d model:vp_config_treatment_plan表添加disposalPlanId字段 1 year ago
xueqingkun 1a9abe1494 web:新增 queryTreatmentPlanDetails 接口 1 year ago
liu fa432a1d48 优化诊毕接口 1 year ago
liu 8757f60599 优化诊毕接口 1 year ago
liu 21d411b26c 优化诊毕接口 1 year ago
xueqingkun 64c442d939 web:调整代码 1 year ago
liu f65e96b526 优化诊毕接口 1 year ago
liu 643d94494c 优化诊毕接口 1 year ago
xueqingkun 661b378873 web:调整代码 1 year ago
liu 50c7a72aaf bugfix 1 year ago
xueqingkun c8397014cb Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 0bc00115f6 web:调整代码 1 year ago
liu a31e1d9988 提交初步诊断回显接口 1 year ago
liu 2aeeac2a8e 提交初步诊断回显接口 1 year ago
liu ed312d44a0 提交初步诊断回显接口 1 year ago
liu 8c8396b11a 提交初步诊断回显接口 1 year ago
liu 1904a7f7f6 提交初步诊断回显接口 1 year ago
liu d63c4f81ad Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 51d59517c1 代码优化 1 year ago
xueqingkun 9353cf4176 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 9dae6a0791 web:调整代码 1 year ago
liu bf171937d1 代码优化 1 year ago
liu 737755651f 代码优化 1 year ago
liu c78b90fe4a 代码优化 1 year ago
liu 680e07cc39 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu d77ef0ec7c 提交问诊历史的相关代码 1 year ago
xueqingkun 59c2b46ca3 web:调整代码 1 year ago
xueqingkun 491ff0efe1 web:调整代码 1 year ago
xueqingkun 1d95cb9155 rasa-mange :去除代码中的Log4j 1 year ago
xueqingkun 5b298e2096 web : 修改电子病例接口 1 year ago
xueqingkun 0937cc80fe web : 修改电子病例接口 1 year ago
xueqingkun b963080610 rasa-manage: 启动后执行wakeUpInterruptServerScheduled 1 year ago
xueqingkun 2f80a9a79f rasa-manage: 启动后执行wakeUpInterruptServerScheduled 1 year ago
xueqingkun 23d81a5719 web: 查询处置计划树 1 year ago
xueqingkun 53bc464316 manage: 转移queryTree位置-为每一个id为空的node生成一个虚拟的id,主要是为前端组件使用 1 year ago
xueqingkun ff24e0cb57 manage: 转移queryTree位置 1 year ago
xueqingkun cac7d036fc web: 添加电子病例视图接口 1 year ago
xueqingkun 6bd33e34a3 web: 结束问诊添加结束问诊时间 1 year ago
xueqingkun fb657bb9fa model :ProcessMedical 去除结束问诊字段,Process表添加结束问诊字段字段 1 year ago
xueqingkun d18cb19987 model :ProcessMedical 添加结束问诊字段 1 year ago
xueqingkun 9f2e8db131 web :问诊列表添加 删除问诊实例接口 1 year ago
xueqingkun 7f7bd78bb2 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 0218761a1c web :问诊列表添加初步诊断 1 year ago
xueqingkun f7b8440195 web :添加问诊序列号 1 year ago
xueqingkun 2e89edc985 docker: 添加redis-dockerfile 1 year ago
liu 45900abc2f 提交问诊历史的相关代码 1 year ago
liu 4073d7f63d 提交评估的相关代码 1 year ago
xueqingkun 4bf72b2938 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 0239c2485c web: 添加药品查询功能 1 year ago
liu 24e211a0df 提交评估的相关代码 1 year ago
xueqingkun 6fc06a1cc8 web: 添加用户账号管理功能 1 year ago
xueqingkun 853a13b45e web: 添加用户账号管理功能 1 year ago
xueqingkun 033d4347c6 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun fe0af29b27 web: 添加确认处置计划功能 1 year ago
liu ed21c5d316 提交辅助检查的修改 1 year ago
liu 944bbddcca 提交辅助检查的修改 1 year ago
xueqingkun 56417e2fbf web: 添加确认处置计划功能 1 year ago
xueqingkun 858d128f8c Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 3eb0de3431 web: 添加处置计划评估结果功能 1 year ago
liu 79b65870d1 提交诊断依据列表,初步诊断列表 1 year ago
liu 1d942eeef7 提交诊断依据列表,初步诊断列表 1 year ago
xueqingkun 937e8c713a model: vp_treatment_plan_record 表 添加字段 1 year ago
xueqingkun 5b21c5d64a model: 添加vp_treatment_plan_drug 表 重命名 1 year ago
xueqingkun 4640ce2e76 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 66588bf851 model: 添加vp_treatment_plan_drug 表 1 year ago
liu 7d444beed4 提交诊断依据列表,初步诊断列表 1 year ago
xueqingkun b21a5f70e2 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 726448fef2 web: 添加处置计划相关功能 1 year ago
liu c7bc05e0c6 提交诊断依据列表,初步诊断列表 1 year ago
xueqingkun ba61e59b6f Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun fbc48cb4a8 web: 修改代码 1 year ago
liu 732c568a2d Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu ce1c2acdfa 提交诊断依据列表,初步诊断列表 1 year ago
xueqingkun 511b8864ef web: 添加电子病例相关接口 1 year ago
xueqingkun 3257ac18df model:1. MyBatisMetaObjectHandler -createTime,updateTime增加默认值 1 year ago
xueqingkun 5c6e30a5fd model:1. vp_process 添加字段 1 year ago
xueqingkun ccdc5cdfb2 model:1. vp_process_medical 添加字段 1 year ago
xueqingkun 1a650a4df5 web:1. 删除 HeartController 1 year ago
xueqingkun c0d0565aab Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0
# Conflicts:
#	virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java
1 year ago
xueqingkun d5e0bd1b0a web:1. 添加 分页查询病例信息列表 接口 1 year ago
liu fd5a8226f3 提交辅助检查相关代码 1 year ago
xueqingkun 0bde7b509a web:1. 问诊实例列表查询功能 1 year ago
xueqingkun 158196e119 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0
# Conflicts:
#	virtual-patient-web/src/main/java/com/supervision/controller/UserController.java
1 year ago
xueqingkun 2e9c097620 web:1. 疾病表添加表字段 1 year ago
liu 24d943fe43 问诊大厅代码提交 1 year ago
liu 25450fc781 问诊大厅代码提交 1 year ago
xueqingkun b83a820f63 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun b08921138f web:1. 修改 登录接口 1 year ago
liu 6f91973c8e 问诊大厅代码提交 1 year ago
liu ca97cffad8 问诊大厅代码提交 1 year ago
liu 20ae059e00 问诊大厅代码提交 1 year ago
liu b36d38e286 单点登录踢下线 1 year ago
liu 7b522286e7 单点登录踢下线 1 year ago
liu f380b9fc10 单点登录踢下线 1 year ago
xueqingkun 74f5ac4514 rasa:1. 修改 Dockerfile 1 year ago
xueqingkun e4a61d9862 common:1. 添加nginx Dockerfile 1 year ago
xueqingkun 6bb22ec25e manage:1. 修复问题 1 year ago
xueqingkun 81a13def97 rasa-manage:1. 添加docker镜像构建文件 1 year ago
xueqingkun ffdd115f5e manage:1. 修复问题 1 year ago
xueqingkun 78ad6808bf Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun f21da0f6e3 manage:1. 修复问题 1 year ago
liu 8b6ad5330b 集成Redis 1 year ago
xueqingkun d77a7b9bbd manage:1. 修改test环境数据库配置文件 1 year ago
xueqingkun 4ba733bea3 manage:1. 屏蔽单点登录限制
2. 修复请求出现异常时未有效清楚认证信息
1 year ago
xueqingkun 31a383f086 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 5407c4b84c 提交关于超时登录的代码 1 year ago
xueqingkun 4590549852 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 1aec63ca88 manage:增加字段 1 year ago
liu b4f8168028 提交关于超时登录的代码 1 year ago
xueqingkun 4e6340ac06 manage:test -git 1 year ago
xueqingkun 4740bbafe1 manage:添加功能 1 year ago
xueqingkun 763f2e5aee Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun cf3ab921c8 manage:修改函数名 1 year ago
liu 8f010b7c99 病历管理代码提交 1 year ago
xueqingkun 4ac974c50e manage:抽取sql 1 year ago
liu 5e6f029dc8 病历管理代码提交 1 year ago
liu c59c4f9907 病历管理代码提交 1 year ago
xueqingkun 365c9446d0 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun c89bf42035 manage:添加体格检查、辅助检查 诊断依据视图字段 1 year ago
liu 7bca2c63df 病历管理代码提交 1 year ago
xueqingkun b638a661ef manage:添加体格检查、辅助检查 诊断依据视图字段 1 year ago
xueqingkun c81b4055b2 manage:添加体格检查、辅助检查 诊断依据视图字段 1 year ago
xueqingkun 41dd81ac3f manage:添加 查询疾病身体部位树 功能 1 year ago
xueqingkun e93e8d6a83 manage:代码结构调整 1 year ago
xueqingkun 6641bd4bbf manage:代码结构调整 1 year ago
xueqingkun 822af5cec0 common:添加 IllegalArgumentException 异常处理逻辑 1 year ago
xueqingkun 70b6f60cb2 common:单点登录校验逻辑添加空判断逻辑 1 year ago
xueqingkun a3ef5675b8 manage:代码结构调整 1 year ago
xueqingkun b718b5e35b manage:代码结构调整 1 year ago
xueqingkun 949386e11c manage:代码结构调整 1 year ago
xueqingkun 6fa9641290 manage:代码结构调整 1 year ago
liu d912bbaeeb 优化 1 year ago
xueqingkun 4d56468a28 manage:代码结构调整 1 year ago
xueqingkun 161c90aaf3 manage:代码结构调整 1 year ago
xueqingkun 4320559301 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 9d16bb58b4 manage:代码结构调整 1 year ago
liu 0d103102d3 重复登录校验逻辑 1 year ago
liu 3e06aa5893 病历管理代码提交 1 year ago
xueqingkun 35a8319106 manage:代码结构调整 1 year ago
xueqingkun 686c149a48 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 150cb16873 manage:代码结构调整 1 year ago
liu f0a7b18da9 package 1 year ago
xueqingkun 87ba70f100 manage:代码结构调整 1 year ago
xueqingkun c9f19d35bb Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun bc62a3677d manage:代码结构调整 1 year ago
liu e8f9284e54 病例管理修改 1 year ago
liu 12cb7a6c32 病例管理修改 1 year ago
xueqingkun 1159b3e523 manage:代码结构调整 1 year ago
xueqingkun dcf2853190 manage:代码结构调整 1 year ago
xueqingkun d722669db4 manage:代码结构调整 1 year ago
xueqingkun 6bd610d479 manage:代码结构调整 1 year ago
xueqingkun 98538db7dc common: 添加 JSONUtil.toJsonStr(result) 转换异常处理 1 year ago
xueqingkun da4f37e3a5 manage:代码结构调整 1 year ago
xueqingkun a9e72d6f6d Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 0750334c82 manage:代码结构调整 1 year ago
liu 4cef221c0b 病例管理修改 1 year ago
liu 2f0acf4315 病例管理修改 1 year ago
xueqingkun 9825ba2ae8 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 40504046b3 新增病例管理 1 year ago
xueqingkun 8c70cdba9b manage:代码结构调整 1 year ago
xueqingkun 6e802fffcf Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 41f2a9282d manage:代码结构调整 1 year ago
liu 6615d49333 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
liu 3014f6e274 优化字段,新增问诊病历表 1 year ago
xueqingkun b607d93da1 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun 0f542eed24 manage:代码结构调整 1 year ago
liu 6a3c864192 优化字段 1 year ago
xueqingkun 8cd33b2698 Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0 1 year ago
xueqingkun c8de05db9f manage:代码结构调整 1 year ago
liu 402040a6dd 优化字段 1 year ago
liu 8060d82518 vp_medical_rec优化字段 1 year ago
liu 989cb44e32 process增加字段 1 year ago
xueqingkun 0ceadbf1bf manage:添加配置文件 1 year ago
xueqingkun 24575d1785 修改dev数据库连接配置 1 year ago
xueqingkun 0ebfae0389 修改dev数据库连接配置 1 year ago
xueqingkun 6e15cbe3ba 修改表结构 1 year ago

@ -1,3 +1,26 @@
# virtual-patient # virtual-patient
虚拟病人WEB后端 虚拟病人WEB后端
## 环境地址访问
### dev环境
- 前台内网访问:
- http://192.168.10.138:8199/#/login
- https://192.168.10.138:443/#/login
- 前台外网访问
- http://124.220.94.55:8014/#/login
- https://124.220.94.55:8025/#/login
- 后台内网访问(访问前需要先登录):
- http://192.168.10.138:8199/#/caseManagement/diseaseType
- https://192.168.10.138:443/#/caseManagement/diseaseType
### test环境
- 前台内网访问:
- http://192.168.10.138:8299/#/login
- https://192.168.10.138:453/#/login
- 前台外网访问
- http://124.220.94.55:8013/#/login
- https://124.220.94.55:8015/#/login
- 后台内网访问(访问前需要先登录):
- http://192.168.10.138:8299/#/caseManagement/diseaseType
- https://192.168.10.138:453/#/caseManagement/diseaseType

@ -0,0 +1,19 @@
# 设置基础镜像
# 在137服务器中使用的是 rasa_dev:1.0.0镜像
FROM nginx:1.25
ENV APP_HOME=/data/vp
# 设置工作目录
WORKDIR $APP_HOME
# 复制java jar 到容器中
COPY ./docs/conf.d /etc/nginx/conf.d
# 复制rasa配置文件到 rasa目录下
COPY ./docs/ssl /data/vp/nginx/ssl
# 暴漏服务端口
EXPOSE 80 443
# 设置启动命令
CMD ["nginx","-g","daemon off;"]

@ -0,0 +1,3 @@
# 构建步骤
- 修改配置文件 docs/conf.d/default.conf中的服务器地址
- 运行Dockerfile文件构建镜像 docker build -t my/nginx:1.25 .

@ -0,0 +1,40 @@
# 定义web服务地址
upstream virtual-patient-web{
server 192.168.10.138:8799;
}
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
client_max_body_size 20M; # 设置客户端请求的最大上传大小为 20MB可以根据实际情况修改
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
}
location /rasa/ {
root /usr/share/nginx/html/;
index rasa.html rasa.htm;
}
location /virtual-patient/ {
proxy_pass http://virtual-patient-web/virtual-patient/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/dist;
}
}

@ -0,0 +1,49 @@
# 定义web服务地址
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /data/vp/nginx/ssl/cert.pem;
ssl_certificate_key /data/vp/nginx/ssl/key.pem;
# 配置SSL参数
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384;
# 配置SSL会话缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
# 配置SSL安全性选项
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
client_max_body_size 20M; # 设置客户端请求的最大上传大小为 20MB可以根据实际情况修改
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
}
location /rasa/ {
root /usr/share/nginx/html/;
index rasa.html rasa.htm;
}
location /virtual-patient/ {
proxy_pass http://virtual-patient-web/virtual-patient/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/dist;
}
}

@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDdzCCAl8CFC5Pwm//gTURwneg5cjhbkyueufNMA0GCSqGSIb3DQEBCwUAMHgx
CzAJBgNVBAYTAkNIMQswCQYDVQQIDAJOSjEOMAwGA1UEBwwFbmogeWgxDDAKBgNV
BAoMA3NzdDEMMAoGA1UECwwDc3N0MQ8wDQYDVQQDDAZzc3RvcmcxHzAdBgkqhkiG
9w0BCQEWEDEyMzQ1NkBlbWFpbC5jb20wHhcNMjMxMTEwMDEyMzIzWhcNMjMxMjEw
MDEyMzIzWjB4MQswCQYDVQQGEwJDSDELMAkGA1UECAwCTkoxDjAMBgNVBAcMBW5q
IHloMQwwCgYDVQQKDANzc3QxDDAKBgNVBAsMA3NzdDEPMA0GA1UEAwwGc3N0b3Jn
MR8wHQYJKoZIhvcNAQkBFhAxMjM0NTZAZW1haWwuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEA0/VotZw72C+GVQnKsVfwtxeXEPPfiUfE0/H6mp8A
jhxHnFofNK5mvjYs3++U9UEfP1jq84flaD5qgrEGzhauJg6NdrLdcd9RCguu8Pkm
YHIMVl9UzLQexKg15wh0Fc8S6vc3xGBPfosS29YJulXcUZB2CeVJ9CXCTx2Z1dRG
Ug9eMTiPwgB8GnQ56h2GjTyCnVWeVoXBFVef6sY0czkPoJVPk7TZI3K5BmaLBNX1
0L4OzaJtOa6ZWll3rGxVrk/7oB+Z3t3l8NXF9SrmC039K3sZerNLjlVUdkGD52jz
xCc4Eixcus2pduKfIP3dUhdn05TNUln1/nIFRErcXUWdswIDAQABMA0GCSqGSIb3
DQEBCwUAA4IBAQCLmsogw3J6KOyHnzaWQaKvhRzqPAupIBY4HYTk+hyOahgMMkkd
+3QIiWU/pp0Nu5iyYytzGRCQIz1Jh+xpk3UQVpayDB8C4XIB7oyzpuatTuyeCvq/
lnDlk8jk64EewLLWE2pOce6yAKZ/xhcQiDI9YcjgGOkUOjv7Hgqhzwlafrt5FXGB
znFmVi5A52RqkkteplkRsl08OE5VmfxwFYJWZ7QXMlp5ec13oCE21PU+cmLLF/Vb
xl7JJKeMOgDICiSczcYzwP56SiYFktKQ8KmDotFWgBM9mtxkEcOqPb2Xe9vzOclk
AK+5bHhgF2yZGhjbNuzp/FwGSAIozuR5IXxJ
-----END CERTIFICATE-----

@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICvTCCAaUCAQAweDELMAkGA1UEBhMCQ0gxCzAJBgNVBAgMAk5KMQ4wDAYDVQQH
DAVuaiB5aDEMMAoGA1UECgwDc3N0MQwwCgYDVQQLDANzc3QxDzANBgNVBAMMBnNz
dG9yZzEfMB0GCSqGSIb3DQEJARYQMTIzNDU2QGVtYWlsLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANP1aLWcO9gvhlUJyrFX8LcXlxDz34lHxNPx
+pqfAI4cR5xaHzSuZr42LN/vlPVBHz9Y6vOH5Wg+aoKxBs4WriYOjXay3XHfUQoL
rvD5JmByDFZfVMy0HsSoNecIdBXPEur3N8RgT36LEtvWCbpV3FGQdgnlSfQlwk8d
mdXURlIPXjE4j8IAfBp0Oeodho08gp1VnlaFwRVXn+rGNHM5D6CVT5O02SNyuQZm
iwTV9dC+Ds2ibTmumVpZd6xsVa5P+6Afmd7d5fDVxfUq5gtN/St7GXqzS45VVHZB
g+do88QnOBIsXLrNqXbinyD93VIXZ9OUzVJZ9f5yBURK3F1FnbMCAwEAAaAAMA0G
CSqGSIb3DQEBCwUAA4IBAQCFdN/RMNZtduCGs21f5Le4uGePh2nHzqB2tPzPsWYV
LLPO/pInHB0lQ3vJLFtIeaTLIDwB+AFcdM7rNhMGz9rj/Qrk9LCvgm+CQGUOy1h4
r1tJ27z+8xfwHls/fgghHnSLoaUvma2FfIQzZc/rGTDLkdERBZ1skxOVqIw56qlA
aPyKUt9s/fg6P5xMSv5SDIR89n0i3TChSa8nNdHV1Ld44mLZ7Aw29ChXI5DaQ05t
B6rdNz3AofmxlkzHIlFl46kPMy4H5jgHWlOBT+eLHv/fecPWCNpgnr9vi7O2Ih9o
i8KHDeK1T9Bl5U+sGof6E0Sey/xBOEGnYzuiQUl4kxfL
-----END CERTIFICATE REQUEST-----

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDT9Wi1nDvYL4ZV
CcqxV/C3F5cQ89+JR8TT8fqanwCOHEecWh80rma+Nizf75T1QR8/WOrzh+VoPmqC
sQbOFq4mDo12st1x31EKC67w+SZgcgxWX1TMtB7EqDXnCHQVzxLq9zfEYE9+ixLb
1gm6VdxRkHYJ5Un0JcJPHZnV1EZSD14xOI/CAHwadDnqHYaNPIKdVZ5WhcEVV5/q
xjRzOQ+glU+TtNkjcrkGZosE1fXQvg7Nom05rplaWXesbFWuT/ugH5ne3eXw1cX1
KuYLTf0rexl6s0uOVVR2QYPnaPPEJzgSLFy6zal24p8g/d1SF2fTlM1SWfX+cgVE
StxdRZ2zAgMBAAECggEAAPoKh3u20uI1LkMjSfnrxAw5x/w3tXw9LfTZgMjmycDb
m57Wsflzw8CgKFAEUbUBHdudCY5AwmA3QW7rZxu3pbk/caKVXqb2yqMPJVEgmiUs
ZWF/FIpn8eQMi4oAbvFLVwXYnfELrLubVKQB23f10fJmeNkzpApggNjUEqYtxMcH
MjfUmXzrZhvFKdRjdmyITa4gI9djuRvOIfWz0bZTePUtcfgCfpkM3lbxWRIst7Dg
FqCcgX68XOHHDCzzWTE7LasFBZx3mAcOyRMC+MKw96becC4r1c2KFFKh8tFp57y2
hQ1ybjxeF2MaWf3I/ioi2uTUza+L8m2RsKwABcRwIQKBgQDUrnn/WtKdryDU0rBj
cwsKTrMCycblwYCJj58cGSiETTVJOlhh1N2QtE/kwQI69tUVOc7C5p5FZzk+iff7
KwvwDqurtW5kKHE5IamUnKqv32bbHuRtg9CB0ktmmbxOrwP5s+QGhh5fKGvFKs3D
xVytLVw76f+BLK4NaBbzCdEN6wKBgQD/IT0F9f9XnTIa1a/bNVLCuRRZdWjDK40i
bD8EgO9T/FxK4yXSV3IB2C6mQNdMxDcmFBTS7EoXPZpZYuFCqBKQvV1OQ0yUAy2b
+PmmZMBakbpQHkIjkq2cgXNXaVdDeKPfoG4SqPz/6x7p/Np/UG9Ey8juNuQXmIiH
wwjwTfqVWQKBgQDNd6ogykuDTvd24/zIdxIJaTKD1Q+0U5asTvY2HRAJkNWT4ywT
h6Rt8eTlaJmRAXmmQezAWjA5eJnTE1NhcZrc1i9/eY4mcPPBcAX2rswvkLI7qsKg
EqJTaSiy/H7xvR8oE2SN8PBSmihTmSCkq3z3SUU8FLpkvxd/mDnjnm469QKBgQCg
rRQ7ftPTH+MAV3erPIfkrp8MQA88a181QKrncTRI1nRhjXCyafQZCUdH2So+5Iw+
5QLAW6PFwzxD8yweyK74jOoIcgX2aZH92u2PR4CFCaYm8weAU84W9MfpUyRsD7xV
CDqKcfb0TeVoQ6Bv8f5Be34N2HAKFDxYFBK7FMEt8QKBgDNBG3n8/912dDWV1Dve
o4v+TAnlAMHgEXZH+VCCzeIyj1UkUh4sxdIGGaGCPrWGrqxIYIKPKX8gPIWQ7QJj
QJZyL5nqGXWwZUvBuHzE3tB24XJpuHGfg+oBdDfg0aiEMTQKnRORdgHHVdB9W3SN
2TrXQbtwB1X+wioA4615n6ih
-----END PRIVATE KEY-----

@ -0,0 +1,7 @@
# 设置基础镜像
FROM redis:6.0.0
COPY ./redis.conf /usr/local/redis
# 设置启动命令
CMD ["redis-server","/usr/local/redis/redis.conf"]

File diff suppressed because it is too large Load Diff

@ -43,11 +43,15 @@
<freemarker.version>2.3.31</freemarker.version> <freemarker.version>2.3.31</freemarker.version>
<mysql-connector-java.version>8.0.26</mysql-connector-java.version> <mysql-connector-java.version>8.0.26</mysql-connector-java.version>
<io-swagger.version>1.5.22</io-swagger.version> <io-swagger.version>1.5.22</io-swagger.version>
<lock4j.version>2.2.5</lock4j.version>
<minio.version>8.5.7</minio.version>
<okhttp.version>4.9.0</okhttp.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
@ -120,6 +124,18 @@
<artifactId>swagger-annotations</artifactId> <artifactId>swagger-annotations</artifactId>
<version>${io-swagger.version}</version> <version>${io-swagger.version}</version>
</dependency> </dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>${minio.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

@ -30,6 +30,21 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!--redis分布式锁 https://gitee.com/baomidou/lock4j -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>lock4j-redis-template-spring-boot-starter</artifactId>
<version>${lock4j.version}</version>
</dependency>
<!-- 其他依赖 --> <!-- 其他依赖 -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@ -86,6 +101,16 @@
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>

@ -1,14 +1,19 @@
package com.supervision.config; package com.supervision.config;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil; import cn.hutool.jwt.JWTUtil;
import com.supervision.constant.UserTokenConstant;
import com.supervision.exception.BusinessException; import com.supervision.exception.BusinessException;
import com.supervision.util.SpringBeanUtil;
import com.supervision.util.TokenUtil; import com.supervision.util.TokenUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@ -16,25 +21,33 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
public class JwtInterceptor implements HandlerInterceptor { public class JwtInterceptor implements HandlerInterceptor {
private final RedisTemplate<String, String> redisTemplate;
public JwtInterceptor(RedisTemplate<String, String> redisTemplate) {
this.redisTemplate = redisTemplate;
}
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//请求消息头获取用户ID //请求消息头获取用户ID
String token = request.getHeader("token"); String token = request.getHeader("token");
if (StrUtil.isBlank(token) ) { if (StrUtil.isBlank(token)) {
// 如果是swagger来的接口,说明这里是测试的,会伪造一个用户 // 如果是swagger来的接口,说明这里是测试的,会伪造一个用户
if (StrUtil.isNotBlank(request.getHeader("Knife4j-Gateway-Code"))){ if (StrUtil.isNotBlank(request.getHeader("Knife4j-Gateway-Code"))) {
token = devActiveUser(); cacheAuth(JWTUtil.parseToken(devActiveUser()));
}else { return true;
throw new BusinessException("当前用户未登录",HttpStatus.UNAUTHORIZED.value()); } else {
throw new BusinessException("当前用户未登录", HttpStatus.UNAUTHORIZED.value());
} }
} }
JWT jwt = JWTUtil.parseToken(token); JWT jwt = JWTUtil.parseToken(token);
// 校验token是否过期,如果过期了,需要提示过期重新登录 // 校验token是否过期,如果过期了,需要提示过期重新登录
checkTokenExpire(jwt); checkTokenExpire(jwt);
@ -44,22 +57,25 @@ public class JwtInterceptor implements HandlerInterceptor {
@Override @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {
// 请求结束,将用户信息从thread中移除 // 请求结束,将用户信息从thread中移除
clearAuth(); clearAuth();
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
} }
private void checkTokenExpire(JWT jwt) { private void checkTokenExpire(JWT jwt) {
Object expireTime = jwt.getPayload("expireTime"); Object expireTime = jwt.getPayload("expireTime");
long l = Long.parseLong(String.valueOf(expireTime)); long l = Long.parseLong(String.valueOf(expireTime));
// 校验是否比当前时间大 // 校验是否比当前时间大
long currentTimeMillis = System.currentTimeMillis(); long currentTimeMillis = System.currentTimeMillis();
if (currentTimeMillis > l) { if (currentTimeMillis > l) {
throw new BusinessException("用户登录已过期,请重新登录",HttpStatus.UNAUTHORIZED.value()); throw new BusinessException("用户登录已过期,请重新登录", HttpStatus.UNAUTHORIZED.value());
} }
} }
private void cacheAuth(JWT jwt) { private void cacheAuth(JWT jwt) {
try { try {
JSONObject claimsJson = jwt.getPayload().getClaimsJson(); JSONObject claimsJson = jwt.getPayload().getClaimsJson();
@ -69,11 +85,11 @@ public class JwtInterceptor implements HandlerInterceptor {
} }
} }
private String devActiveUser(){ private String devActiveUser() {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("id","1"); map.put("id", "1");
map.put("account","test"); map.put("account", "test");
map.put("name","测试账户"); map.put("name", "测试账户");
return TokenUtil.creatToken(JSONUtil.toJsonStr(map)); return TokenUtil.creatToken(JSONUtil.toJsonStr(map));
} }

@ -0,0 +1,24 @@
package com.supervision.config;
import io.minio.MinioClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinioConfig {
/**
* JavaMinioClient
*/
@Bean
@ConditionalOnProperty(prefix = "minio",name = "url")
public MinioClient minioClient(MinioProperties minioProperties) {
return MinioClient.builder().endpoint(minioProperties.getUrl())
.credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey())
.build();
}
}

@ -0,0 +1,19 @@
package com.supervision.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {
private String url;
private String accessKey;
private String secretKey;
private String bucketName;
}

@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date; import java.time.LocalDateTime;
/** /**
* @author ljt on 2022/08/13. * @author ljt on 2022/08/13.
@ -16,13 +16,13 @@ public class MyBatisMetaObjectHandler implements MetaObjectHandler {
@Override @Override
public void insertFill(MetaObject metaObject) { public void insertFill(MetaObject metaObject) {
//属性名称,不是字段名称 //属性名称,不是字段名称
this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
} }
@Override @Override
public void updateFill(MetaObject metaObject) { public void updateFill(MetaObject metaObject) {
// 使用MP进行修改操作该方法执行 // 使用MP进行修改操作该方法执行
this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
} }
} }

@ -1,5 +1,6 @@
package com.supervision.config; package com.supervision.config;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -53,8 +54,13 @@ public class RequestLogConfig {
} }
private Object proceedResult(Object result) { private Object proceedResult(Object result) {
String value = JSONUtil.toJsonStr(result); String value = null;
if (value.length() > 10240){ try {
value = JSONUtil.toJsonStr(result);
} catch (Exception e) {
value = result.toString();
}
if (StrUtil.isNotBlank(value) && value.length() > 10240){
value = value.substring(0, 1024) + "......" + value.substring(value.length() - 1024); value = value.substring(0, 1024) + "......" + value.substring(value.length() - 1024);
return value; return value;
} }

@ -105,6 +105,17 @@ public class ResponseConfig implements ResponseBodyAdvice<Object> {
} }
/**
*
* @param exception
* @return
*/
@ExceptionHandler(IllegalArgumentException.class)
public GlobalResult<?> manualValidationExceptionResponse(IllegalArgumentException exception) {
log.error(exception.getMessage(), exception);
return GlobalResult.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), exception.getMessage(), "参数验证异常");
}
/** /**
* *
* *

@ -1,11 +1,14 @@
package com.supervision.config; package com.supervision.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ -17,10 +20,13 @@ import java.util.List;
@Configuration @Configuration
public class WebConfig implements WebMvcConfigurer { public class WebConfig implements WebMvcConfigurer {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Override @Override
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
// 添加权限拦截器 // 添加权限拦截器
registry.addInterceptor(new JwtInterceptor()) registry.addInterceptor(new JwtInterceptor(redisTemplate))
.addPathPatterns("/**") .addPathPatterns("/**")
.excludePathPatterns(ignorePathPatterns()); .excludePathPatterns(ignorePathPatterns());
} }
@ -35,6 +41,8 @@ public class WebConfig implements WebMvcConfigurer {
paths.add("/error"); paths.add("/error");
paths.add("/favicon.ico"); paths.add("/favicon.ico");
paths.add("/user/login"); paths.add("/user/login");
paths.add("/webSocket/**");
paths.add("/ask/downloadTalkVideo");
// 开发环境,放开不校验token.每次修改这里需要重启(热部署不行) // 开发环境,放开不校验token.每次修改这里需要重启(热部署不行)
// paths.add("/**"); // paths.add("/**");
return paths; return paths;
@ -43,6 +51,7 @@ public class WebConfig implements WebMvcConfigurer {
@Bean @Bean
public ObjectMapper objectMapper() { public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JavaTimeModule javaTimeModule = new JavaTimeModule(); JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

@ -0,0 +1,5 @@
package com.supervision.constant;
public interface TreatmentPlanIdConstant {
String DRUG_ID = "8";
}

@ -0,0 +1,14 @@
package com.supervision.constant;
public interface UserTokenConstant {
String USER_WEBSOCKET_CACHE = "USER:ID:CACHE";
String KICK_CHANNEL = "USER:KICK:CHANNEL";
Integer KICK_CODE = 10000;
Integer NO_RESOURCE_CODE = 10001;
Integer KEEPALIVE_CODE = 10002;
}

@ -0,0 +1,82 @@
package com.supervision.util;
import com.supervision.config.MinioProperties;
import io.minio.*;
import io.minio.http.Method;
import lombok.extern.slf4j.Slf4j;
import java.io.InputStream;
import java.util.UUID;
@Slf4j
public class MinioUtil {
private static final MinioClient minioClient = SpringBeanUtil.getBean(MinioClient.class);
private static final String bucketName = SpringBeanUtil.getBean(MinioProperties.class).getBucketName();
static {
try {
if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
log.info("未找到bucket,自动建立");
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
*/
public static String uploadFile(InputStream stream) throws Exception {
ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(UUID.randomUUID().toString())
.stream(stream, stream.available(), -1).build());
return objectWriteResponse.object();
}
/**
*
*/
public static InputStream download(String fileId) throws Exception {
return minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(fileId).build());
}
/**
*
*/
public static void deleteObject(String fileId) throws Exception {
minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(fileId).build());
}
/**
*
*
* @Param: [bucket, objectName]
* @return: java.lang.String
* @Author: MrFugui
* @Date: 2021/11/15
*/
public static String getObjectInfo(String fileId) throws Exception {
return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(fileId).build()).toString();
}
/**
* HTTP GETpresigned URL/URL使
*
* @Param: [bucketName, objectName, expires]
* @return: java.lang.String
* @Author: MrFugui
* @Date: 2021/11/15
*/
public static String getPresignedObjectUrl(String bucketName, String objectName, Integer expires) throws Exception {
GetPresignedObjectUrlArgs build = GetPresignedObjectUrlArgs
.builder().bucket(bucketName).object(objectName).expiry(expires).method(Method.GET).build();
return minioClient.getPresignedObjectUrl(build);
}
}

@ -11,8 +11,9 @@ public class TokenUtil {
public static String creatToken(String userInfo){ public static String creatToken(String userInfo){
final JWTSigner signer = JWTSignerUtil.hs256("123456".getBytes()); final JWTSigner signer = JWTSignerUtil.hs256("123456".getBytes());
JSONObject info = JSONUtil.parseObj(userInfo); JSONObject info = JSONUtil.parseObj(userInfo);
// 过期时间一天 // 过期时间一天,同时这个字段也作为单点登录使用
info.putOnce("expireTime",System.currentTimeMillis() + 1000 * 60 * 60 * 24); info.putOnce("expireTime",System.currentTimeMillis() + 1000 * 60 * 60 * 24);
info.putOnce("issueTime",System.currentTimeMillis());
return JWTUtil.createToken(info, signer); return JWTUtil.createToken(info, signer);
} }
} }

@ -0,0 +1,16 @@
# 设置基础镜像
FROM openjdk:8
ENV APP_HOME=/home/app
# 设置工作目录
WORKDIR $APP_HOME
# 复制java jar 到容器中
COPY target/virtual-patient-manage-1.0-SNAPSHOT.jar /home/app/virtual-patient-manage-1.0-SNAPSHOT.jar
# 暴漏服务端口
EXPOSE 8891
# 设置启动命令
ENTRYPOINT ["java","-jar","-Duser.timezone=Asia/Shanghai","/home/app/virtual-patient-manage-1.0-SNAPSHOT.jar"]

@ -1,9 +1,14 @@
package com.supervision.manage; package com.supervision.manage;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
@SpringBootApplication @SpringBootApplication
@MapperScan(basePackages = {"com.supervision.**.mapper"})
@ComponentScan(basePackages = {"com.supervision.**"})
public class VirtualPatientManageApplication { public class VirtualPatientManageApplication {
public static void main(String[] args) { public static void main(String[] args) {

@ -0,0 +1,28 @@
package com.supervision.manage.controller;
import com.supervision.manage.service.AncillaryItemManageService;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "辅助检查项管理")
@RestController
@RequestMapping("ancillaryItem")
@RequiredArgsConstructor
public class AncillaryItemManageController {
private final AncillaryItemManageService ancillaryItemManageService;
@ApiOperation("查询辅助检查项目列表")
@GetMapping("queryAncillaryItemList")
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
return ancillaryItemManageService.queryAncillaryItemList(ancillaryItemReqVo);
}
}

@ -0,0 +1,52 @@
package com.supervision.manage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.AskQuestionLibraryManageService;
import com.supervision.model.CommonDic;
import com.supervision.model.Disease;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import com.supervision.vo.manage.DiseaseVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "问题库管理")
@RestController
@RequestMapping("aqLibrary")
@RequiredArgsConstructor
public class AskQuestionLibraryManageController {
private final AskQuestionLibraryManageService askQuestionLibraryManageService;
@ApiOperation("查询问题库列表")
@GetMapping("/queryList")
public List<AskQuestionLibraryResVo> queryList(AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return askQuestionLibraryManageService.queryList(askQuestionLibraryReqVo);
}
@ApiOperation("分页查询问题库列表")
@GetMapping("/queryPageList")
public Page<AskQuestionLibraryResVo> queryPageList(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return askQuestionLibraryManageService.queryPageList(pageNum, pageSize, askQuestionLibraryReqVo);
}
@ApiOperation("查询问题类目编码列表")
@GetMapping("/queryItemList")
public List<CommonDic> queryItemList() {
return askQuestionLibraryManageService.queryItemList();
}
}

@ -0,0 +1,29 @@
package com.supervision.manage.controller;
import com.supervision.manage.service.PhysicalLocationManageService;
import com.supervision.vo.manage.PhysicalLocationNode;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "身体位置管理")
@RestController
@RequestMapping("physicalLocation")
@RequiredArgsConstructor
public class PhysicalLocationManageController {
private final PhysicalLocationManageService physicalLocationManageService;
@ApiOperation("查询身体部位树")
@GetMapping("/queryTree")
public List<PhysicalLocationNode> queryTree() {
return physicalLocationManageService.queryTree();
}
}

@ -0,0 +1,29 @@
package com.supervision.manage.controller;
import com.supervision.manage.service.PhysicalToolManageService;
import com.supervision.vo.ask.ConfigPhysicalToolResVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "体格检查工具管理")
@RestController
@RequestMapping("physicalTool")
@RequiredArgsConstructor
public class PhysicalToolManageController {
private final PhysicalToolManageService physicalToolManageService;
@ApiOperation(value = "查询体格检查的工具列表")
@GetMapping("queryPhysicalToolList")
public List<ConfigPhysicalToolResVO> queryPhysicalToolList() {
return physicalToolManageService.queryPhysicalToolList();
}
}

@ -0,0 +1,45 @@
package com.supervision.manage.controller;
import com.supervision.manage.service.ConfigTreatmentPlanManageService;
import com.supervision.vo.manage.TreatmentPlanTreeNode;
import com.supervision.model.ConfigTreatmentPlan;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "处置计划管理")
@RestController
@RequestMapping("treatmentPlan")
@RequiredArgsConstructor
public class TreatmentPlanManageController {
private final ConfigTreatmentPlanManageService configTreatmentPlanManageService;
@ApiOperation("查询处置计划树")
@GetMapping("/queryTree")
public List<TreatmentPlanTreeNode> queryTree(@ApiParam("处置方式")@RequestParam(required = false) Integer disposalMethod) {
return configTreatmentPlanManageService.queryTree(disposalMethod);
}
@ApiOperation("根据id查询处置计划详情")
@GetMapping("/findById")
public ConfigTreatmentPlan findById(@ApiParam("主键") @RequestParam String id) {
return configTreatmentPlanManageService.findById(id);
}
}

@ -0,0 +1,68 @@
package com.supervision.manage.controller.diseasemanage;
import com.supervision.manage.service.DiseaseAncillaryManageService;
import com.supervision.model.DiseaseAncillary;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.manage.DiseaseAncillaryReqVo;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "疾病辅助检查管理")
@RestController
@RequestMapping("diseaseAncillary")
@RequiredArgsConstructor
public class DiseaseAncillaryManageController {
private final DiseaseAncillaryManageService diseaseAncillaryManageService;
@ApiOperation("新增辅助检查信息")
@PostMapping("/save")
public String saveAncillary(@RequestBody DiseaseAncillaryReqVo diseaseAncillary) {
diseaseAncillary.floatDiagnosticCriteria();
DiseaseAncillary result = diseaseAncillaryManageService.saveAncillary(diseaseAncillary);
return result.getId();
}
@ApiOperation("删除疾病辅助检查信息")
@DeleteMapping("/delete")
public boolean deleteDiseaseAncillary(@RequestParam("id") String id) {
return diseaseAncillaryManageService.deleteDiseaseAncillary(id);
}
@ApiOperation("修改辅助检查信息")
@PutMapping("/update")
public boolean updateAncillary(@RequestBody DiseaseAncillaryReqVo diseaseAncillary) {
diseaseAncillary.floatDiagnosticCriteria();
return diseaseAncillaryManageService.updateAncillary(diseaseAncillary);
}
@ApiOperation("根据疾病id查询疾病辅助检查信息列表")
@GetMapping("/queryListByDiseaseId")
public List<DiseaseAncillaryResVo> queryListByDiseaseId(@RequestParam("diseaseId") String diseaseId) {
return diseaseAncillaryManageService.queryListByDiseaseId(diseaseId);
}
@ApiOperation("查询疾病辅助检查项目列表")
@GetMapping("queryAncillaryItemList")
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
return diseaseAncillaryManageService.queryAncillaryItemList(ancillaryItemReqVo);
}
}

@ -0,0 +1,69 @@
package com.supervision.manage.controller.diseasemanage;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.exception.BusinessException;
import com.supervision.manage.service.DiseaseManageService;
import com.supervision.model.Disease;
import com.supervision.vo.manage.DiseaseVo;
import io.swagger.annotations.*;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@Api(tags = "疾病管理")
@RestController
@RequestMapping("disease")
@RequiredArgsConstructor
public class DiseaseManageController {
private final DiseaseManageService diseaseManageService;
@PostMapping("/save")
@ApiOperation("新增疾病")
@ApiModelProperty
public Disease saveDisease(@RequestBody Disease disease) {
return diseaseManageService.saveDisease(disease);
}
@ApiOperation("删除疾病")
@DeleteMapping("/delete")
public boolean deleteDisease(@ApiParam("疾病id") @RequestParam String id) {
if (StrUtil.isEmpty(id)){
throw new BusinessException("id is not allow empty");
}
return diseaseManageService.deleteDisease(id);
}
@ApiOperation("修改疾病信息")
@PutMapping("/update")
public boolean updateDisease(@RequestBody Disease disease) {
return diseaseManageService.updateDisease(disease);
}
@ApiOperation("查询分页疾病列表")
@GetMapping("/queryPageList")
public Page<Disease> queryPageList(@RequestParam(defaultValue = "1")Integer pageNum,
@RequestParam(defaultValue = "10")Integer pageSize,
DiseaseVo diseaseVo) {
return diseaseManageService.queryPageList(pageNum,pageSize,diseaseVo);
}
}

@ -0,0 +1,68 @@
package com.supervision.manage.controller.diseasemanage;
import com.supervision.manage.service.DiseasePhysicalManageService;
import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo;
import com.supervision.vo.manage.DiseasePhysicalReqVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.model.DiseasePhysical;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "疾病体格检查管理")
@RestController
@RequestMapping("diseasePhysical")
@RequiredArgsConstructor
public class DiseasePhysicalManageController {
private final DiseasePhysicalManageService diseasePhysicalManageService;
@ApiOperation("新增体格检查信息")
@PostMapping("/save")
public String savePhysical(@RequestBody DiseasePhysicalReqVo diseasePhysical) {
diseasePhysical.floatDiagnosticCriteria();
DiseasePhysical result = diseasePhysicalManageService.savePhysical(diseasePhysical);
return result.getId();
}
@ApiOperation("删除体格检查")
@DeleteMapping("/delete")
public boolean deletePhysical(@RequestParam String id) {
return diseasePhysicalManageService.deletePhysical(id);
}
@ApiOperation("修改体格检查信息")
@PutMapping("/update")
public boolean updatePhysical(@RequestBody DiseasePhysicalReqVo diseasePhysical) {
diseasePhysical.floatDiagnosticCriteria();
return diseasePhysicalManageService.updatePhysical(diseasePhysical);
}
@ApiOperation("根据疾病id查询体格检查列表")
@GetMapping("/queryListByDiseaseId")
public List<DiseasePhysicalResVo> queryListByDiseaseId(@RequestParam("diseaseId") String diseaseId) {
return diseasePhysicalManageService.queryListByDiseaseId(diseaseId);
}
@ApiOperation("查询疾病身体部位树")
@GetMapping("/queryTree")
public List<DiseasePhysicalLocationNodeVo> queryTree(@RequestParam("diseaseId") String diseaseId,
@RequestParam(value = "toolId",required = false) String toolId) {
return diseasePhysicalManageService.queryTree(diseaseId, toolId);
}
}

@ -0,0 +1,63 @@
package com.supervision.manage.controller.diseasemanage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.DiseaseQuestionManageService;
import com.supervision.model.DiseaseQuestion;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import com.supervision.vo.manage.DiseaseQuestionResVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "疾病问题管理")
@RestController
@RequestMapping("diseaseQuestion")
@RequiredArgsConstructor
public class DiseaseQuestionManageController {
private final DiseaseQuestionManageService diseaseQuestionManageService;
@ApiOperation("保存疾病问题信息")
@PostMapping("/batchSave")
public boolean batchSaveQuestionList(@RequestBody List<DiseaseQuestion> diseaseQuestionList) {
diseaseQuestionManageService.batchSaveQuestion(diseaseQuestionList);
return true;
}
@ApiOperation("删除疾病问题")
@DeleteMapping("/delete")
public boolean deleteDiseaseQuestion(@RequestParam String id) {
return diseaseQuestionManageService.deleteDiseaseQuestion(id);
}
@ApiOperation("根据疾病id查询问题库信息列表")
@GetMapping("/queryListByDiseaseId")
public List<DiseaseQuestionResVo> queryPageByDiseaseId(@RequestParam("diseaseId") String diseaseId) {
return diseaseQuestionManageService.queryPageByDiseaseId(diseaseId);
}
@ApiOperation("分页查询问题库列表(排除已选择的问题)")
@GetMapping("/queryQaLibPageList")
public Page<AskQuestionLibraryResVo> queryQaLibPageList(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return diseaseQuestionManageService.queryQaLibPageList(pageNum, pageSize, askQuestionLibraryReqVo);
}
}

@ -0,0 +1,70 @@
package com.supervision.manage.controller.diseasemanage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.DiseaseTreatmentPlanManageService;
import com.supervision.model.ConfigTreatmentPlan;
import com.supervision.model.DiseaseTreatmentPlan;
import com.supervision.vo.manage.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Api(tags = "疾病处置计划管理")
@RestController
@RequestMapping("diseaseTreatmentPlan")
@RequiredArgsConstructor
public class DiseaseTreatmentPlanManageController {
private final DiseaseTreatmentPlanManageService diseaseTreatmentPlanManageService;
@ApiOperation("保存处置信息")
@PostMapping("/save")
public String saveTreatmentPlan(@RequestBody DiseaseTreatmentPlan diseaseTreatmentPlan) {
DiseaseTreatmentPlan result = diseaseTreatmentPlanManageService.saveTreatmentPlan(diseaseTreatmentPlan);
return result.getId();
}
@ApiOperation("批量保存处置信息")
@PostMapping("/batchSave")
public boolean batchSaveTreatmentPlan(@RequestBody List<DiseaseTreatmentPlan> diseaseTreatmentPlanList) {
diseaseTreatmentPlanManageService.batchSaveTreatmentPlan(diseaseTreatmentPlanList);
return true;
}
@ApiOperation("根据疾病id查询疾病处置信息列表")
@GetMapping("/queryListByDiseaseId")
public List<DiseaseTreatmentPlanResVo> queryListByDiseaseId(String diseaseId) {
return diseaseTreatmentPlanManageService.queryListByDiseaseId(diseaseId);
}
@ApiOperation("删除疾病处置计划")
@DeleteMapping("/delete")
public boolean deleteDiseaseTreatmentPlan(@RequestParam("id") String id) {
return diseaseTreatmentPlanManageService.deleteDiseaseTreatmentPlan(id);
}
@ApiOperation("查询处置计划树")
@GetMapping("/queryTree")
public List<DiseaseTreatmentPlanTreeNode> queryTree(@ApiParam("处置方式")@RequestParam(required = false) Integer disposalMethod,
@ApiParam("疾病id") String diseaseId) {
return diseaseTreatmentPlanManageService.queryDiseaseTreatmentPlanTree(disposalMethod,diseaseId);
}
}

@ -0,0 +1,105 @@
package com.supervision.manage.controller.medicalrec;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.dto.CommonDictTreeDTO;
import com.supervision.manage.pojo.vo.MedicalRecCheckResVO;
import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
import com.supervision.manage.pojo.vo.MedicalRecManageVO;
import com.supervision.manage.pojo.vo.MedicalRecQaVO;
import com.supervision.service.CommonDicService;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import com.supervision.vo.manage.MedicalRecPageResVO;
import com.supervision.manage.service.MedicalRecManageService;
import com.supervision.model.Disease;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Api(tags = "病历管理")
@RestController
@RequestMapping("medicalRecManage")
@RequiredArgsConstructor
public class MedicalRecManageController {
private final MedicalRecManageService medicalRecManageService;
@ApiOperation("初步诊断下拉列表联想(这里目前只查单一疾病)")
@GetMapping("queryDiseaseListByDropList")
public List<Disease> queryDiseaseListByDropList() {
return medicalRecManageService.queryDiseaseListByDropList();
}
@ApiOperation("病历管理分页查询")
@GetMapping("queryMedicalRecPage")
public IPage<MedicalRecPageResVO> queryMedicalRecManagePage(@ApiParam("主诉") String selfDescKeyword,
@ApiParam("性别") String gender,
@ApiParam("疾病ID") String diseaseId,
Integer pageNum, Integer pageSize) {
return medicalRecManageService.queryMedicalRecManagePage(selfDescKeyword, gender, diseaseId, pageNum, pageSize);
}
@ApiOperation("创建病历")
@PostMapping("createMedicalRec")
public void createMedicalRec(@RequestBody MedicalRecManageVO reqVO) {
medicalRecManageService.createMedicalRec(reqVO);
}
@ApiOperation("创建疾病时可选的的疾病列表")
@GetMapping("queryDiseaseListByCreat")
public List<Disease> queryDiseaseListByCreat() {
return medicalRecManageService.queryDiseaseListByCreat();
}
@ApiOperation("创建病历时查看配置的辅助检查项")
@GetMapping("queryDiseaseAncillaryByCreat")
public List<DiseaseAncillaryResVo> queryDiseaseAncillaryByCreat(String diseaseId){
return medicalRecManageService.queryDiseaseAncillaryByCreat(diseaseId);
}
@ApiOperation("创建病历时查看配置的体格检查项")
@GetMapping("queryDiseasePhysicalByCreat")
public List<DiseasePhysicalResVo> queryDiseasePhysicalByCreat(String diseaseId){
return medicalRecManageService.queryDiseasePhysicalByCreat(diseaseId);
}
@ApiOperation("创建病历时查看配置的处置计划")
@GetMapping("queryDiseaseTreatmentPlanByCreat")
public List<DiseaseTreatmentPlanResVo> queryDiseaseTreatmentPlanByCreat(String diseaseId){
return medicalRecManageService.queryDiseaseTreatmentPlanByCreat(diseaseId);
}
@ApiOperation("创建病历时,根据疾病ID查询配置的问题(目前只支持单一疾病)")
@GetMapping("queryQuestionListByCreat")
public List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId) {
return medicalRecManageService.queryQuestionListByCreat(diseaseId);
}
@ApiOperation("修改病历")
@PostMapping("modifyMedicalRec")
public void modifyMedicalRec(@RequestBody MedicalRecManageVO reqVO) {
medicalRecManageService.modifyMedicalRec(reqVO);
}
@ApiOperation("查询病例详细信息")
@GetMapping("queryMedicalRecInfo")
public MedicalRecInfoVO queryMedicalRecInfo(String id) {
return medicalRecManageService.queryMedicalRecInfo(id);
}
@ApiOperation("删除病历")
@GetMapping("deleteMedicalRec")
public void deleteMedicalRec(String id) {
medicalRecManageService.deleteMedicalRec(id);
}
}

@ -0,0 +1,34 @@
package com.supervision.manage.pojo.vo;
import lombok.Data;
/**
*
*/
@Data
public class MedicalRecCheckResVO {
private String name;
private String location;
/**
* (01)
*/
private Integer isPrimarilyDiagnosisCriteria;
/**
* -(01)
*/
private Integer requireCheck;
/**
* (01)
*/
private Integer basisConfirm;
/**
* (01)
*/
private Integer basisIdentification;
}

@ -0,0 +1,30 @@
package com.supervision.manage.pojo.vo;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "病历管理详细信息", parent = MedicalRecManageVO.class)
public class MedicalRecInfoVO extends MedicalRecManageVO {
@ApiModelProperty("疾病名称")
private String diseaseName;
@ApiModelProperty("辅助检查")
private List<DiseaseAncillaryResVo> ancillaryList;
@ApiModelProperty("体格检查")
private List<DiseasePhysicalResVo> physicalList;
@ApiModelProperty("处置计划列表")
private List<DiseaseTreatmentPlanResVo> treatmentPlanList;
}

@ -0,0 +1,29 @@
package com.supervision.manage.pojo.vo;
import com.supervision.model.AskPatientAnswer;
import com.supervision.model.MedicalRec;
import com.supervision.model.Patient;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "病历管理创建及新建", parent = MedicalRec.class)
public class MedicalRecManageVO extends MedicalRec {
@ApiModelProperty("step:1 基础信息")
private Patient patient;
@NotBlank(message = "疾病不能为空")
@ApiModelProperty("step:1 疾病ID(目前只支持单选疾病,且修改时不允许变更)")
private String diseaseId;
@ApiModelProperty("step:4 应答策略")
private List<MedicalRecQaVO> qaList;
}

@ -0,0 +1,37 @@
package com.supervision.manage.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class MedicalRecQaVO {
@ApiModelProperty("本条问答ID,对应vp_ask_patient_answer表ID,更新必填")
private String id;
/**
* ID
*/
@ApiModelProperty(" 问题库问题ID,新增更新时必填")
private String libraryQuestionId;
@ApiModelProperty("问题,新增更新时不需要")
private List<String> questionList;
@ApiModelProperty("字典ID,新增更新时不需要")
private Long dictId;
@ApiModelProperty("问题类目,新增更新时不需要")
private String dictNamePath;
@ApiModelProperty("默认回答,新增更新时不需要")
private String defaultAnswer;
@ApiModelProperty("针对病例的特定回答,新增更新时必填")
private String medicalRecAnswer;
}

@ -0,0 +1,12 @@
package com.supervision.manage.pojo.vo;
import lombok.Data;
/**
*
*/
@Data
public class MedicalRecTreatmentPlanResVO {
}

@ -0,0 +1,11 @@
package com.supervision.manage.service;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import java.util.List;
public interface AncillaryItemManageService {
List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo);
}

@ -0,0 +1,17 @@
package com.supervision.manage.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.CommonDic;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import java.util.List;
public interface AskQuestionLibraryManageService {
List<AskQuestionLibraryResVo> queryList(AskQuestionLibraryReqVo askQuestionLibraryReqVo);
Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo);
List<CommonDic> queryItemList();
}

@ -0,0 +1,13 @@
package com.supervision.manage.service;
import com.supervision.model.ConfigTreatmentPlan;
import com.supervision.vo.manage.TreatmentPlanTreeNode;
import java.util.List;
public interface ConfigTreatmentPlanManageService {
List<TreatmentPlanTreeNode> queryTree(Integer disposalMethod);
ConfigTreatmentPlan findById(String id);
}

@ -0,0 +1,27 @@
package com.supervision.manage.service;
import com.supervision.model.DiseaseAncillary;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import java.util.List;
public interface DiseaseAncillaryManageService {
List<DiseaseAncillaryResVo> queryListByDiseaseId(String diseaseId);
DiseaseAncillary saveAncillary(DiseaseAncillary diseaseAncillary);
boolean deleteDiseaseAncillary(String id);
boolean updateAncillary(DiseaseAncillary diseaseAncillary);
boolean deleteByDiseaseId(String diseaseId);
List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo);
}

@ -0,0 +1,19 @@
package com.supervision.manage.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.Disease;
import com.supervision.vo.manage.DiseaseVo;
public interface DiseaseManageService {
Disease saveDisease(Disease disease);
boolean updateDisease(Disease disease);
boolean deleteDisease(String id);
Page<Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo);
}

@ -0,0 +1,23 @@
package com.supervision.manage.service;
import com.supervision.model.DiseasePhysical;
import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.PhysicalLocationNode;
import java.util.List;
public interface DiseasePhysicalManageService {
List<DiseasePhysicalResVo> queryListByDiseaseId(String diseaseId);
DiseasePhysical savePhysical(DiseasePhysical diseasePhysical);
boolean deletePhysical(String id);
boolean updatePhysical(DiseasePhysical diseasePhysical);
boolean deleteByDiseaseId(String diseaseId);
List<DiseasePhysicalLocationNodeVo> queryTree(String diseaseId, String toolId);
}

@ -0,0 +1,22 @@
package com.supervision.manage.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.DiseaseQuestion;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import com.supervision.vo.manage.DiseaseQuestionResVo;
import java.util.List;
public interface DiseaseQuestionManageService {
List<DiseaseQuestionResVo> queryPageByDiseaseId(String diseaseId);
void batchSaveQuestion(List<DiseaseQuestion> diseaseQuestionList);
boolean deleteDiseaseQuestion(String id);
boolean deleteByDiseaseId(String diseaseId);
Page<AskQuestionLibraryResVo> queryQaLibPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo);
}

@ -0,0 +1,23 @@
package com.supervision.manage.service;
import com.supervision.model.ConfigTreatmentPlan;
import com.supervision.model.DiseaseTreatmentPlan;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanTreeNode;
import java.util.List;
public interface DiseaseTreatmentPlanManageService {
List<DiseaseTreatmentPlanResVo> queryListByDiseaseId(String diseaseId);
DiseaseTreatmentPlan saveTreatmentPlan(DiseaseTreatmentPlan diseaseTreatmentPlan);
void batchSaveTreatmentPlan(List<DiseaseTreatmentPlan> diseaseTreatmentPlanList);
boolean deleteDiseaseTreatmentPlan(String id);
boolean deleteByDiseaseId(String diseaseId);
List<DiseaseTreatmentPlanTreeNode> queryDiseaseTreatmentPlanTree(Integer disposalMethod, String diseaseId);
}

@ -0,0 +1,42 @@
package com.supervision.manage.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
import com.supervision.manage.pojo.vo.MedicalRecManageVO;
import com.supervision.manage.pojo.vo.MedicalRecQaVO;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import com.supervision.vo.manage.MedicalRecPageResVO;
import com.supervision.model.Disease;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface MedicalRecManageService {
List<Disease> queryDiseaseListByDropList();
List<Disease> queryDiseaseListByCreat();
IPage<MedicalRecPageResVO> queryMedicalRecManagePage(String selfDescKeyword, String gender, String diseaseId, Integer pageNum, Integer pageSize);
void createMedicalRec(MedicalRecManageVO reqVO);
List<DiseaseAncillaryResVo> queryDiseaseAncillaryByCreat(String diseaseId);
List<DiseasePhysicalResVo> queryDiseasePhysicalByCreat(String diseaseId);
List<DiseaseTreatmentPlanResVo> queryDiseaseTreatmentPlanByCreat(String diseaseId);
List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId);
void modifyMedicalRec(MedicalRecManageVO reqVO);
MedicalRecInfoVO queryMedicalRecInfo(String id);
void deleteMedicalRec(String id);
}

@ -0,0 +1,12 @@
package com.supervision.manage.service;
import com.supervision.vo.manage.PhysicalLocationNode;
import java.util.List;
public interface PhysicalLocationManageService {
List<PhysicalLocationNode> queryTree();
}

@ -0,0 +1,10 @@
package com.supervision.manage.service;
import com.supervision.vo.ask.ConfigPhysicalToolResVO;
import java.util.List;
public interface PhysicalToolManageService {
List<ConfigPhysicalToolResVO> queryPhysicalToolList();
}

@ -0,0 +1,29 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.AncillaryItemManageService;
import com.supervision.model.DiseaseAncillary;
import com.supervision.service.ConfigAncillaryItemService;
import com.supervision.service.DiseaseAncillaryService;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.result.ConfigAncillaryItemVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class AncillaryItemManageServiceImpl implements AncillaryItemManageService {
private final ConfigAncillaryItemService configAncillaryItemService;
@Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
return configAncillaryItemService.queryAncillaryItemList(ancillaryItemReqVo);
}
}

@ -0,0 +1,41 @@
package com.supervision.manage.service.impl;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.AskQuestionLibraryManageService;
import com.supervision.model.CommonDic;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.CommonDicService;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryManageService {
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
private final CommonDicService commonDicService;
@Override
public List<AskQuestionLibraryResVo> queryList(AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return askTemplateQuestionLibraryService.queryList(askQuestionLibraryReqVo);
}
@Override
public Page<AskQuestionLibraryResVo> queryPageList(Integer pageNum, Integer pageSize,
AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return askTemplateQuestionLibraryService.queryPageList(pageNum,pageSize,askQuestionLibraryReqVo);
}
@Override
public List<CommonDic> queryItemList() {
return commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").isNull(CommonDic::getParentId).list();
}
}

@ -0,0 +1,37 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.ConfigTreatmentPlanManageService;
import com.supervision.model.ConfigTreatmentPlan;
import com.supervision.service.ConfigTreatmentPlanService;
import com.supervision.vo.manage.TreatmentPlanTreeNode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
@Service
@RequiredArgsConstructor
public class ConfigTreatmentPlanManageServiceImpl implements ConfigTreatmentPlanManageService {
private final ConfigTreatmentPlanService configTreatmentPlanService;
@Override
public List<TreatmentPlanTreeNode> queryTree(Integer disposalMethod) {
return configTreatmentPlanService.queryTree(disposalMethod);
}
@Override
public ConfigTreatmentPlan findById(String id) {
Assert.notEmpty(id,"id 不允许为空");
return configTreatmentPlanService.getById(id);
}
}

@ -0,0 +1,139 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.supervision.manage.service.DiseaseAncillaryManageService;
import com.supervision.model.DiseaseAncillary;
import com.supervision.service.ConfigAncillaryItemService;
import com.supervision.service.DiseaseAncillaryService;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.result.ConfigAncillaryItemVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class DiseaseAncillaryManageServiceImpl implements DiseaseAncillaryManageService {
private final DiseaseAncillaryService diseaseAncillaryService;
private final ConfigAncillaryItemService configAncillaryItemService;
@Override
public List<DiseaseAncillaryResVo> queryListByDiseaseId(String diseaseId) {
Assert.isTrue(StrUtil.isNotEmpty(diseaseId),"diseaseId不能为空");
List<DiseaseAncillaryResVo> diseaseAncillaryResVos = diseaseAncillaryService.queryListByDiseaseId(diseaseId);
diseaseAncillaryResVos.forEach(DiseaseAncillaryResVo::populateOther);
return diseaseAncillaryResVos;
}
@Override
public DiseaseAncillary saveAncillary(DiseaseAncillary diseaseAncillary) {
assertDiseaseAncillary(diseaseAncillary);
Assert.isFalse(checkIfPresent(diseaseAncillary),"数据已存在!");
diseaseAncillaryService.save(diseaseAncillary);
return diseaseAncillary;
}
@Override
public boolean deleteDiseaseAncillary(String id) {
Assert.isTrue(StrUtil.isNotEmpty(id),"id 不允许为空");
return diseaseAncillaryService.removeById(id);
}
@Override
public boolean updateAncillary(DiseaseAncillary diseaseAncillary) {
Assert.isTrue(StrUtil.isNotEmpty(diseaseAncillary.getId()),"id 不允许为空");
return diseaseAncillaryService.updateById(diseaseAncillary);
}
@Override
public boolean deleteByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"疾病id不能为空");
return diseaseAncillaryService.lambdaUpdate().eq(DiseaseAncillary::getDiseaseId, diseaseId).remove();
}
@Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
List<ConfigAncillaryItemResVO> configAncillaryItemResVOS = configAncillaryItemService.queryAncillaryItemList(ancillaryItemReqVo);
if (CollUtil.isEmpty(configAncillaryItemResVOS) || StrUtil.isEmpty(ancillaryItemReqVo.getDiseaseId())){
return configAncillaryItemResVOS;
}
List<DiseaseAncillaryResVo> diseaseAncillaryResVos = diseaseAncillaryService.queryListByDiseaseId(ancillaryItemReqVo.getDiseaseId());
if (CollUtil.isEmpty(diseaseAncillaryResVos)){
return configAncillaryItemResVOS;
}
List<String> itemIds = diseaseAncillaryResVos.stream().map(DiseaseAncillary::getItemId).distinct().collect(Collectors.toList());
for (ConfigAncillaryItemResVO configAncillaryItemResVO : configAncillaryItemResVOS) {
if (CollUtil.isEmpty(configAncillaryItemResVO.getItemList())){
continue;
}
for (ConfigAncillaryItemVo itemVo : configAncillaryItemResVO.getItemList()) {
itemVo.setFlag(itemIds.contains(itemVo.getId()));
}
}
return configAncillaryItemResVOS;
}
private void assertDiseaseAncillary(DiseaseAncillary diseaseAncillary){
Assert.isNull(diseaseAncillary.getId(),"id不为空");
Assert.isTrue(StrUtil.isNotEmpty(diseaseAncillary.getDiseaseId()),"疾病id不能为空");
Assert.notNull(diseaseAncillary.getPrimarilyDiagnosisCriteriaFlag(),"初步诊断依据不能为空");
Assert.notNull(diseaseAncillary.getBasisConfirmFlag(),"证实诊断依据不能为空");
Assert.notNull(diseaseAncillary.getBasisIdentificationFlag(),"鉴别诊断依据不能为空");
Assert.notNull(diseaseAncillary.getFullCheckFlag(),"全面诊断不能为空");
Assert.notNull(diseaseAncillary.getDiagnosisAssessmentFlag(),"判断不能为空");
Assert.notNull(diseaseAncillary.getRequireCheckFlag(),"是否必查不能为空");
Assert.notNull(diseaseAncillary.getDiagnosisAssessmentFlag(),"判断不能为空");
Assert.notNull(diseaseAncillary.getExpectedDiagnosisResult(),"预期诊断结果不能为空");
}
private boolean checkIfPresent(DiseaseAncillary diseaseAncillary){
return !Objects.isNull(findByDiseaseIdAndItemId(diseaseAncillary.getDiseaseId(), diseaseAncillary.getItemId()));
}
private DiseaseAncillary findByDiseaseIdAndItemId(String diseaseId,String itemId){
List<DiseaseAncillary> list = diseaseAncillaryService.lambdaQuery().eq(DiseaseAncillary::getDiseaseId, diseaseId).eq(DiseaseAncillary::getItemId, itemId).list();
if (CollUtil.isEmpty(list)){
return null;
}
return list.get(0);
}
}

@ -0,0 +1,121 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.exception.BusinessException;
import com.supervision.manage.service.*;
import com.supervision.model.Disease;
import com.supervision.model.DiseaseAncillary;
import com.supervision.service.DiseaseAncillaryService;
import com.supervision.service.DiseaseService;
import com.supervision.vo.manage.DiseaseVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
@Service
@RequiredArgsConstructor
public class DiseaseManageServiceImpl implements DiseaseManageService {
private final DiseaseService diseaseService;
private final DiseaseAncillaryManageService diseaseAncillaryManageService;
private final DiseasePhysicalManageService diseasePhysicalManageService;
private final DiseaseQuestionManageService diseaseQuestionManageService;
private final DiseaseTreatmentPlanManageService diseaseTreatmentPlanManageService;
@Override
public Disease saveDisease(Disease disease) {
assertDisease(disease);
disease.setStatus(0);
diseaseService.save(disease);
return disease;
}
@Override
public boolean updateDisease(Disease disease) {
Assert.isTrue(StrUtil.isNotEmpty(disease.getId()),"id is not allow empty");
return diseaseService.updateById(disease);
}
@Override
@Transactional
public boolean deleteDisease(String id) {
// 1. 删除疾病信息
diseaseService.removeById(id);
// 2. 删除疾病辅助检查信息
diseaseAncillaryManageService.deleteByDiseaseId(id);
// 3. 删除疾病体格检查信息
diseasePhysicalManageService.deleteByDiseaseId(id);
//4. 删除疾病问题信息
diseaseQuestionManageService.deleteByDiseaseId(id);
// 5. 删除疾病处置计划信息
diseaseTreatmentPlanManageService.deleteByDiseaseId(id);
return true;
}
@Override
public Page<Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo) {
LambdaQueryChainWrapper<Disease> wrapper = diseaseService.lambdaQuery()
.like(StrUtil.isNotEmpty(diseaseVo.getDiseaseName()), Disease::getDiseaseName, diseaseVo.getDiseaseName());
return wrapper.page(new Page<>(pageNum, pageSize));
}
private List<Disease> queryByAnyCondition(String code, String diseaseName, String diseaseNameAlias){
return diseaseService.lambdaQuery().eq(StrUtil.isNotEmpty(code),Disease::getCode,code).or()
.eq(StrUtil.isNotEmpty(diseaseName), Disease::getDiseaseName,diseaseName).or()
.eq(StrUtil.isNotEmpty(diseaseNameAlias),Disease::getDiseaseNameAlias,diseaseNameAlias)
.list();
}
private List<Disease> queryByCode(String code){
if (Objects.isNull(code)){
throw new BusinessException("code is not allow empty");
}
return diseaseService.lambdaQuery().eq(Disease::getCode,code).list();
}
private void assertDisease(Disease disease){
Assert.isNull(disease.getId(),"id 不为空");
Assert.isTrue(StrUtil.isNotEmpty(disease.getDiseaseName()),"疾病名称不能为空");
Assert.isTrue(StrUtil.isNotEmpty(disease.getDiseaseNameAlias()),"疾病别名不能为空");
Assert.isTrue(StrUtil.isNotEmpty(disease.getCode()),"疾病编码不能为空");
List<Disease> diseases = this.queryByAnyCondition(disease.getCode(), disease.getDiseaseName(), disease.getDiseaseNameAlias());
Assert.isTrue(CollUtil.isEmpty(diseases),"类目编码: {},或疾病名称: {},或疾病分类别名: {} 已存在",
disease.getCode(),disease.getDiseaseName(),disease.getDiseaseNameAlias());
}
}

@ -0,0 +1,138 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.DiseasePhysicalManageService;
import com.supervision.manage.service.PhysicalLocationManageService;
import com.supervision.manage.service.PhysicalToolManageService;
import com.supervision.model.ConfigPhysicalLocation;
import com.supervision.model.DiseaseAncillary;
import com.supervision.model.DiseasePhysical;
import com.supervision.service.ConfigPhysicalLocationService;
import com.supervision.service.DiseasePhysicalService;
import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.PhysicalLocationNode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class DiseasePhysicalManageServiceImpl implements DiseasePhysicalManageService {
private final DiseasePhysicalService diseasePhysicalService;
private final PhysicalLocationManageService physicalToolManageService;
@Override
public List<DiseasePhysicalResVo> queryListByDiseaseId(String diseaseId) {
Assert.isTrue(StrUtil.isNotEmpty(diseaseId),"id不能为空");
List<DiseasePhysicalResVo> diseasePhysicalResVos = diseasePhysicalService.queryListByDiseaseId(diseaseId);
diseasePhysicalResVos.forEach(DiseasePhysicalResVo::populateOther);
return diseasePhysicalResVos;
}
@Override
public DiseasePhysical savePhysical(DiseasePhysical diseasePhysical) {
assertDiseasePhysical(diseasePhysical);
diseasePhysicalService.save(diseasePhysical);
return diseasePhysical;
}
@Override
public boolean deletePhysical(String id) {
Assert.isTrue(StrUtil.isNotEmpty(id),"id不能为空");
return diseasePhysicalService.removeById(id);
}
@Override
public boolean updatePhysical(DiseasePhysical diseasePhysical) {
Assert.isTrue(StrUtil.isNotEmpty(diseasePhysical.getDiseaseId()),"疾病id不能为空");
return diseasePhysicalService.updateById(diseasePhysical);
}
@Override
public boolean deleteByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"疾病id不能为空");
return diseasePhysicalService.lambdaUpdate().eq(DiseasePhysical::getDiseaseId,diseaseId).remove();
}
@Override
public List<DiseasePhysicalLocationNodeVo> queryTree(String diseaseId, String toolId) {
// 1. 查询体格检查位置树
List<PhysicalLocationNode> physicalLocationNodes = physicalToolManageService.queryTree();
if (CollectionUtil.isEmpty(physicalLocationNodes)){
return CollectionUtil.newArrayList();
}
PhysicalLocationNode physicalLocationNode = new PhysicalLocationNode();
physicalLocationNode.setChild(physicalLocationNodes);
DiseasePhysicalLocationNodeVo bean = BeanUtil.toBean(physicalLocationNode, DiseasePhysicalLocationNodeVo.class);
if (StrUtil.isEmpty(toolId)){
return bean.getChild();
}
// 2. 根据疾病id查询疾病体格检查项
List<DiseasePhysicalResVo> diseasePhysicalResVos = diseasePhysicalService.queryListByDiseaseId(diseaseId);
if (CollectionUtil.isEmpty(diseasePhysicalResVos)){
return bean.getChild();
}
// 3. 填充疾病体格检查树中的flag属性
List<String> locationIds = diseasePhysicalResVos.stream().filter(vo->toolId.equals(vo.getToolId()))
.map(DiseasePhysical::getLocationId).distinct().collect(Collectors.toList());
populateDiseasePhysicalLocationNodeFlag(bean,locationIds);
return bean.getChild();
}
private void populateDiseasePhysicalLocationNodeFlag(DiseasePhysicalLocationNodeVo node,List<String> locationIds) {
if (StrUtil.isNotEmpty(node.getId())){
node.setFlag(locationIds.contains(node.getId()));
}
if (CollectionUtil.isNotEmpty(node.getChild())){
for (DiseasePhysicalLocationNodeVo childNode : node.getChild()) {
populateDiseasePhysicalLocationNodeFlag(childNode,locationIds);
}
}
}
private void assertDiseasePhysical(DiseasePhysical diseasePhysical){
Assert.isTrue(StrUtil.isNotEmpty(diseasePhysical.getDiseaseId()),"疾病id不能为空");
Assert.notNull(diseasePhysical.getPrimarilyDiagnosisCriteriaFlag(),"初步诊断依据不能为空");
Assert.notNull(diseasePhysical.getBasisConfirmFlag(),"证实诊断依据不能为空");
Assert.notNull(diseasePhysical.getBasisIdentificationFlag(),"鉴别诊断依据不能为空");
Assert.notNull(diseasePhysical.getFullCheckFlag(),"全面诊断不能为空");
Assert.notNull(diseasePhysical.getDiagnosisAssessmentFlag(),"判断不能为空");
Assert.notNull(diseasePhysical.getRequireCheckFlag(),"是否必查不能为空");
Assert.notNull(diseasePhysical.getDiagnosisAssessmentFlag(),"判断不能为空");
Assert.notNull(diseasePhysical.getExpectedDiagnosisResult(),"预期诊断结果不能为空");
}
}

@ -0,0 +1,96 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.manage.service.AskQuestionLibraryManageService;
import com.supervision.manage.service.DiseaseAncillaryManageService;
import com.supervision.manage.service.DiseaseQuestionManageService;
import com.supervision.model.DiseaseQuestion;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.DiseaseQuestionService;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import com.supervision.vo.manage.DiseaseQuestionResVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class DiseaseQuestionManageServiceImpl implements DiseaseQuestionManageService {
private final DiseaseQuestionService diseaseQuestionService;
private final AskQuestionLibraryManageService askQuestionLibraryManageService;
@Override
public List<DiseaseQuestionResVo> queryPageByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"diseaseId 不允许为空");
return diseaseQuestionService.queryPageByDiseaseId(diseaseId);
}
@Override
public void batchSaveQuestion(List<DiseaseQuestion> diseaseQuestionList) {
Assert.notEmpty(diseaseQuestionList,"数据为空");
diseaseQuestionList.forEach(this::assertDiseaseQuestion);
Assert.isTrue(CollectionUtil.isEmpty(findListByDiseaseIdAndQuestionIdGroup(diseaseQuestionList)),"数据已存在");
diseaseQuestionService.saveBatch(diseaseQuestionList);
}
@Override
public boolean deleteDiseaseQuestion(String id) {
Assert.notEmpty(id,"id不允许为空");
return diseaseQuestionService.removeById(id);
}
@Override
public boolean deleteByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"疾病id不允许为空");
return diseaseQuestionService.lambdaUpdate().eq(DiseaseQuestion::getDiseaseId, diseaseId).remove();
}
@Override
public Page<AskQuestionLibraryResVo> queryQaLibPageList(Integer pageNum, Integer pageSize, AskQuestionLibraryReqVo askQuestionLibraryReqVo) {
return diseaseQuestionService.queryQaLibPageList(pageNum,pageSize,askQuestionLibraryReqVo);
}
private List<DiseaseQuestion> findListByDiseaseIdAndQuestionIdGroup(List<DiseaseQuestion> diseaseQuestionList){
if (CollectionUtil.isEmpty(diseaseQuestionList)){
return CollectionUtil.newArrayList();
}
LambdaQueryChainWrapper<DiseaseQuestion> query = diseaseQuestionService.lambdaQuery();
diseaseQuestionList.forEach(diseaseQuestion -> query
.or(i -> i.eq(DiseaseQuestion::getQuestionId, diseaseQuestion.getQuestionId())
.and(i1 -> i1.eq(DiseaseQuestion::getDiseaseId, diseaseQuestion.getDiseaseId()))));
return query.list();
}
private void assertDiseaseQuestion(DiseaseQuestion diseaseQuestion){
Assert.isTrue(StrUtil.isEmpty(diseaseQuestion.getId()),"id需要为空");
Assert.notEmpty(diseaseQuestion.getDiseaseId(),"疾病id不能为空");
Assert.notEmpty(diseaseQuestion.getQuestionId(),"问题id不能为空");
}
}

@ -0,0 +1,107 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.ConfigTreatmentPlanManageService;
import com.supervision.manage.service.DiseaseTreatmentPlanManageService;
import com.supervision.model.DiseaseTreatmentPlan;
import com.supervision.service.DiseaseTreatmentPlanService;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanTreeNode;
import com.supervision.vo.manage.TreatmentPlanTreeNode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class DiseaseTreatmentPlanManageServiceImpl implements DiseaseTreatmentPlanManageService {
private final DiseaseTreatmentPlanService diseaseTreatmentPlanService;
private final ConfigTreatmentPlanManageService configTreatmentPlanManageService;
@Override
public List<DiseaseTreatmentPlanResVo> queryListByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"疾病id不能为空");
return diseaseTreatmentPlanService.queryListByDiseaseId(diseaseId);
}
@Override
public DiseaseTreatmentPlan saveTreatmentPlan(DiseaseTreatmentPlan diseaseTreatmentPlan) {
assertDiseaseTreatmentPlan(diseaseTreatmentPlan);
diseaseTreatmentPlanService.save(diseaseTreatmentPlan);
return diseaseTreatmentPlan;
}
@Override
public void batchSaveTreatmentPlan(List<DiseaseTreatmentPlan> diseaseTreatmentPlanList) {
Assert.notEmpty(diseaseTreatmentPlanList,"数据不能为空");
diseaseTreatmentPlanList.forEach(item->{
if (StrUtil.isEmpty(item.getTreatmentPlanId())){
item.setTreatmentPlanId(item.getPlanId());
}
});
diseaseTreatmentPlanList.forEach(this::assertDiseaseTreatmentPlan);
diseaseTreatmentPlanService.saveBatch(diseaseTreatmentPlanList);
}
@Override
public boolean deleteDiseaseTreatmentPlan(String id) {
Assert.notEmpty(id,"id不能为空");
return diseaseTreatmentPlanService.removeById(id);
}
@Override
public boolean deleteByDiseaseId(String diseaseId) {
Assert.notEmpty(diseaseId,"疾病id不能为空");
return diseaseTreatmentPlanService.lambdaUpdate().eq(DiseaseTreatmentPlan::getDiseaseId,diseaseId).remove();
}
@Override
public List<DiseaseTreatmentPlanTreeNode> queryDiseaseTreatmentPlanTree(Integer disposalMethod, String diseaseId) {
// 1. 查询处置计划树
List<TreatmentPlanTreeNode> treatmentPlanTreeNodes = configTreatmentPlanManageService.queryTree(disposalMethod);
if (CollUtil.isEmpty(treatmentPlanTreeNodes)){
return CollectionUtil.newArrayList();
}
TreatmentPlanTreeNode treatmentPlanTreeNode = new TreatmentPlanTreeNode();
treatmentPlanTreeNode.setChild(treatmentPlanTreeNodes);
DiseaseTreatmentPlanTreeNode rootNode = new DiseaseTreatmentPlanTreeNode(treatmentPlanTreeNode);
// 2.根据疾病id查询疾病处置计划信息
List<DiseaseTreatmentPlanResVo> diseaseTreatmentPlanResVos = this.queryListByDiseaseId(diseaseId);
// 3. 初始化flag
if (CollUtil.isNotEmpty(diseaseTreatmentPlanResVos)){
rootNode.initFlag(diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getPlanId).collect(Collectors.toList()));
}
return rootNode.getChild();
}
private void assertDiseaseTreatmentPlan(DiseaseTreatmentPlan diseaseTreatmentPlan){
Assert.isTrue(StrUtil.isEmpty(diseaseTreatmentPlan.getId()),"id需要为空");
Assert.notEmpty(diseaseTreatmentPlan.getDiseaseId(),"疾病id不能为空");
Assert.notEmpty(diseaseTreatmentPlan.getPlanId(),"处置计划id不能为空");
}
}

@ -0,0 +1,258 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.exception.BusinessException;
import com.supervision.manage.pojo.vo.MedicalRecInfoVO;
import com.supervision.manage.pojo.vo.MedicalRecManageVO;
import com.supervision.manage.pojo.vo.MedicalRecQaVO;
import com.supervision.manage.service.DiseaseAncillaryManageService;
import com.supervision.manage.service.DiseasePhysicalManageService;
import com.supervision.manage.service.DiseaseTreatmentPlanManageService;
import com.supervision.model.*;
import com.supervision.service.*;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import com.supervision.vo.manage.MedicalRecPageResVO;
import com.supervision.manage.service.MedicalRecManageService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class MedicalRecManageServiceImpl implements MedicalRecManageService {
private final DiseaseService diseaseService;
private final MedicalRecService medicalRecService;
private final AskPatientAnswerService askPatientAnswerService;
private final PatientService patientService;
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
private final CommonDicService commonDicService;
private final DiseaseQuestionService diseaseQuestionService;
private final DiseaseAncillaryManageService diseaseAncillaryManageService;
private final DiseasePhysicalManageService diseasePhysicalManageService;
private final DiseaseTreatmentPlanManageService diseaseTreatmentPlanManageService;
public List<Disease> queryDiseaseListByDropList() {
// 注意,这里不支持查询复杂疾病,如果需要支持复杂疾病,这里需要单独进行改造
return diseaseService.lambdaQuery().eq(Disease::getDiseaseType, 0).list();
}
@Override
public List<Disease> queryDiseaseListByCreat() {
// 注意,这里不支持查询复杂疾病,如果需要支持复杂疾病,这里需要单独进行改造
return diseaseService.lambdaQuery().eq(Disease::getDiseaseType, 0).list();
}
@Override
public IPage<MedicalRecPageResVO> queryMedicalRecManagePage(String selfDescKeyword, String gender, String diseaseId, Integer pageNum, Integer pageSize) {
// 注意,这里的diseaseId不支持查询复杂疾病,如果需要支持复杂疾病,这里需要单独进行改造
return medicalRecService.queryMedicalRecManagePage(selfDescKeyword, gender, diseaseId, pageNum, pageSize);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createMedicalRec(MedicalRecManageVO reqVO) {
// 首先新增病人
Patient patient = reqVO.getPatient();
patient.insert();
// 然后保存病历
MedicalRec medicalRec = BeanUtil.toBean(reqVO, MedicalRec.class);
medicalRec.setPatientId(patient.getId());
// 注意,这里新增的时候,目前只支持单个疾病,如果需要多个疾病,需要在这里改造,先新增出来一个疾病
medicalRec.setDiseaseId(reqVO.getDiseaseId());
medicalRec.insert();
// 这里生成一个新的编号(首先去数据库里面查询编号,然后用最大的编号+1)(可能存在并发修改导致编码重复问题,不是重点,等有问题再说)
medicalRecService.updateMedicalRecNo("QL", "男".equals(patient.getGender()) ? "M" : "F", medicalRec.getId());
// 然后保存病历对应的问题
List<MedicalRecQaVO> qaList = reqVO.getQaList();
for (MedicalRecQaVO medicalRecQaVO : qaList) {
if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) {
throw new BusinessException("问题ID不能为空");
}
AskPatientAnswer askPatientAnswer = new AskPatientAnswer();
askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId());
askPatientAnswer.setAnswer(medicalRecQaVO.getMedicalRecAnswer());
askPatientAnswer.setMedicalId(medicalRec.getId());
askPatientAnswer.insert();
}
}
@Override
public List<DiseaseAncillaryResVo> queryDiseaseAncillaryByCreat(String diseaseId) {
// 辅助检查
return diseaseAncillaryManageService.queryListByDiseaseId(diseaseId);
}
@Override
public List<DiseasePhysicalResVo> queryDiseasePhysicalByCreat(String diseaseId) {
return diseasePhysicalManageService.queryListByDiseaseId(diseaseId);
}
@Override
public List<DiseaseTreatmentPlanResVo> queryDiseaseTreatmentPlanByCreat(String diseaseId) {
return diseaseTreatmentPlanManageService.queryListByDiseaseId(diseaseId);
}
@Override
public List<MedicalRecQaVO> queryQuestionListByCreat(String diseaseId) {
// 去vp_disease_question获取
List<DiseaseQuestion> list = diseaseQuestionService.lambdaQuery().eq(DiseaseQuestion::getDiseaseId, diseaseId).list();
if (CollUtil.isEmpty(list)) {
return new ArrayList<>();
}
// 获取问题
Set<String> libraryQuestionIdSet = list.stream().map(DiseaseQuestion::getQuestionId).collect(Collectors.toSet());
List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(libraryQuestionIdSet);
Map<String, AskTemplateQuestionLibrary> askQuestionMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, Function.identity()));
// 获取字典
Set<Long> dictIdSet = askTemplateQuestionLibraryList.stream().map(AskTemplateQuestionLibrary::getDictId).collect(Collectors.toSet());
Map<Long, CommonDic> dictMap = commonDicService.listByIds(dictIdSet).stream().collect(Collectors.toMap(CommonDic::getId, Function.identity()));
List<MedicalRecQaVO> result = new ArrayList<>();
for (DiseaseQuestion diseaseQuestion : list) {
AskTemplateQuestionLibrary questionLibrary = askQuestionMap.get(diseaseQuestion.getQuestionId());
if (ObjectUtil.isNotEmpty(questionLibrary)) {
MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
medicalRecQaVO.setLibraryQuestionId(diseaseQuestion.getQuestionId());
// 问题
medicalRecQaVO.setQuestionList(questionLibrary.getQuestion());
// 类目
medicalRecQaVO.setDictId(questionLibrary.getDictId());
// 类目名称
medicalRecQaVO.setDictNamePath(dictMap.getOrDefault(questionLibrary.getDictId(), new CommonDic()).getNameZhPath());
// 默认回答
medicalRecQaVO.setDefaultAnswer(questionLibrary.getDefaultAnswer());
result.add(medicalRecQaVO);
}
}
return result;
}
@Override
public void modifyMedicalRec(MedicalRecManageVO reqVO) {
// 首先修改病人
Patient patient = reqVO.getPatient();
if (StrUtil.isBlank(patient.getId())){
throw new BusinessException("病人ID不能为空");
}
patient.updateById();
// 病历不允许修改
MedicalRec medicalRec = Optional.ofNullable(medicalRecService.getById(reqVO.getId())).orElseThrow(() -> new BusinessException("未找到病历信息"));
if (!StrUtil.equals(medicalRec.getDiseaseId(), reqVO.getDiseaseId())) {
throw new BusinessException("修改病例时,不允许修改疾病");
}
medicalRec.updateById();
// 然后修改问答
// 首先找到数据库中的问答
List<AskPatientAnswer> existQAList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRec.getId()).list();
Map<String, AskPatientAnswer> existQAMap = existQAList.stream().collect(Collectors.toMap(AskPatientAnswer::getId, Function.identity()));
for (MedicalRecQaVO medicalRecQaVO : reqVO.getQaList()) {
if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) {
throw new BusinessException("问题ID不能为空");
}
if (StrUtil.isNotBlank(medicalRecQaVO.getId())) {
// 存在的从Map中移除掉
AskPatientAnswer existAnswer = existQAMap.remove(medicalRecQaVO.getId());
// 然后进行更新
existAnswer.setAnswer(medicalRecQaVO.getMedicalRecAnswer());
existAnswer.updateById();
} else {
AskPatientAnswer askPatientAnswer = new AskPatientAnswer();
askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId());
askPatientAnswer.setAnswer(medicalRecQaVO.getMedicalRecAnswer());
askPatientAnswer.setMedicalId(medicalRec.getId());
askPatientAnswer.insert();
}
}
// 将删除的移除
askPatientAnswerService.removeByIds(existQAMap.values().stream().map(AskPatientAnswer::getId).collect(Collectors.toSet()));
}
@Override
public MedicalRecInfoVO queryMedicalRecInfo(String id) {
MedicalRec medicalRec = Optional.ofNullable(medicalRecService.getById(id)).orElseThrow(() -> new BusinessException("未找到病历"));
MedicalRecInfoVO medicalRecInfoVO = BeanUtil.toBean(medicalRec, MedicalRecInfoVO.class);
medicalRecInfoVO.setDiseaseName(diseaseService.getById(medicalRec.getDiseaseId()).getDiseaseName());
// 病人基本信息
medicalRecInfoVO.setPatient(patientService.getById(medicalRec.getPatientId()));
// 辅助检查
medicalRecInfoVO.setAncillaryList(diseaseAncillaryManageService.queryListByDiseaseId(medicalRec.getDiseaseId()));
// 体格检查
medicalRecInfoVO.setPhysicalList(diseasePhysicalManageService.queryListByDiseaseId(medicalRec.getDiseaseId()));
// 处置计划
medicalRecInfoVO.setTreatmentPlanList(diseaseTreatmentPlanManageService.queryListByDiseaseId(medicalRec.getDiseaseId()));
// 问答策略
medicalRecInfoVO.setQaList(queryMedicalRecQaInfo(id));
return medicalRecInfoVO;
}
/**
*
*/
private List<MedicalRecQaVO> queryMedicalRecQaInfo(String medicalRecId) {
List<AskPatientAnswer> list = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).list();
List<MedicalRecQaVO> medicalRecQaList = list.stream().map(e -> {
MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
medicalRecQaVO.setId(e.getId());
medicalRecQaVO.setLibraryQuestionId(e.getLibraryQuestionId());
// 病历的回答
medicalRecQaVO.setMedicalRecAnswer(e.getAnswer());
return medicalRecQaVO;
}).collect(Collectors.toList());
// 开始构建问题
if (CollUtil.isNotEmpty(medicalRecQaList)) {
// 获取问题
Set<String> libraryQuestionIdSet = medicalRecQaList.stream().map(MedicalRecQaVO::getLibraryQuestionId).collect(Collectors.toSet());
List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(libraryQuestionIdSet);
Map<String, AskTemplateQuestionLibrary> askQuestionMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, Function.identity()));
// 获取字典
Set<Long> dictIdSet = askTemplateQuestionLibraryList.stream().map(AskTemplateQuestionLibrary::getDictId).collect(Collectors.toSet());
Map<Long, CommonDic> dictMap = commonDicService.listByIds(dictIdSet).stream().collect(Collectors.toMap(CommonDic::getId, Function.identity()));
for (MedicalRecQaVO medicalRecQaVO : medicalRecQaList) {
AskTemplateQuestionLibrary questionLibrary = askQuestionMap.get(medicalRecQaVO.getLibraryQuestionId());
if (ObjectUtil.isNotEmpty(questionLibrary)) {
// 问题
medicalRecQaVO.setQuestionList(questionLibrary.getQuestion());
// 类目
medicalRecQaVO.setDictId(questionLibrary.getDictId());
// 类目名称
medicalRecQaVO.setDictNamePath(dictMap.getOrDefault(questionLibrary.getDictId(), new CommonDic()).getNameZhPath());
// 默认回答
medicalRecQaVO.setDefaultAnswer(questionLibrary.getDefaultAnswer());
}
}
}
return medicalRecQaList;
}
@Override
public void deleteMedicalRec(String id) {
medicalRecService.removeById(id);
// 删除病历时,如果是复合疾病,需要将疾病也删除,现在没有做复合疾病,所以先不管
}
}

@ -0,0 +1,51 @@
package com.supervision.manage.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.supervision.manage.service.PhysicalLocationManageService;
import com.supervision.model.ConfigPhysicalLocation;
import com.supervision.service.ConfigPhysicalLocationService;
import com.supervision.vo.manage.PhysicalLocationNode;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class PhysicalLocationManageServiceImpl implements PhysicalLocationManageService {
private final ConfigPhysicalLocationService configPhysicalLocationService;
@Override
public List<PhysicalLocationNode> queryTree() {
List<ConfigPhysicalLocation> list = configPhysicalLocationService.list();
if (CollUtil.isEmpty(list)) {
return CollectionUtil.newArrayList();
}
Map<String, PhysicalLocationNode> map = list.stream().collect(
Collectors.toMap(ConfigPhysicalLocation::getId, p -> BeanUtil.toBean(p, PhysicalLocationNode.class)));
for (Map.Entry<String, PhysicalLocationNode> entry : map.entrySet()) {
PhysicalLocationNode value = entry.getValue();
if (StrUtil.isNotEmpty(value.getParentId())) {
PhysicalLocationNode physicalLocationNode = map.get(value.getParentId());
if (!Objects.isNull(physicalLocationNode)) {
List<PhysicalLocationNode> child = physicalLocationNode.getChild();
if (null == child) {
child = new ArrayList<>();
physicalLocationNode.setChild(child);
}
child.add(value);
}
}
}
return map.values().stream().filter(n -> StrUtil.isEmpty(n.getParentId())).collect(Collectors.toList());
}
}

@ -0,0 +1,22 @@
package com.supervision.manage.service.impl;
import com.supervision.manage.service.PhysicalToolManageService;
import com.supervision.service.ConfigPhysicalToolService;
import com.supervision.vo.ask.ConfigPhysicalToolResVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
@RequiredArgsConstructor
public class PhysicalToolManageServiceImpl implements PhysicalToolManageService {
private final ConfigPhysicalToolService configPhysicalToolService;
@Override
public List<ConfigPhysicalToolResVO> queryPhysicalToolList() {
return configPhysicalToolService.queryPhysicalToolList();
}
}

@ -0,0 +1,57 @@
#服务器端口
server:
port: 8891
servlet:
context-path: /virtual-patient-manage
undertow:
# HTTP post内容的最大大小。当值为-1时默认值为大小是无限的
max-http-post-size: -1
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分
buffer-size: 512
# 是否分配的直接内存
direct-buffers: true
spring:
application:
name: virtual-patient-manage
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
##数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.10.138:3306/virtual_patient_v2.0.1?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8
username: root
password: '123456'
initial-size: 5 # 初始化大小
min-idle: 10 # 最小连接数
max-active: 20 # 最大连接数
max-wait: 60000 # 获取连接时的最大等待时间
min-evictable-idle-time-millis: 300000 # 一个连接在池中最小生存的时间,单位是毫秒
time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
filters: stat,wall # 配置扩展插件stat-监控统计log4j-日志wall-防火墙防止SQL注入去掉后监控界面的sql无法统计
validation-query: SELECT 1 # 检测连接是否有效的 SQL语句为空时以下三个配置均无效
test-on-borrow: true # 申请连接时执行validationQuery检测连接是否有效默认true开启后会降低性能
test-on-return: true # 归还连接时执行validationQuery检测连接是否有效默认false开启后会降低性能
test-while-idle: true # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效默认false建议开启不影响性能
stat-view-servlet:
enabled: false # 是否开启 StatViewServlet
filter:
stat:
enabled: true # 是否开启 FilterStat默认true
log-slow-sql: true # 是否开启 慢SQL 记录默认false
slow-sql-millis: 5000 # 慢 SQL 的标准,默认 3000单位毫秒
merge-sql: false # 合并多个连接池的监控数据默认false
redis:
host: 192.168.10.138
port: 6379
password: 123456
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

@ -0,0 +1,58 @@
#服务器端口
server:
port: 8891
servlet:
context-path: /virtual-patient-manage
undertow:
# HTTP post内容的最大大小。当值为-1时默认值为大小是无限的
max-http-post-size: -1
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分
buffer-size: 512
# 是否分配的直接内存
direct-buffers: true
spring:
application:
name: virtual-patient-manage
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
##数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.10.138:3306/virtual_patient?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8
username: root
password: '123456'
initial-size: 5 # 初始化大小
min-idle: 10 # 最小连接数
max-active: 20 # 最大连接数
max-wait: 60000 # 获取连接时的最大等待时间
min-evictable-idle-time-millis: 300000 # 一个连接在池中最小生存的时间,单位是毫秒
time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
filters: stat,wall # 配置扩展插件stat-监控统计log4j-日志wall-防火墙防止SQL注入去掉后监控界面的sql无法统计
validation-query: SELECT 1 # 检测连接是否有效的 SQL语句为空时以下三个配置均无效
test-on-borrow: true # 申请连接时执行validationQuery检测连接是否有效默认true开启后会降低性能
test-on-return: true # 归还连接时执行validationQuery检测连接是否有效默认false开启后会降低性能
test-while-idle: true # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效默认false建议开启不影响性能
stat-view-servlet:
enabled: false # 是否开启 StatViewServlet
filter:
stat:
enabled: true # 是否开启 FilterStat默认true
log-slow-sql: true # 是否开启 慢SQL 记录默认false
slow-sql-millis: 5000 # 慢 SQL 的标准,默认 3000单位毫秒
merge-sql: false # 合并多个连接池的监控数据默认false
redis:
host: 192.168.10.138
port: 6379
password: 123456
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

@ -0,0 +1,58 @@
#服务器端口
server:
port: 8891
servlet:
context-path: /virtual-patient-manage
undertow:
# HTTP post内容的最大大小。当值为-1时默认值为大小是无限的
max-http-post-size: -1
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分
buffer-size: 512
# 是否分配的直接内存
direct-buffers: true
spring:
application:
name: virtual-patient-manage
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
##数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.10.138:3306/virtual_patient_test?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8
username: root
password: '123456'
initial-size: 5 # 初始化大小
min-idle: 10 # 最小连接数
max-active: 20 # 最大连接数
max-wait: 60000 # 获取连接时的最大等待时间
min-evictable-idle-time-millis: 300000 # 一个连接在池中最小生存的时间,单位是毫秒
time-between-eviction-runs-millis: 60000 # 多久才进行一次检测需要关闭的空闲连接,单位是毫秒
filters: stat,wall # 配置扩展插件stat-监控统计log4j-日志wall-防火墙防止SQL注入去掉后监控界面的sql无法统计
validation-query: SELECT 1 # 检测连接是否有效的 SQL语句为空时以下三个配置均无效
test-on-borrow: true # 申请连接时执行validationQuery检测连接是否有效默认true开启后会降低性能
test-on-return: true # 归还连接时执行validationQuery检测连接是否有效默认false开启后会降低性能
test-while-idle: true # 申请连接时如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效默认false建议开启不影响性能
stat-view-servlet:
enabled: false # 是否开启 StatViewServlet
filter:
stat:
enabled: true # 是否开启 FilterStat默认true
log-slow-sql: true # 是否开启 慢SQL 记录默认false
slow-sql-millis: 5000 # 慢 SQL 的标准,默认 3000单位毫秒
merge-sql: false # 合并多个连接池的监控数据默认false
redis:
host: 192.168.10.138
port: 6379
password: 123456
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="INFO"/>
<!-- 开发环境 -->
<springProfile name="local">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.supervision" level="DEBUG"/>
<logger name="org.springframework.scheduling" level="INFO"/>
</springProfile>
<!-- 测试环境,生产环境 -->
<springProfile name="dev,test,prod">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.supervision" level="INFO"/>
<logger name="org.springframework.scheduling" level="INFO"/>
<root level="INFO">
<appender name="DAILY_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 服务器中当天的日志 -->
<file>/data/vp/log/virtual-patient-manage.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 服务器归档日志 -->
<fileNamePattern>/data/vp/log/history/virtual-patient-manage-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
</root>
</springProfile>
</configuration>

@ -0,0 +1,18 @@
package com.supervision.dto;
import com.supervision.model.CommonDic;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class CommonDictTreeDTO extends CommonDic {
/**
*
*/
private List<CommonDictTreeDTO> childDictTreeList;
}

@ -1,7 +1,14 @@
package com.supervision.mapper; package com.supervision.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.AskTemplateQuestionLibrary; import com.supervision.model.AskTemplateQuestionLibrary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author flevance * @author flevance
@ -11,6 +18,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface AskTemplateQuestionLibraryMapper extends BaseMapper<AskTemplateQuestionLibrary> { public interface AskTemplateQuestionLibraryMapper extends BaseMapper<AskTemplateQuestionLibrary> {
List<AskQuestionLibraryResVo> queryList(@Param("askQuestionLibrary")AskQuestionLibraryReqVo askQuestionLibraryReqVo);
Page<AskQuestionLibraryResVo> queryPageList(IPage<AskQuestionLibraryResVo> page,
@Param("askQuestionLibrary") AskQuestionLibraryReqVo askQuestionLibrary);
} }

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.CommonDic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_common_dic()Mapper
* @createDate 2023-11-23 10:52:22
* @Entity com.supervision.model.CommonDic
*/
public interface CommonDicMapper extends BaseMapper<CommonDic> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.ConfigDrug;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_config_drug()Mapper
* @createDate 2023-12-07 16:42:57
* @Entity com.supervision.model.ConfigDrug
*/
public interface ConfigDrugMapper extends BaseMapper<ConfigDrug> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.ConfigTreatmentPlan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_treatment_plan()Mapper
* @createDate 2023-11-23 10:24:03
* @Entity com.supervision.model.ConfigTreatmentPlan
*/
public interface ConfigTreatmentPlanMapper extends BaseMapper<ConfigTreatmentPlan> {
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.DefaultItemIndicator;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_default_item_indicator()Mapper
* @createDate 2023-11-23 10:13:01
* @Entity com.supervision.model.DefaultItemIndicator
*/
public interface DefaultItemIndicatorMapper extends BaseMapper<DefaultItemIndicator> {
}

@ -3,7 +3,7 @@ package com.supervision.mapper;
import com.supervision.model.DiagnosisAncillaryRecord; import com.supervision.model.DiagnosisAncillaryRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.AskAncillaryHistoryResVO; import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.vo.result.AncillaryRecordByResultDAO; import com.supervision.vo.result.AncillaryRecordByResultDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -16,7 +16,7 @@ import java.util.List;
*/ */
public interface DiagnosisAncillaryRecordMapper extends BaseMapper<DiagnosisAncillaryRecord> { public interface DiagnosisAncillaryRecordMapper extends BaseMapper<DiagnosisAncillaryRecord> {
List<AncillaryRecordByResultDAO> queryAncillaryResultByProcessId(@Param("processId") String processId); List<AncillaryRecordByResultDTO> queryAncillaryResultByProcessId(@Param("processId") String processId);
List<AskAncillaryHistoryResVO> queryAncillaryRecord(@Param("processId") String processId); List<AskAncillaryHistoryResVO> queryAncillaryRecord(@Param("processId") String processId);

@ -3,7 +3,7 @@ package com.supervision.mapper;
import com.supervision.model.DiagnosisPhysicalRecord; import com.supervision.model.DiagnosisPhysicalRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.AskPhysicalHistoryResVO; import com.supervision.vo.ask.AskPhysicalHistoryResVO;
import com.supervision.vo.result.PhysicalRecordByResultDAO; import com.supervision.vo.result.PhysicalRecordByResultDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -16,7 +16,7 @@ import java.util.List;
*/ */
public interface DiagnosisPhysicalRecordMapper extends BaseMapper<DiagnosisPhysicalRecord> { public interface DiagnosisPhysicalRecordMapper extends BaseMapper<DiagnosisPhysicalRecord> {
List<PhysicalRecordByResultDAO> queryPhysicalResultByProcessId(@Param("processId") String processId); List<PhysicalRecordByResultDTO> queryPhysicalResultByProcessId(@Param("processId") String processId);
List<AskPhysicalHistoryResVO> queryAskPhysicalHistory(@Param("processId") String processId); List<AskPhysicalHistoryResVO> queryAskPhysicalHistory(@Param("processId") String processId);

@ -3,6 +3,7 @@ package com.supervision.mapper;
import com.supervision.model.DiagnosisPrimary; import com.supervision.model.DiagnosisPrimary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.DiagnosisPrimaryVO; import com.supervision.vo.ask.DiagnosisPrimaryVO;
import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -15,7 +16,13 @@ import java.util.List;
*/ */
public interface DiagnosisPrimaryMapper extends BaseMapper<DiagnosisPrimary> { public interface DiagnosisPrimaryMapper extends BaseMapper<DiagnosisPrimary> {
List<DiagnosisPrimaryVO> queryAskPrimaryList(@Param("processId") String processId); List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessId(@Param("processId") String processId);
DiagnosisPrimaryVO queryAskPrimaryListByPrimaryId(@Param("primaryId") String primaryId);
List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(@Param("processIds") List<String> processIds);
List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(@Param("processId") String processId);
} }

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.DiagnosisPrimaryRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_diagnosis_primary_relation()Mapper
* @createDate 2023-12-07 10:28:30
* @Entity com.supervision.model.DiagnosisPrimaryRelation
*/
public interface DiagnosisPrimaryRelationMapper extends BaseMapper<DiagnosisPrimaryRelation> {
}

@ -1,18 +0,0 @@
package com.supervision.mapper;
import com.supervision.model.DiagnosisResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_diagnosis_result()Mapper
* @createDate 2023-10-20 17:19:21
* @Entity com.supervision.model.DiagnosisResult
*/
public interface DiagnosisResultMapper extends BaseMapper<DiagnosisResult> {
}

@ -3,6 +3,7 @@ package com.supervision.mapper;
import com.supervision.dto.DiseaseAncillaryDto; import com.supervision.dto.DiseaseAncillaryDto;
import com.supervision.model.DiseaseAncillary; import com.supervision.model.DiseaseAncillary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.DiseaseAncillaryResVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -17,6 +18,9 @@ public interface DiseaseAncillaryMapper extends BaseMapper<DiseaseAncillary> {
List<DiseaseAncillaryDto> queryDiseaseAncillaryDtoList(@Param("diseaseAncillary")DiseaseAncillary diseaseAncillary); List<DiseaseAncillaryDto> queryDiseaseAncillaryDtoList(@Param("diseaseAncillary")DiseaseAncillary diseaseAncillary);
List<DiseaseAncillaryResVo> queryListByDiseaseId(@Param("diseaseId")String diseaseId);
} }

@ -2,6 +2,10 @@ package com.supervision.mapper;
import com.supervision.model.DiseasePhysical; import com.supervision.model.DiseasePhysical;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.DiseasePhysicalResVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @author flevance * @author flevance
@ -11,6 +15,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface DiseasePhysicalMapper extends BaseMapper<DiseasePhysical> { public interface DiseasePhysicalMapper extends BaseMapper<DiseasePhysical> {
List<DiseasePhysicalResVo> queryListByDiseaseId(@Param("diseaseId") String diseaseId);
} }

@ -0,0 +1,30 @@
package com.supervision.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.DiseaseQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.AskQuestionLibraryReqVo;
import com.supervision.vo.manage.AskQuestionLibraryResVo;
import com.supervision.vo.manage.DiseaseQuestionResVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Administrator
* @description vp_disease_question_relation()Mapper
* @createDate 2023-11-23 14:06:54
* @Entity com.supervision.model.DiseaseQuestionRelation
*/
public interface DiseaseQuestionMapper extends BaseMapper<DiseaseQuestion> {
List<DiseaseQuestionResVo> queryPageByDiseaseId(@Param("diseaseId") String diseaseId);
Page<AskQuestionLibraryResVo> queryQaLibPageList(IPage<AskQuestionLibraryResVo> page,
@Param("askQuestionLibrary") AskQuestionLibraryReqVo askQuestionLibraryReqVo);
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.DiseaseTreatmentPlanDrug;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_treatment_plan_drug()Mapper
* @createDate 2023-12-07 11:34:05
* @Entity com.supervision.model.TreatmentPlanDrug
*/
public interface DiseaseTreatmentPlanDrugMapper extends BaseMapper<DiseaseTreatmentPlanDrug> {
}

@ -0,0 +1,23 @@
package com.supervision.mapper;
import com.supervision.model.DiseaseTreatmentPlan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.DiseaseTreatmentPlanResVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Administrator
* @description vp_disease_treatmen_relation()Mapper
* @createDate 2023-11-23 10:43:28
* @Entity com.supervision.model.VpDiseaseTreatmenRelation
*/
public interface DiseaseTreatmentPlanMapper extends BaseMapper<DiseaseTreatmentPlan> {
List<DiseaseTreatmentPlanResVo> queryListByDiseaseId(@Param("diseaseId") String diseaseId);
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.FileResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author flevance
* @description vp_file_resource()Mapper
* @createDate 2023-12-25 10:52:22
* @Entity com.supervision.model.FileResource
*/
public interface FileResourceMapper extends BaseMapper<FileResource> {
}

@ -1,16 +1,41 @@
package com.supervision.mapper; package com.supervision.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.MedicalRec; import com.supervision.model.MedicalRec;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.MedicalRecPageResVO;
import org.apache.ibatis.annotations.Param;
/** /**
* @author flevance * @author flevance
* @description vp_medical_rec()Mapper * @description vp_medical_rec()Mapper
* @createDate 2023-11-03 11:25:43 * @createDate 2023-11-03 11:25:43
* @Entity com.supervision.model.MedicalRec * @Entity com.supervision.model.MedicalRec
*/ */
public interface MedicalRecMapper extends BaseMapper<MedicalRec> { public interface MedicalRecMapper extends BaseMapper<MedicalRec> {
/**
* --
*
* @param selfDescKeyword
* @param gender
* @param diseaseId ID
* @param page
* @return
*/
IPage<MedicalRecPageResVO> queryMedicalRecManagePage(@Param("selfDescKeyword") String selfDescKeyword,
@Param("gender") String gender,
@Param("diseaseId") String diseaseId, @Param("page") Page<MedicalRecPageResVO> page);
/**
* ,+1
* @param code
* @param gender M F
* @param id ID
*/
void updateMedicalRecNo(@Param("code") String code, @Param("gender") String gender, @Param("id") String id);
} }

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.ProcessEvaluation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_process_evaluation()Mapper
* @createDate 2023-11-23 10:50:14
* @Entity com.supervision.model.ProcessEvaluation
*/
public interface ProcessEvaluationMapper extends BaseMapper<ProcessEvaluation> {
}

@ -1,7 +1,11 @@
package com.supervision.mapper; package com.supervision.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.Process; import com.supervision.model.Process;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.result.DiagnoseProcessReqVo;
import com.supervision.vo.result.DiagnoseProcessResVo;
import org.apache.ibatis.annotations.Param;
/** /**
* @author flevance * @author flevance
@ -11,6 +15,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface ProcessMapper extends BaseMapper<Process> { public interface ProcessMapper extends BaseMapper<Process> {
Page<DiagnoseProcessResVo> queryDiagnoseProcessPageList(Page<DiagnoseProcessResVo> page,
@Param("diagnoseProcess") DiagnoseProcessReqVo diagnoseProcessReqVo);
} }

@ -0,0 +1,21 @@
package com.supervision.mapper;
import com.supervision.model.ProcessMedical;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.ProcessMedicalResVo;
import org.apache.ibatis.annotations.Param;
/**
* @author flevance
* @description vp_process_medical()Mapper
* @createDate 2023-11-23 14:32:44
* @Entity com.supervision.model.ProcessMedical
*/
public interface ProcessMedicalMapper extends BaseMapper<ProcessMedical> {
ProcessMedicalResVo findByProcessId(@Param("processId") String processId);
}

@ -0,0 +1,18 @@
package com.supervision.mapper;
import com.supervision.model.TreatmentPlanRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author Administrator
* @description vp_treatment_plan_record()Mapper
* @createDate 2023-12-06 16:43:24
* @Entity com.supervision.model.TreatmentPlanRecord
*/
public interface TreatmentPlanRecordMapper extends BaseMapper<TreatmentPlanRecord> {
}

@ -8,7 +8,9 @@ import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.supervision.handler.StringListTypeHandler; import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
@ -17,33 +19,33 @@ import lombok.Data;
*/ */
@TableName(value ="vp_ask_patient_answer",autoResultMap = true) @TableName(value ="vp_ask_patient_answer",autoResultMap = true)
@Data @Data
public class AskPatientAnswer implements Serializable { public class AskPatientAnswer extends Model<AskPatientAnswer> implements Serializable {
/** /**
* *
*/ */
@TableId @TableId
private String id; private String id;
/**
* ID @ApiModelProperty("病例id")
*/ private String medicalId;
private String patientId;
/** /**
* ID * ID
*/ */
@ApiModelProperty(" 问题库问题ID")
private String libraryQuestionId; private String libraryQuestionId;
private String code;
/** /**
* *
*/ */
@TableField(typeHandler = StringListTypeHandler.class) @ApiModelProperty(" 回答")
private List<String> answer; private String answer;
/** @ApiModelProperty("回答资源id")
* - 01 private String answerResourceId;
*/
private Integer requireCheck;
/** /**
* ID * ID

@ -24,6 +24,11 @@ public class AskTemplateQuestionLibrary implements Serializable {
@TableId @TableId
private String id; private String id;
/**
* ID(common_dictID)
*/
private Long dictId;
/** /**
* *
*/ */
@ -43,8 +48,11 @@ public class AskTemplateQuestionLibrary implements Serializable {
/** /**
* *
*/ */
@TableField(typeHandler = StringListTypeHandler.class) private String defaultAnswer;
private List<String> defaultAnswer;
private String defaultAnswerCode;
private String defaultAnswerResourceId;
/** /**
* ID * ID

@ -0,0 +1,88 @@
package com.supervision.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
/**
*
* @TableName vp_common_dic
*/
@TableName(value ="vp_common_dic")
@Data
public class CommonDic extends Model<CommonDic> implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String nameZh;
/**
*
*/
private String nameEn;
/**
* code
*/
private String groupCode;
/**
* id
*/
private Long parentId;
/**
* ,
*/
private Integer priority;
/**
*
*/
private String nameZhPath;
/**
*
*/
private String description;
/**
*
*/
private String createUserId;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateUserId;
/**
*
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -53,6 +54,22 @@ public class ConfigAncillaryItem implements Serializable {
@ApiModelProperty("检查名称") @ApiModelProperty("检查名称")
private String itemName; private String itemName;
@ApiModelProperty("检查部位名称")
private String locationName;
@ApiModelProperty("英文名")
private String itemNameEn;
@ApiModelProperty("检查价格")
private BigDecimal price;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("说明")
private String description;
/** /**
* *
*/ */
@ -63,6 +80,13 @@ public class ConfigAncillaryItem implements Serializable {
@TableField(typeHandler = StringListTypeHandler.class) @TableField(typeHandler = StringListTypeHandler.class)
private List<String> callOutQuestion; private List<String> callOutQuestion;
@ApiModelProperty("检查类型排序")
private Integer typePriority;
@ApiModelProperty("item排序")
private Integer itemPriority;
/** /**
* ID * ID
*/ */

@ -0,0 +1,96 @@
package com.supervision.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @TableName vp_config_drug
*/
@TableName(value ="vp_config_drug")
@Data
public class ConfigDrug implements Serializable {
/**
*
*/
private String id;
/**
*
*/
private String drugName;
/**
*
*/
private String drugNameEn;
/**
*
*/
private String standards;
/**
*
*/
private Long dose;
/**
*
*/
private String unit;
/**
*
*/
private String intervalDay;
/**
*
*/
private String dosageForm;
/**
* (0: 1)
*/
private String skinTestFlag;
/**
*
*/
private Integer costType;
/**
* ID
*/
@ApiModelProperty(hidden = true)
private String createUserId;
/**
*
*/
@ApiModelProperty(hidden = true)
private Date createTime;
/**
*
*/
@ApiModelProperty(hidden = true)
private String updateUserId;
/**
*
*/
@ApiModelProperty(hidden = true)
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -65,6 +65,12 @@ public class ConfigPhysicalTool implements Serializable {
@ApiModelProperty("code排序") @ApiModelProperty("code排序")
private Integer codePriority; private Integer codePriority;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("说明")
private String description;
/** /**
* ID * ID
*/ */

@ -0,0 +1,79 @@
package com.supervision.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.supervision.handler.StringListTypeHandler;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @TableName vp_treatment_plan
*/
@TableName(value ="vp_config_treatment_plan")
@Data
public class ConfigTreatmentPlan implements Serializable {
/**
* id
*/
@TableId
private String id;
@ApiModelProperty("处置计划id")
private String disposalPlanId;
@ApiModelProperty("处置计划")
private String disposalPlan;
@ApiModelProperty("处置方式(0门诊 1住院)")
private Integer disposalMethod;
@ApiModelProperty("一级措施id")
private String firstMeasuresId;
@ApiModelProperty("一级措施")
private String firstMeasures;
@ApiModelProperty("二级措施")
private String secondMeasures;
@ApiModelProperty("推荐用药")
@TableField(typeHandler = StringListTypeHandler.class)
private List<String> recommendedMedication;
/**
*
*/
private String description;
/**
* ID
*/
private String createUserId;
/**
*
*/
private Date createTime;
/**
*
*/
private String updateUserId;
/**
*
*/
private Date updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -0,0 +1,69 @@
package com.supervision.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
import org.apache.ibatis.annotations.Insert;
/**
*
* @TableName vp_default_item_indicator
*/
@TableName(value ="vp_default_item_indicator")
@Data
public class DefaultItemIndicator implements Serializable {
/**
*
*/
private String id;
/**
* idid
*/
private String itemId;
/**
* id
*/
private Integer locationId;
/**
* /
*/
private String gender;
/**
*
*/
private String ageRange;
/**
* ID
*/
private String createUserId;
/**
*
*/
private LocalDateTime createTime;
/**
*
*/
private String updateUserId;
/**
*
*/
private LocalDateTime updateTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.ibatis.annotations.Insert;
/** /**
* *
@ -44,18 +45,23 @@ public class DiagnosisAncillaryRecord extends Model<DiagnosisAncillaryRecord> im
@ApiModelProperty("项目ID") @ApiModelProperty("项目ID")
private String itemId; private String itemId;
/**
* ID
*/
@ApiModelProperty("初步诊断ID")
private String primaryId;
/** /**
* *
*/ */
@ApiModelProperty("检查结果") @ApiModelProperty("检查结果")
private String result; private String result;
@ApiModelProperty("诊断判读结果")
private String assessmentResult;
@ApiModelProperty("是否是证实诊断依据(0否1是)")
private Integer basisConfirmFlag;
@ApiModelProperty("是否是鉴别依据(0否1是)")
private Integer basisIdentificationFlag;
/** /**
* ID * ID
*/ */
@ -81,5 +87,11 @@ public class DiagnosisAncillaryRecord extends Model<DiagnosisAncillaryRecord> im
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(exist = false)
private String itemName;
} }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save