Compare commits

..

No commits in common. 'dev_2.0.0' and 'dev' have entirely different histories.

@ -1,26 +1,3 @@
# virtual-patient
虚拟病人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
虚拟病人WEB后端

@ -1,19 +0,0 @@
# 设置基础镜像
# 在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;"]

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

@ -1,40 +0,0 @@
# 定义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;
}
}

@ -1,49 +0,0 @@
# 定义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;
}
}

@ -1,21 +0,0 @@
-----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-----

@ -1,17 +0,0 @@
-----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-----

@ -1,28 +0,0 @@
-----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-----

@ -1,7 +0,0 @@
# 设置基础镜像
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,15 +43,11 @@
<freemarker.version>2.3.31</freemarker.version>
<mysql-connector-java.version>8.0.26</mysql-connector-java.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>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
@ -124,18 +120,6 @@
<artifactId>swagger-annotations</artifactId>
<version>${io-swagger.version}</version>
</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>
</dependencyManagement>

@ -30,21 +30,6 @@
</exclusions>
</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>
<groupId>org.springframework.boot</groupId>
@ -101,16 +86,6 @@
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>

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

@ -1,24 +0,0 @@
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();
}
}

@ -1,19 +0,0 @@
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.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @author ljt on 2022/08/13.
@ -16,13 +16,13 @@ public class MyBatisMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//属性名称,不是字段名称
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
// 使用MP进行修改操作该方法执行
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}

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

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

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

@ -1,14 +0,0 @@
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;
}

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

@ -1,16 +0,0 @@
# 设置基础镜像
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,14 +1,9 @@
package com.supervision.manage;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;
@SpringBootApplication
@MapperScan(basePackages = {"com.supervision.**.mapper"})
@ComponentScan(basePackages = {"com.supervision.**"})
public class VirtualPatientManageApplication {
public static void main(String[] args) {

@ -1,28 +0,0 @@
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);
}
}

@ -1,52 +0,0 @@
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();
}
}

@ -1,29 +0,0 @@
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();
}
}

@ -1,29 +0,0 @@
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();
}
}

@ -1,45 +0,0 @@
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);
}
}

@ -1,68 +0,0 @@
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);
}
}

@ -1,69 +0,0 @@
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);
}
}

@ -1,68 +0,0 @@
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);
}
}

@ -1,63 +0,0 @@
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);
}
}

@ -1,70 +0,0 @@
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);
}
}

@ -1,105 +0,0 @@
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);
}
}

@ -1,34 +0,0 @@
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;
}

@ -1,30 +0,0 @@
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;
}

@ -1,29 +0,0 @@
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;
}

@ -1,37 +0,0 @@
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;
}

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

@ -1,11 +0,0 @@
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);
}

@ -1,17 +0,0 @@
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();
}

@ -1,13 +0,0 @@
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);
}

@ -1,27 +0,0 @@
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);
}

@ -1,19 +0,0 @@
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);
}

@ -1,23 +0,0 @@
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);
}

@ -1,22 +0,0 @@
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);
}

@ -1,23 +0,0 @@
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);
}

@ -1,42 +0,0 @@
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);
}

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

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

@ -1,29 +0,0 @@
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);
}
}

@ -1,41 +0,0 @@
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();
}
}

@ -1,37 +0,0 @@
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);
}
}

@ -1,139 +0,0 @@
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);
}
}

@ -1,121 +0,0 @@
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());
}
}

@ -1,138 +0,0 @@
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(),"预期诊断结果不能为空");
}
}

@ -1,96 +0,0 @@
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不能为空");
}
}

@ -1,107 +0,0 @@
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不能为空");
}
}

@ -1,258 +0,0 @@
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);
// 删除病历时,如果是复合疾病,需要将疾病也删除,现在没有做复合疾病,所以先不管
}
}

@ -1,51 +0,0 @@
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());
}
}

@ -1,22 +0,0 @@
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();
}
}

@ -1,57 +0,0 @@
#服务器端口
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

@ -1,58 +0,0 @@
#服务器端口
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

@ -1,58 +0,0 @@
#服务器端口
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

@ -1,40 +0,0 @@
<?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>

@ -1,18 +0,0 @@
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,14 +1,7 @@
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.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
@ -18,11 +11,6 @@ import java.util.List;
*/
public interface AskTemplateQuestionLibraryMapper extends BaseMapper<AskTemplateQuestionLibrary> {
List<AskQuestionLibraryResVo> queryList(@Param("askQuestionLibrary")AskQuestionLibraryReqVo askQuestionLibraryReqVo);
Page<AskQuestionLibraryResVo> queryPageList(IPage<AskQuestionLibraryResVo> page,
@Param("askQuestionLibrary") AskQuestionLibraryReqVo askQuestionLibrary);
}

@ -1,18 +0,0 @@
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> {
}

@ -1,18 +0,0 @@
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> {
}

@ -1,18 +0,0 @@
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> {
}

@ -1,18 +0,0 @@
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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.vo.result.AncillaryRecordByResultDTO;
import com.supervision.vo.result.AncillaryRecordByResultDAO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,7 +16,7 @@ import java.util.List;
*/
public interface DiagnosisAncillaryRecordMapper extends BaseMapper<DiagnosisAncillaryRecord> {
List<AncillaryRecordByResultDTO> queryAncillaryResultByProcessId(@Param("processId") String processId);
List<AncillaryRecordByResultDAO> queryAncillaryResultByProcessId(@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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.ask.AskPhysicalHistoryResVO;
import com.supervision.vo.result.PhysicalRecordByResultDTO;
import com.supervision.vo.result.PhysicalRecordByResultDAO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,7 +16,7 @@ import java.util.List;
*/
public interface DiagnosisPhysicalRecordMapper extends BaseMapper<DiagnosisPhysicalRecord> {
List<PhysicalRecordByResultDTO> queryPhysicalResultByProcessId(@Param("processId") String processId);
List<PhysicalRecordByResultDAO> queryPhysicalResultByProcessId(@Param("processId") String processId);
List<AskPhysicalHistoryResVO> queryAskPhysicalHistory(@Param("processId") String processId);

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

@ -1,18 +0,0 @@
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> {
}

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

@ -2,10 +2,6 @@ package com.supervision.mapper;
import com.supervision.model.DiseasePhysical;
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
@ -15,8 +11,6 @@ import java.util.List;
*/
public interface DiseasePhysicalMapper extends BaseMapper<DiseasePhysical> {
List<DiseasePhysicalResVo> queryListByDiseaseId(@Param("diseaseId") String diseaseId);
}

@ -1,30 +0,0 @@
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);
}

@ -1,18 +0,0 @@
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> {
}

@ -1,23 +0,0 @@
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);
}

@ -1,18 +0,0 @@
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,41 +1,16 @@
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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.supervision.vo.manage.MedicalRecPageResVO;
import org.apache.ibatis.annotations.Param;
/**
* @author flevance
* @description vp_medical_rec()Mapper
* @createDate 2023-11-03 11:25:43
* @Entity com.supervision.model.MedicalRec
*/
* @author flevance
* @description vp_medical_rec()Mapper
* @createDate 2023-11-03 11:25:43
* @Entity com.supervision.model.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);
}

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

@ -1,21 +0,0 @@
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);
}

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

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

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

@ -1,96 +0,0 @@
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,12 +65,6 @@ public class ConfigPhysicalTool implements Serializable {
@ApiModelProperty("code排序")
private Integer codePriority;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("说明")
private String description;
/**
* ID
*/

@ -1,79 +0,0 @@
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;
}

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