最新版本升级

This commit is contained in:
Zhang.WH
2025-09-02 19:15:07 +08:00
parent 2c907e49f4
commit 7d972e2d17
3598 changed files with 155327 additions and 23880 deletions

View File

@@ -0,0 +1 @@
restart.include.json=/com.alibaba.fastjson2.*.jar

View File

@@ -0,0 +1,86 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: jdbc:postgresql://192.168.10.240:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 192.168.10.240
port: 6379
# 数据库索引
database: 1
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,87 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: jdbc:postgresql://60.188.247.175:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 60.188.247.175
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,87 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: jdbc:postgresql://192.168.30.199:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 192.168.30.199
# 端口默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,87 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: jdbc:postgresql://192.168.1.123:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 192.168.1.123
# 端口默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,87 @@
# 数据源配置 农大
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
master:
url: jdbc:postgresql://localhost:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
host: 127.0.0.1
# 端口默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,93 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
# master:
# url: jdbc:postgresql://192.168.1.123:5432/openhistest?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
# username: postgres
# password: root
master:
url: jdbc:postgresql://192.168.30.199:5432/openhistest?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 # FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: openhis
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# redis 配置
redis:
# 地址
# host: 192.168.1.123
host: 192.168.30.199
# 端口默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
password: redis
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 文言
messages:
basename: i18n/general_message/messages
encoding: utf-8

View File

@@ -0,0 +1,131 @@
# 项目相关配置
core:
# 名称
name: OpenHis
# 版本
version: 0.0.1
# 版权年份
copyrightYear: 2025
# 文件路径
profile: D:/home/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口默认为18080
port: 18080
servlet:
# 应用的访问路径
context-path: /openhis
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数默认为100
accept-count: 1000
threads:
# tomcat最大线程数默认为200
max: 800
# Tomcat启动初始化的线程数默认值10
min-spare: 100
# 日志配置
logging:
level:
com.openhis: debug
org.springframework: warn
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间默认10分钟
lockTime: 10
# Spring配置
spring:
main:
allow-circular-references: true
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: local # (天翼云)cloud 本地测试test 本地local 生产prod (农大) nd (长大) cd
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期默认30分钟
expireTime: 1000
# MyBatis配置
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.core.**.domain,com.openhis.**.domain
# 配置mapper的扫描找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
#helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# 分页插件会自动检测当前的数据库链接,自动选择合适的分页方式
auto-dialect: true
# 默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页
auto-runtime-dialect: true
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
# flowable相关表
flowable:
# true 会对数据库中所有表进行更新操作。如果表不存在,则自动创建(建议开发时使用)
database-schema-update: false
# 关闭定时任务JOB
async-executor-activate: false
# liteflow配置
liteflow:
#规则文件路径
rule-source: config/flow.el.xml
#liteflow是否开启默认为true
enable: true
#liteflow的banner打印是否开启默认为true
print-banner: false

View File

@@ -0,0 +1,10 @@
:::::::: ::::::::: :::::::::: :::: ::: ::: ::: ::::::::::: ::::::::
:+: :+: :+: :+: :+: :+:+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +:+ +:+
+#+ +:+ +#++:++#+ +#++:++# +#+ +:+ +#+ +#++:++#++ +#+ +#++:++#++
+#+ +#+ +#+ +#+ +#+ +#+#+# +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+#+# #+# #+# #+# #+# #+#
######## ### ########## ### #### ### ### ########### ########
Application Version: ${core.version}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<flow>
<chain name="chain1">
THEN(a, b, c);
</chain>
</flow>

View File

@@ -0,0 +1,6 @@
#http.yml
http:
appId: "JLNYDX2611325"
key: "e3d214e5b8414b583aefd287fd"
url: "http://clydzp.chinaebill.cn:8001/medical-web"
fixmedinsCode: "H22017200667"

View File

@@ -0,0 +1,53 @@
#错误消息
not.null=* 必须填写
user.jcaptcha.error=验证码错误
user.jcaptcha.expire=验证码已失效
user.not.exists=用户不存在/密码错误
user.password.not.match=用户不存在/密码错误
user.password.retry.limit.count=密码输入错误{0}次
user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
user.password.delete=对不起,您的账号已被删除
user.blocked=用户已封禁,请联系管理员
role.blocked=角色已封禁,请联系管理员
login.blocked=很遗憾访问IP已被列入系统黑名单
user.logout.success=退出成功
length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功
user.register.success=注册成功
user.notfound=请重新登录
user.forcelogout=管理员强制退出,请重新登录
user.unknown.error=未知错误,请重新登录
##文件上传消息
upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB
upload.filename.exceed.length=上传的文件名最长{0}个字符
##权限
no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
apl.common.M00001={0}添加成功
apl.common.M00002={0}保存成功
apl.common.M00003={0}已经存在
apl.common.M00004={0}操作成功
apl.common.M00005={0}删除成功
apl.common.M00006=操作失败,该数据已被他人删除,请刷新后重试
apl.common.M00007=操作失败,该数据已被他人更改,请刷新后重试
apl.common.M00008=请勿重复提交
apl.common.M00009=查询成功
apl.common.M00010=操作失败,请联系管理员
apl.chargeRefund.M00001=该收费单相关{0}已经发出,请先退药后再进行退费
apl.payment.M00001=各缴费渠道实收金额合计不等于实收金额
apl.payment.M00002=实收金额合计不等于应收金额
apl.payment.M00003=请选择支付方式
apl.payment.M00004=查询成功
apl.payment.M00005=操作失败,请联系管理员
apl.payment.M00006=成功收费
apl.payment.M00007=未查询到收费项目
apl.payment.M00008=未查询到{0}账户信息
apl.payment.M00009=未查询到收费项目,不需要转换账户

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/openhis/logs"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 新增专用日志Appender -->
<appender name="YB_LOGS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/yb-service.log</file> <!-- 日志文件名 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天一个文件保留60天 -->
<fileNamePattern>${log.path}/yb-service.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 使用统一日志格式 -->
</encoder>
</appender>
<!-- 在原有logger配置下方添加 -->
<logger name="com.openhis.yb.service.YbManager" level="info" additivity="false">
<appender-ref ref="YB_LOGS" />
</logger>
<!-- 新增专用日志Appender -->
<appender name="PAYMENT_LOGS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/payment.log</file> <!-- 日志文件名 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天一个文件保留60天 -->
<fileNamePattern>${log.path}/payment.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 使用统一日志格式 -->
</encoder>
</appender>
<!-- 在原有logger配置下方添加 -->
<logger name="com.openhis.web.paymentmanage.appservice.impl.PaymentRecServiceImpl" level="info" additivity="false">
<appender-ref ref="PAYMENT_LOGS" />
</logger>
<!-- 新增专用日志Appender -->
<appender name="E_INVOICE_LOGS" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/E_invoice.log</file> <!-- 日志文件名 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天一个文件保留60天 -->
<fileNamePattern>${log.path}/E_invoice.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 使用统一日志格式 -->
</encoder>
</appender>
<!-- 在原有logger配置下方添加 -->
<logger name="com.openhis.web.paymentmanage.appservice.impl.EleInvoiceServiceImpl" level="info" additivity="false">
<appender-ref ref="E_INVOICE_LOGS" />
</logger>
<!-- 系统模块日志级别控制 -->
<logger name="com.core" level="info"/>
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn"/>
<root level="info">
<appender-ref ref="console"/>
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="YB_LOGS"/>
<appender-ref ref="PAYMENT_LOGS"/>
<appender-ref ref="file_info"/>
<appender-ref ref="file_error"/>
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
<logger name="YB_LOGS" level="info">
<appender-ref ref="YB_LOGS"/>
</logger>
<logger name="PAYMENT_LOGS" level="info">
<appender-ref ref="PAYMENT_LOGS"/>
</logger>
<logger name="E_INVOICE_LOGS" level="info">
<appender-ref ref="E_INVOICE_LOGS"/>
</logger>
</configuration>

View File

@@ -0,0 +1,488 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.InventoryDetailsMapper">
<select id="selectPurchaseInDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.manufacturer_text, --厂家
T7.lot_number, --产品批号
T7.sup_name, --供应商
T7.item_quantity, --采购数量
T7.price, --采购单价
T7.total_price, --合计金额
T7.unit_code, --计量单位
T7.org_name, --采购部门
T7.purpose_location_id, --仓库
T7.purpose_location_store_id, --货位
T7.approval_time, --审批日期
T7.expiration_time, --有效期
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已入库'
ELSE '未入库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T3.manufacturer_text, --厂家
T1.lot_number, --产品批号
T6.name AS sup_name, --供应商
T1.item_quantity * T3.part_percent AS item_quantity, --采购数量
T1.price, --采购单价
T1.total_price, --合计金额
T1.unit_code, --计量单位
T5.name AS org_name, --采购部门
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.approval_time, --审批日期
T4.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN adm_organization AS T5
ON T5.id = T4.org_id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
ORDER BY T1.bus_no desc) AS T7
UNION
SELECT T10.id, --id
T10.bus_no, --单据号
T10.status_enum, --单据类型
T10.item_table, --项目类型
T10.item_no, --项目编码
T10.item_name, --项目名称
T10.item_volume, --规格
T10.manufacturer_text, --厂家
T10.lot_number, --产品批号
T10.sup_name, --供应商
T10.item_quantity, --采购数量
T10.price, --采购单价
T10.total_price, --合计金额
T10.unit_code, --计量单位
T10.org_name, --采购部门
T10.purpose_location_id, --仓库
T10.purpose_location_store_id, --货位
T10.approval_time, --审批日期
T10.expiration_time, --有效期
T10.applicant_id, --制单人
T10.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已入库'
ELSE '未入库' END AS status_enum, --单据类型
T8.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T8.name AS item_name, --项目名称
T9.device_specifications AS item_volume, --规格
T8.manufacturer_text, --厂家
T1.lot_number, --产品批号
T6.name AS sup_name, --供应商
T1.item_quantity * T8.part_percent AS item_quantity, --采购数量
T1.price, --采购单价
T1.total_price, --合计金额
T1.unit_code, --计量单位
T5.name AS org_name, --采购部门
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.approval_time, --审批日期
T9.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T8
ON T8.id = T1.item_id
INNER JOIN adm_device AS T9
ON T9.device_def_id = T8.id
LEFT JOIN adm_organization AS T5
ON T5.id = T9.org_id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
ORDER BY T1.bus_no desc) AS T10
${ew.customSqlSegment}
</select>
<select id="selectTransferDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.lot_number, --产品批号
T7.manufacturer_text, --厂家
T7.item_quantity, --调拨数量
T7.unit_code, --计量单位
T7.price, --采购单价
T7.total_price, --合计金额
T7.source_type, --源仓库类型
T7.source_location, --源仓库
T7.source_location_store, --源货位
T7.purpose_type, --目的仓库类型
T7.purpose_location_id, --目的仓库
T7.purpose_location_store_id, --目的货位
T7.approval_time, --审批日期
T7.expiration_time, --有效期
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已调拨'
ELSE '未调拨' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.lot_number, --产品批号
T3.manufacturer_text, --厂家
T1.item_quantity, --采购数量(小)
T3.min_unit_code AS unit_code, --计量单位(小)
T1.price * T3.part_percent AS price, --采购单价(小)
T1.total_price, --合计金额
T1.source_type_enum AS source_type, --源仓库类型
T5.name AS source_location, --源仓库
T6.name AS source_location_store, --源货位
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T4.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN adm_location AS T5
ON T5.id = T1.source_location_id
LEFT JOIN adm_location AS T6
ON T6.id = T1.source_location_store_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productTransfer}
ORDER BY T1.bus_no desc) AS T7
UNION
SELECT T10.id, --id
T10.bus_no, --单据号
T10.status_enum, --单据类型
T10.item_table, --项目类型
T10.item_no, --项目编码
T10.item_name, --项目名称
T10.item_volume, --规格
T10.lot_number, --产品批号
T10.manufacturer_text, --厂家
T10.item_quantity, --调拨数量
T10.unit_code, --计量单位
T10.price, --采购单价
T10.total_price, --合计金额
T10.source_type, --源仓库类型
T10.source_location, --源仓库
T10.source_location_store, --源货位
T10.purpose_type, --目的仓库类型
T10.purpose_location_id, --目的仓库
T10.purpose_location_store_id, --目的货位
T10.approval_time, --审批日期
T10.expiration_time, --有效期
T10.applicant_id, --制单人
T10.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已调拨'
ELSE '未调拨' END AS status_enum, --单据类型
T8.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T8.name AS item_name, --项目名称
T9.device_specifications AS item_volume, --规格
T1.lot_number, --产品批号
T8.manufacturer_text, --厂家
T1.item_quantity, --采购数量(小)
T8.min_unit_code AS unit_code, --计量单位(小)
T1.price * T8.part_percent AS price, --采购单价(小)
T1.total_price, --合计金额
T1.source_type_enum AS source_type, --源仓库类型
T5.name AS source_location, --源仓库
T6.name AS source_location_store, --源货位
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T9.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T8
ON T8.id = T1.item_id
INNER JOIN adm_device AS T9
ON T9.device_def_id = T8.id
LEFT JOIN adm_location AS T5
ON T5.id = T1.source_location_id
LEFT JOIN adm_location AS T6
ON T6.id = T1.source_location_store_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productTransfer}
ORDER BY T1.bus_no desc) AS T10
${ew.customSqlSegment}
</select>
<select id="selectRequisitionOutDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.item_quantity, --领用数量
T7.unit_code, --计量单位
T7.lot_number, --产品批号
T7.supply_bus_no, --采购批次流水号
T7.purpose_location_id, --仓库
T7.purpose_location_store_id, --货位
T7.occurrence_time, --期望时间(制单时间)
T7.approval_time, --审批日期
T7.org_name, --领用部门
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{agree} THEN '已出库'
ELSE '未出库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.item_quantity AS item_quantity, --领用数量
T1.unit_code, --计量单位
T1.lot_number, --产品批号
T5.bus_no AS supply_bus_no, --采购批次流水号
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.occurrence_time, --期望时间(制单时间)
T1.approval_time, --审批日期
T6.name AS org_name, --领用部门
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN wor_supply_request AS T5
ON T5.item_id = T1.item_id
AND T5.lot_number = T1.lot_number
AND T5.purpose_location_id = T1.purpose_location_id
AND T5.purpose_location_store_id = T1.purpose_location_store_id
LEFT JOIN adm_organization AS T6
ON T6.id = T4.org_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{issueInventory}
UNION
SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{agree} THEN '已出库'
ELSE '未出库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.item_quantity AS item_quantity, --领用数量
T1.unit_code, --计量单位
T1.lot_number, --产品批号
T5.bus_no AS supply_bus_no, --采购批次流水号
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.occurrence_time, --期望时间(制单时间)
T1.approval_time, --审批日期
T6.name AS org_name, --领用部门
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T3
ON T3.id = T1.item_id
INNER JOIN adm_device AS T4
ON T4.device_def_id = T3.id
LEFT JOIN wor_supply_request AS T5
ON T5.item_id = T1.item_id
AND T5.lot_number = T1.lot_number
AND T5.purpose_location_id = T1.purpose_location_id
AND T5.purpose_location_store_id = T1.purpose_location_store_id
LEFT JOIN adm_organization AS T6
ON T6.id = T4.org_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{issueInventory}
ORDER BY T1.bus_no desc) AS T7
ORDER BY T7.bus_no DESC
${ew.customSqlSegment}
</select>
<select id="selectInventoryStockDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T6.id, --id
T6.bus_no, --单据号
T6.status_enum, --单据类型
T6.item_table, --项目类型
T6.item_no, --项目编码
T6.item_name, --项目名称
T6.item_volume, --规格
T6.manufacturer_text, --厂家
T6.lot_number, --产品批号
T6.unit_code, --计量单位
T6.before_stock_quantity, --盘前数量
T6.after_stock_quantity, --盘后数量
T6.loss_quantity, --盈亏数量
T6.reason, --盈亏原因
T6.purpose_type, --目的仓库类型
T6.purpose_location_id, --目的仓库
T6.purpose_location_store_id, --目的货位
T6.approval_time, --审批日期
T6.applicant_id, --制单人
T6.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE
WHEN T2.status_enum = #{agree} THEN '已盘点'
WHEN T1.status_enum = #{approval} THEN '审核中'
ELSE '待申请' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T3.manufacturer_text, --厂家
T1.lot_number, --产品批号
T3.min_unit_code AS unit_code, --计量单位(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity - T1.item_quantity
ELSE
T5.quantity
END AS before_stock_quantity, --盘前数量(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity
ELSE
T5.quantity + T1.item_quantity
END AS after_stock_quantity, --盘后数量(小)
T1.item_quantity AS loss_quantity, --盈亏数量(小)
T1.reason, --盈亏原因
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN wor_inventory_item AS T5
ON T5.item_id = T1.item_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productStocktaking}
ORDER BY T1.bus_no desc) AS T6
UNION
SELECT T9.id, --id
T9.bus_no, --单据号
T9.status_enum, --单据类型
T9.item_table, --项目类型
T9.item_no, --项目编码
T9.item_name, --项目名称
T9.item_volume, --规格
T9.manufacturer_text, --厂家
T9.lot_number, --产品批号
T9.unit_code, --计量单位
T9.before_stock_quantity, --盘前数量
T9.after_stock_quantity, --盘后数量
T9.loss_quantity, --盈亏数量
T9.reason, --盈亏原因
T9.purpose_type, --目的仓库类型
T9.purpose_location_id, --目的仓库
T9.purpose_location_store_id, --目的货位
T9.approval_time, --审批日期
T9.applicant_id, --制单人
T9.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE
WHEN T2.status_enum = #{agree} THEN '已盘点'
WHEN T1.status_enum = #{approval} THEN '审核中'
ELSE '待申请' END AS status_enum, --单据类型
T7.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T7.name AS item_name, --项目名称
T8.device_specifications AS item_volume, --规格
T7.manufacturer_text, --厂家
T1.lot_number, --产品批号
T7.min_unit_code AS unit_code, --计量单位(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity - T1.item_quantity
ELSE
T5.quantity
END AS before_stock_quantity, --盘前数量(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity
ELSE
T5.quantity + T1.item_quantity
END AS after_stock_quantity, --盘后数量(小)
T1.item_quantity AS loss_quantity, --盈亏数量(小)
T1.reason, --盈亏原因
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T7
ON T7.id = T1.item_id
INNER JOIN adm_device AS T8
ON T8.device_def_id = T7.id
LEFT JOIN wor_inventory_item AS T5
ON T5.item_id = T1.item_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productStocktaking}
ORDER BY T1.bus_no desc) AS T9
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.LossReportFormMapper">
<select id="selectLossReportFormPage"
resultType="com.openhis.web.inventorymanage.dto.LossReportFormPageDto">
SELECT T4.supply_bus_no, -- 单据号
T4.type, -- 单据类型
T4.status_enum, -- 单据状态
T4.inventory_location_name, -- 盘点仓库
T4.reported_loss_amount, -- 报损金额(总价)
T4.applicant_id, -- 制单人(申请人)
T4.approver_id, -- 审核人
T4.approval_time, -- 审核日期
T4.create_time, -- 制单时间
T4.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.type_enum AS type,
T1.status_enum,
T4.name AS inventory_location_name,
T2.reported_loss_amount,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time,
T1.approval_time,
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN (SELECT T3.bus_no,
SUM(T3.total_price) AS reported_loss_amount
FROM wor_supply_request AS T3
GROUP BY T3.bus_no) AS T2
ON T1.bus_no = T2.bus_no
LEFT JOIN adm_location T4
ON T1.purpose_location_id = T4.id
WHERE T1.type_enum = #{lossReportForm}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.type_enum,
T1.status_enum,
T4.name,
T2.reported_loss_amount,
T1.applicant_id,
T1.approver_id,
T1.approval_time,
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{device} AS item_type, --器材类型
T1.remake, --备注
T7.bus_no AS item_bus_no, --项目编码
T7."name" AS item_name, --名称
T7."size" AS total_volume, --器材规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T7.unit_code, -- 包装单位
T7.min_unit_code, -- 最小单位
T7.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T7.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T7
ON T1.item_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum = #{typeEnum}
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{device} AS item_type, --器材类型
T1.remake, --备注
T7.bus_no AS item_bus_no, --项目编码
T7."name" AS item_name, --名称
T7."size" AS total_volume, --器材规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T7.unit_code, -- 包装单位
T7.min_unit_code, -- 最小单位
T7.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T7.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T7
ON T1.item_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum = #{typeEnum}
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,523 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.ProductDetailsMapper">
<select id="selectProductDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsPageDto">
WITH latest_records AS (
SELECT
item_table,
item_id,
location_id,
lot_number,
trace_no,
MAX(create_time) AS latest_time
FROM
adm_trace_no_manage
WHERE delete_flag = '0'
GROUP BY
item_table,
item_id,
location_id,
lot_number,
trace_no
)
SELECT T6.id, --库存项目管理ID停供用
T6.bus_no, --药品编码
T6.medicine_name, --药品名称
T6.py_str, --药品拼音
T6.total_volume, --规格
T6.chrgitm_lv, --医保等级
T6.manufacturer_text, --厂家
T6.lot_number, --批次号
T6.category_code, --药品类型
T6.item_type, --药品类型区分
T6.part_percent, --拆零比
T6.unit_code, --采购单位
T6.quantity, --库存(小单位)
T6.min_unit_code, --库存单位
T6.price, --采购单价
T6.production_date, --生产日期
T6.expiration_date, --失效日期
T6.remaining_days, --剩余天数
T6.trace_no, --追溯码
T6.status_enum, --药品状态(药品停用)
T6.location_id,
T6.location_name, --仓库
T6.location_store_id,
T6.location_store_name, --货位
T6.form_enum, --仓库类型
T6.supplier_id, --供应商
T6.supply_name, --供应商名称
T6.inventory_status_enum, --停供状态
T6.dose_form_code, --剂型
T6.approval_number, --批准文号/国药准字
T6.retail_price, --零售价
T6.tenant_id,
T6.in_count,
T6.out_count,
T6.item_table,
T6.item_id
FROM (
SELECT T1.id, --库存项目管理ID停供用
T2.bus_no, --药品编码
T2."name" AS medicine_name, --药品名称
T2.py_str, --药品拼音
T3.total_volume, --规格
T2.chrgitm_lv, --医保等级
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T2.category_code, --药品类型
'0' AS item_type, --药品类型区分
T2.part_percent, --拆零比
T2.unit_code, --采购单位
T1.quantity, --库存(小单位)
T2.min_unit_code, --库存单位
T1.price, --采购单价
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) AS remaining_days, --剩余天数
T1.trace_no, --追溯码
T3.status_enum, --药品状态(药品停用)
T1.location_id,
T5."name" AS location_name, --仓库
T1.location_store_id,
T4."name" AS location_store_name, --货位
T5.form_enum, --仓库类型
T1.supplier_id, --供应商
T8.name AS supply_name, --供应商名称
T1.inventory_status_enum, --停供状态
T3.dose_form_code, --剂型
T2.approval_number, --批准文号/国药准字
T10.amount AS retail_price, --零售价
T1.tenant_id, --修复:添加逗号
COALESCE(in_counts.in_count, 0) AS in_count,
COALESCE(out_counts.out_count, 0) AS out_count,
T1.item_table,
T1.item_id
FROM wor_inventory_item T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.location_store_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T8
ON T1.supplier_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T9
ON T9.instance_table = 'med_medication_definition'
AND T9.instance_id = T2.id
AND T9.delete_flag = '0'
LEFT JOIN LATERAL (
SELECT amount
FROM adm_charge_item_def_detail
WHERE definition_id = T9.id
AND condition_value = T1.lot_number
AND condition_code = '1'--1:批号进价
AND delete_flag = '0'
ORDER BY create_time DESC
LIMIT 1
) T10 ON TRUE
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '1' THEN 1 ELSE 0 END) AS in_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) in_counts
ON T1.item_table = in_counts.item_table
AND T1.item_id = in_counts.item_id
AND T1.location_id = in_counts.location_id
AND T1.lot_number = in_counts.lot_number
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '2' THEN 1 ELSE 0 END) AS out_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) out_counts
ON T1.item_table = out_counts.item_table
AND T1.item_id = out_counts.item_id
AND T1.location_id = out_counts.location_id
AND T1.lot_number = out_counts.lot_number
WHERE T1.delete_flag = '0'
) AS T6
${ew.customSqlSegment}
UNION ALL
SELECT T7.id, --库存项目管理ID停供用
T7.bus_no, --药品编码
T7.medicine_name, --药品名称
T7.py_str, --药品拼音
T7.total_volume, --规格
T7.chrgitm_lv, --医保等级
T7.manufacturer_text, --厂家
T7.lot_number, --批次号
T7.category_code, --药品类型
T7.item_type, --药品类型区分
T7.part_percent, --拆零比
T7.unit_code, --采购单位
T7.quantity, --库存(小单位)
T7.min_unit_code, --库存单位
T7.price, --采购单价
T7.production_date, --生产日期
T7.expiration_date, --失效日期
T7.remaining_days, --剩余天数
T7.trace_no, --追溯码
T7.status_enum, --药品状态(药品停用)
T7.location_id,
T7.location_name, --仓库
T7.location_store_id,
T7.location_store_name, --货位
T7.form_enum, --仓库类型
T7.supplier_id, --供应商
T7.supply_name, --供应商名称
T7.inventory_status_enum, --停供状态
T7.dose_form_code, --剂型
T7.approval_number, --批准文号/国药准字
T7.retail_price, --零售价
T7.tenant_id,
T7.in_count,
T7.out_count,
T7.item_table,
T7.item_id
FROM (
SELECT T1.id, --库存项目管理ID停供用
T2.bus_no, --药品编码
T2."name" AS medicine_name, --药品名称
T2.py_str, --药品拼音
T2.size AS total_volume, --规格
T2.chrgitm_lv, --医保等级
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T2.category_code, --药品类型
'9' AS item_type, --药品类型区分
T2.part_percent, --拆零比
T2.unit_code, --采购单位
T1.quantity, --库存(小单位)
T2.min_unit_code, --库存单位
T1.price, --采购单价
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) AS remaining_days, --剩余天数
T1.trace_no, --追溯码
T2.status_enum, --药品状态(药品停用)
T1.location_id,
T5."name" AS location_name, --仓库
T1.location_store_id,
T4."name" AS location_store_name, --货位
T5.form_enum, --仓库类型
T1.supplier_id, --供应商
T8.name AS supply_name, --供应商名称
T1.inventory_status_enum, --停供状态
'0' AS dose_form_code, --剂型
T2.approval_number, --批准文号/国药准字
T10.amount AS retail_price, --零售价
T1.tenant_id, --修复:添加逗号
COALESCE(in_counts.in_count, 0) AS in_count,
COALESCE(out_counts.out_count, 0) AS out_count,
T1.item_table,
T1.item_id
FROM wor_inventory_item T1
INNER JOIN adm_device_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.location_store_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T8
ON T1.supplier_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T9
ON T9.instance_table = 'adm_device_definition'
AND T9.instance_id = T2.id
AND T9.delete_flag = '0'
LEFT JOIN LATERAL (
SELECT amount
FROM adm_charge_item_def_detail
WHERE definition_id = T9.id
AND condition_value = T1.lot_number
AND condition_code = '1'--1:批号进价
AND delete_flag = '0'
ORDER BY create_time DESC
LIMIT 1
) T10 ON TRUE
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '1' THEN 1 ELSE 0 END) AS in_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) in_counts
ON T1.item_table = in_counts.item_table
AND T1.item_id = in_counts.item_id
AND T1.location_id = in_counts.location_id
AND T1.lot_number = in_counts.lot_number
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '2' THEN 1 ELSE 0 END) AS out_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) out_counts
ON T1.item_table = out_counts.item_table
AND T1.item_id = out_counts.item_id
AND T1.location_id = out_counts.location_id
AND T1.lot_number = out_counts.lot_number
WHERE T1.delete_flag = '0'
) AS T7
${ew.customSqlSegment}
</select>
<select id="selectProductDetailsPageTotal"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsTotalDto">
SELECT
ROUND( SUM ( sale_price ), 2 ) AS total_sale_price,--总零售价
ROUND( SUM ( purchase_price ), 2 ) AS total_purchase_price --总进价
FROM
(
<if test="itemType == 99 or itemType == 9">
SELECT
ROUND(SUM (ROUND( T4.amount, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS sale_price,
ROUND(SUM (ROUND( T1.price, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS purchase_price
FROM
wor_inventory_item T1
INNER JOIN adm_device_definition T2 ON T1.item_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3 ON T3.instance_table = 'adm_device_definition'
AND T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN LATERAL ( SELECT amount FROM adm_charge_item_def_detail WHERE definition_id = T3.ID AND condition_value = T1.lot_number AND condition_code = '1' AND delete_flag = '0' ORDER BY create_time DESC LIMIT 1 ) T4 ON TRUE
LEFT JOIN adm_supplier T5 ON T1.supplier_id = T5.ID
AND T5.delete_flag = '0'
<if test="sqlWhere != '' and sqlWhere != null">
<where>
${sqlWhere}
</where>
</if>
</if>
<if test="itemType == 99 ">
UNION ALL
</if>
<if test="itemType == 99 or itemType == 0">
SELECT
ROUND(SUM (ROUND( T4.amount, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS sale_price,
ROUND(SUM (ROUND( T1.price, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS purchase_price
FROM
wor_inventory_item T1
INNER JOIN med_medication_definition T2 ON T1.item_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3 ON T3.instance_table = 'med_medication_definition'
AND T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN LATERAL ( SELECT amount FROM adm_charge_item_def_detail WHERE definition_id = T3.ID AND condition_value = T1.lot_number AND condition_code = '1' AND delete_flag = '0' ORDER BY create_time DESC LIMIT 1 ) T4 ON TRUE
LEFT JOIN adm_supplier T5 ON T1.supplier_id = T5.ID
AND T5.delete_flag = '0'
<if test="sqlWhere != '' and sqlWhere != null">
<where>
${sqlWhere}
</where>
</if>
</if>
)
</select>
<select id="selectExpirationWarning"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsPageDto">
select T6.category_code, --药品类型
T6.item_type, --药品类型区分
T6.bus_no, --药品编码
T6.medicine_name, --药品名称
T6.py_str, --药品拼音
T6.total_volume, --规格
T6.manufacturer_text, --厂家
T6.lot_number, --批次号
T6.production_date, --生产日期
T6.expiration_date, --失效日期
T6.remaining_days, --剩余天数
T6.remaining_month, --剩余月数
T6.quantity, --库存(小单位)
T6.specification_quantity,--规格库存(小单位)
T6.item_min_quantity, --最小库存警戒数量
T6.item_max_quantity, --最大库存警戒数量
T6.min_unit_code, --库存单位
T6.status_enum, --药品状态(药品停用)
T6.inventory_status_enum, --停供状态
T6.tenant_id
from (select T2.category_code, --药品类型
'0' as item_type, --药品类型区分
T2.bus_no, --药品编码
T2."name" as medicine_name, --药品名称
T2.py_str, --药品拼音
T3.total_volume, --规格
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) as remaining_days, --剩余天数
((EXTRACT(YEAR FROM T1.expiration_date) - EXTRACT(YEAR FROM CURRENT_DATE)) * 12
+ (EXTRACT(MONTH FROM T1.expiration_date) -
EXTRACT(MONTH FROM CURRENT_DATE))) as remaining_month, --剩余月数
T1.quantity, --库存(小单位)
COALESCE(CAST(T8.specification_quantity AS DECIMAL(18, 6)), 0.00) AS specification_quantity,--规格库存(小单位)
T2.item_min_quantity * T2.part_percent AS item_min_quantity, --最小库存警戒数量
T2.item_max_quantity * T2.part_percent AS item_max_quantity, --最大库存警戒数量
T2.min_unit_code, --库存单位
T3.status_enum, --药品状态(药品停用)
T1.inventory_status_enum, --停供状态
T1.tenant_id
from wor_inventory_item T1
inner join med_medication_definition T2
on T1.item_id = T2.id
and T2.delete_flag = '0'
left join med_medication T3
on T2.id = T3.medication_def_id
and T3.delete_flag = '0'
left join adm_location T4
on T1.location_store_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.location_id = T5.id
and T5.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_quantity
FROM wor_inventory_item i1
LEFT JOIN med_medication_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'med_medication_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id) T8
ON T8.item_table = 'med_medication_definition'
AND T8.item_id = T2.ID
where T1.delete_flag = '0'
<if test="flg != null">
and (T8.specification_quantity <![CDATA[ <= ]]> T2.item_min_quantity * T2.part_percent
or T8.specification_quantity <![CDATA[ >= ]]> T2.item_max_quantity * T2.part_percent)
</if>
order by T2.bus_no ASC, --药品编码
T2."name" ASC --药品名称
) as T6
${ew.customSqlSegment}
union all
select T7.category_code, --药品类型
T7.item_type, --药品类型区分
T7.bus_no, --药品编码
T7.medicine_name, --药品名称
T7.py_str, --药品拼音
T7.total_volume, --规格
T7.manufacturer_text, --厂家
T7.lot_number, --批次号
T7.production_date, --生产日期
T7.expiration_date, --失效日期
T7.remaining_days, --剩余天数
T7.remaining_month, --剩余月数
T7.quantity, --库存(小单位)
T7.specification_quantity,--规格库存(小单位)
T7.item_min_quantity, --最小库存警戒数量
T7.item_max_quantity, --最大库存警戒数量
T7.min_unit_code, --库存单位
T7.status_enum, --药品状态(药品停用)
T7.inventory_status_enum, --停供状态
T7.tenant_id
from (select T2.category_code, --药品类型
'9' as item_type, --药品类型区分
T2.bus_no, --药品编码
T2."name" as medicine_name, --药品名称
T2.py_str, --药品拼音
T2.size as total_volume, --规格
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) as remaining_days, --剩余天数
((EXTRACT(YEAR FROM T1.expiration_date) - EXTRACT(YEAR FROM CURRENT_DATE)) * 12
+ (EXTRACT(MONTH FROM T1.expiration_date) -
EXTRACT(MONTH FROM CURRENT_DATE))) as remaining_month, --剩余月数
T1.quantity, --库存(小单位)
COALESCE(CAST(T8.specification_quantity AS DECIMAL(18, 6)), 0.00) AS specification_quantity,--规格库存(小单位)
T2.item_min_quantity * T2.part_percent AS item_min_quantity, --最小库存警戒数量
T2.item_max_quantity * T2.part_percent AS item_max_quantity, --最大库存警戒数量
T2.min_unit_code, --库存单位
T2.status_enum, --药品状态(药品停用)
T1.inventory_status_enum, --停供状态
T1.tenant_id
from wor_inventory_item T1
inner join adm_device_definition T2
on T1.item_id = T2.id
and T2.delete_flag = '0'
left join adm_location T4
on T1.location_store_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.location_id = T5.id
and T5.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_quantity
FROM wor_inventory_item i1
LEFT JOIN adm_device_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'adm_device_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id) T8
ON T8.item_table = 'adm_device_definition'
AND T8.item_id = T2.ID
where T1.delete_flag = '0'
<if test="flg != null">
and (T8.specification_quantity <![CDATA[ <= ]]> T2.item_min_quantity * T2.part_percent
or T8.specification_quantity <![CDATA[ >= ]]> T2.item_max_quantity * T2.part_percent)
</if>
order by T2.bus_no ASC, --药品编码
T2."name" ASC --药品名称
) as T7
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,522 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.ProductStocktakingMapper">
<select id="selectStocktakingReceiptPage"
resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.purpose_type_enum, --目的类型
T4.purpose_location_id, --目的仓库
T4.purpose_location_store_id, --目的仓位
T4.breakeven_price, --盈亏金额
T4.applicant_id, --申请人
T4.approver_id, --审批人
T4.create_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T2.breakeven_price,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN (SELECT T3.bus_no,
SUM(T3.total_price) AS breakeven_price
FROM wor_supply_request AS T3
WHERE T3.delete_flag = '0'
GROUP BY T3.bus_no) AS T2
ON T1.bus_no = T2.bus_no
WHERE T1.type_enum IN (#{productStocktaking}, #{BatchStocktaking})
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.item_table,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T2.breakeven_price,
T1.applicant_id,
T1.approver_id,
T1.approval_time
ORDER BY T1.bus_no desc
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T1.trace_no, --追溯码
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, --目的仓位
T1.occurrence_time, --期望时间(盘点日期)
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, --包装单位(大单位)
T2.min_unit_code, --最小单位(小单位)
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T1.total_quantity, --实盘数量(常规单位)(小单位)
T11.amount AS price, --采购单价(大单位)
T1.item_quantity, --数量(盈亏数量)(小单位)
T1.total_price, --总价(盈亏金额)
T1.reason_code, --理由类型(盈亏原因)
T1.reason, --理由(盈亏详细)
T2.yb_no, --医保编码
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.id,
T1.bus_no,
T1.trace_no,
T1.item_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T7."name" AS purpose_location_name,
T1.purpose_location_store_id,
T1.occurrence_time,
#{device} AS item_type,
T1.remake,
T5.bus_no AS item_bus_no,
T5."name" AS item_name,
T5."size" AS total_volume,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T5.unit_code,
T5.min_unit_code AS min_unit_code,
T5.manufacturer_text,
T4.lot_number,
T1.total_quantity,
T11.amount AS price, --采购单价(大单位)
T1.item_quantity,
T1.total_price,
T1.reason_code,
T1.reason,
T5.yb_no,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T5.part_percent
FROM wor_supply_request AS T1
LEFT JOIN adm_device_definition AS T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
AND T1.item_table = #{deviceTableName}
</select>
<select id="selectStocktakingReceiptDetail"
resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T6.tenant_id,
T6.id AS item_Id, --Id
T6.bus_no AS item_bus_no, --编码
T6.item_type, --药品类型
T6.medication_type, -- 药品类型
T6.item_name, --名称
T6.total_volume, --规格
T6.lot_number, --产品批号
T6.yb_no, --医保编码
T6.measurement_unit_code, -- 计量单位
T6.unit_code, --药品单位(包装单位)(大单位)
T6.min_unit_code, --最小单位(小单位)
T6.part_percent, --拆零比
T6.stocktaking_unit_code, --常规单位(小单位)
T6.quantity AS total_quantity, --当前库存数量(常规单位)(小单位)
T6.price, --采购单价(大单位)
T6.manufacturer_text, --生产厂商文本
T6.location_id AS purpose_location_id, --仓库
T6.location_store_id AS purpose_location_store_id, --库位
T6.supplier_id, -- 供应商id
T6.supplier_name, -- 供应商名称
T6.start_time, -- 生产日期
T6.end_time, -- 有效期
T6.form_enum AS purpose_type_enum --仓库类型
FROM (SELECT T1.tenant_id,
T2.id,
T2.bus_no,
#{medicine} AS medication_type,
#{medicine} AS item_type,
T2."name" AS item_name,
T3.total_volume,
T1.lot_number,
T2.yb_no,
T1.unit_code AS measurement_unit_code,
T2.unit_code,
T2.min_unit_code,
T2.part_percent,
T1.unit_code AS stocktaking_unit_code,
T1.quantity,
T11.amount AS price,
T2.manufacturer_text,
T1.location_id,
T1.location_store_id,
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T5.form_enum
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T4.tenant_id,
T4.id,
T4.bus_no,
#{device} AS item_type,
#{device} AS medication_type,
T4."name" AS item_name,
T4."size" AS total_volume,
T1.lot_number,
T4.yb_no,
T1.unit_code AS measurement_unit_code,
T4.unit_code,
T4.min_unit_code,
T4.part_percent,
T1.unit_code AS stocktaking_unit_code,
T1.quantity,
T11.amount AS price,
T4.manufacturer_text,
T1.location_id,
T1.location_store_id,
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T5.form_enum
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{deviceTableName}
) AS T6
${ew.customSqlSegment}
</select>
<select id="selectAutoStocktakingBatch"
resultType="com.openhis.web.inventorymanage.dto.ProductStocktakingDto">
SELECT T1.id,
T1.item_table, --项目
T2.id AS item_id, --项目id
T1.unit_code AS unit_code,--物品计量单位
0 AS item_quantity,--盈亏数量
T1.quantity AS total_quantity,--合计数量
T11.amount / T2.part_percent AS price,--单价
0 AS total_price, -- 盈亏金额
T5.form_enum AS purpose_type_enum,--目的仓库类型
T1.location_id AS purpose_location_id,--目的仓库
T1.location_store_id AS purpose_location_store_id,--目的仓位
T1.supplier_id,--供应商
T1.production_date AS start_time,--开始时间
T1.expiration_date AS end_time,--结束时间
T1.lot_number--产品批号
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.id,
T1.item_table, --项目
T4.id AS item_id, --项目id
T1.unit_code AS unit_code,--物品计量单位
0 AS item_quantity,--盈亏数量
T1.quantity AS total_quantity,--合计数量
T11.amount / T4.part_percent AS price,--单价
0 AS total_price, -- 盈亏金额
T5.form_enum AS purpose_type_enum,--目的仓库类型
T1.location_id AS purpose_location_id,--目的仓库
T1.location_store_id AS purpose_location_store_id,--目的仓位
T1.supplier_id,--供应商
T1.production_date AS start_time,--开始时间
T1.expiration_date AS end_time,--结束时间
T1.lot_number--产品批号
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.item_table = #{deviceTableName}
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T1.trace_no, --追溯码
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, --目的仓位
T1.occurrence_time, --期望时间(盘点日期)
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, --包装单位(大单位)
T2.min_unit_code, --最小单位(小单位)
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T1.total_quantity, --实盘数量(常规单位)(小单位)
T11.amount AS price, --采购单价(大单位)
T1.item_quantity, --数量(盈亏数量)(小单位)
T1.total_price, --总价(盈亏金额)
T1.reason_code, --理由类型(盈亏原因)
T1.reason, --理由(盈亏详细)
T2.yb_no, --医保编码
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM
<if test="endTime == null">
wor_aut_supply_request AS T1
</if>
<if test="endTime != null">
wor_supply_request AS T1
</if>
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.trace_no,
T1.item_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T7."name" AS purpose_location_name,
T1.purpose_location_store_id,
T1.occurrence_time,
#{device} AS item_type,
T1.remake,
T5.bus_no AS item_bus_no,
T5."name" AS item_name,
T5."size" AS total_volume,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T5.unit_code,
T5.min_unit_code AS min_unit_code,
T5.manufacturer_text,
T4.lot_number,
T1.total_quantity,
T11.amount AS price, --采购单价(大单位)
T1.item_quantity,
T1.total_price,
T1.reason_code,
T1.reason,
T5.yb_no,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T5.part_percent
FROM
<if test="endTime == null">
wor_aut_supply_request AS T1
</if>
<if test="endTime != null">
wor_supply_request AS T1
</if>
LEFT JOIN adm_device_definition AS T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,484 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.ProductTransferMapper">
<select id="selectProductTransferPage"
resultType="com.openhis.web.inventorymanage.dto.ProductTransferPageDto">
SELECT T2.supply_bus_no, -- 商品调拨单据号
T2.item_table, -- 项目(药品类型)
T2.status_enum, -- 单据状态
T2.type_enum, -- 单据类型
T2.source_location_id,
T2.source_location_name, -- 源仓库名称
T2.purpose_location_id,
T2.purpose_location_name, -- 目的仓库名称
T2.approver_id, -- 审批人ID
T2.approval_time, -- 审批时间
T2.applicant_id, -- 申请人ID
T2.create_time, -- 制单时间
T2.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.item_table,
T1.source_location_id,
T2."name" AS source_location_name, -- 源仓库
T1.purpose_location_id,
T3."name" AS purpose_location_name, -- 目的仓库
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
LEFT JOIN adm_location T2
ON T1.source_location_id = T2.id
LEFT JOIN adm_location T3
ON T1.purpose_location_id = T3.id
WHERE T1.type_enum IN (#{productTransfer}, #{productBatchTransfer})
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.item_table,
T1.source_location_id,
T2."name",
T1.purpose_location_id,
T3."name",
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="selectBatchTransferDetail" resultType="com.openhis.web.inventorymanage.dto.ProductTransferDetailDto">
SELECT A.tenant_id,
A.medication_type, -- 药品类型
A.item_type, -- 药品类型
A.name, -- 项目
A.total_volume, -- 规格
A.manufacturer, -- 生产厂家
A.measurement_unit_code, -- 计量单位
A.unit_code, -- 包装单位
A.min_unit_code, -- 最小单位
A.total_source_quantity, -- 源仓库库存数量
A.total_purpose_quantity, -- 目的仓库库存数量
A.item_quantity, -- 调拨数量
A.price, -- 调拨单价
A.lot_number, -- 产品批号
A.start_time, -- 生产日期
A.end_time, -- 有效期
A.trace_no, -- 药品追溯码
A.part_percent, -- 拆零比
A.item_id, -- 项目id
A.supplier_id, -- 供应商id
A.supplier_name, -- 供应商名称
A.packaging_levels -- 追溯码包装层级
FROM (SELECT T1.tenant_id,
#{medicine} AS medication_type,
#{medicine} AS item_type,
T1.name,
T3.total_volume,
T2.manufacturer_text AS manufacturer,
T1.unit_code AS measurement_unit_code,
T2.unit_code,
T2.min_unit_code,
T1.quantity AS total_source_quantity,
(SELECT T7.quantity
FROM wor_inventory_item T7
WHERE T7.item_id = T1.item_id
AND T7.lot_number = T1.lot_number
AND T7.location_id = #{purposeLocationId}
AND T7.inventory_status_enum = #{inventoryStatusEnum}
AND T7.delete_flag = '0'
) AS total_purpose_quantity,
T1.quantity AS item_quantity,
T8.amount AS price,
T1.lot_number,
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T1.trace_no,
T2.part_percent,
T1.item_id,
T1.supplier_id, -- 供应商id
T4."name" AS supplier_name, -- 供应商名称
T1.packaging_levels
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T7
ON T7.instance_id = T1.item_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T8
ON T8.definition_id = T7.id
AND T8.delete_flag = '0'
AND T8.condition_value = T1.lot_number
AND T8.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{medicationTableName}
UNION ALL
SELECT T1.tenant_id,
#{device} AS medication_type,
#{device} AS item_type,
T1.name,
T5.size AS total_volume,
T5.manufacturer_text AS manufacturer,
T1.unit_code AS measurement_unit_code,
T5.unit_code,
T5.min_unit_code,
T1.quantity AS total_source_quantity,
(SELECT T8.quantity
FROM wor_inventory_item T8
WHERE T8.item_id = T1.item_id
AND T8.lot_number = T1.lot_number
AND T8.location_id = #{purposeLocationId}
AND T8.inventory_status_enum = #{inventoryStatusEnum}
AND T8.delete_flag = '0'
) AS total_purpose_quantity,
T1.quantity AS item_quantity,
T8.amount AS price,
T1.lot_number,
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T1.trace_no,
T5.part_percent,
T1.item_id,
T1.supplier_id, -- 供应商id
T4."name" AS supplier_name, -- 供应商名称
T1.packaging_levels
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T7
ON T7.instance_id = T1.item_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T8
ON T8.definition_id = T7.id
AND T8.delete_flag = '0'
AND T8.condition_value = T1.lot_number
AND T8.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{deviceTableName}
) AS A
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ProductTransferDetailDto">
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.apply_time, -- 申请时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{medicine} AS item_type, -- 项目类型
T2.name, -- 药品名称
T3.total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.apply_time, -- 申请时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_name_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{device} AS item_type, -- 项目类型
T2.name, -- 药品名称
T2."size" AS total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 总库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 总库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.occurrence_time, -- 制单时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{medicine} AS item_type, -- 项目类型
T2.name, -- 药品名称
T3.total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE <if test="inOutFlg == 1">
T1.purpose_location_id = #{locationId}
</if>
<if test="inOutFlg == 2">
T1.source_location_id = #{locationId}
</if>
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.occurrence_time, -- 制单时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_name_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{device} AS item_type, -- 项目类型
T2.name, -- 药品名称
T2."size" AS total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 总库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 总库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE <if test="inOutFlg == 1">
T1.purpose_location_id = #{locationId}
</if>
<if test="inOutFlg == 2">
T1.source_location_id = #{locationId}
</if>
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,254 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.PurchaseInventoryMapper">
<select id="selectInventoryReceiptPage"
resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T2.supply_bus_no,
T2.status_enum,
T2.type_enum,
T2.supplier_id,
T2.approver_id,
T2.approval_time,
T2.applicant_id,
T2.create_time,
T2.practitioner_id,
T2.item_table,
T2.purpose_type_enum,
CASE
WHEN EXISTS (
SELECT 1
FROM wor_supply_request AS T3
WHERE T3.original_bus_no = T2.supply_bus_no
AND T3.delete_flag = '0'
) THEN 1
ELSE 0
END AS return_status, --退库状态
T2.tenant_id
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.item_table,
T1.purpose_type_enum,
T1.tenant_id
FROM wor_supply_request AS T1
WHERE type_enum = #{purchaseInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.item_table,
T1.purpose_type_enum,
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T2."name" AS item_name,
T2.id AS item_id,
T2.part_percent,
T2.manufacturer_text AS supplier_name,
T3.total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T8."name" AS item_name,
T8.id AS item_id,
T8.part_percent,
T8.manufacturer_text AS supplier_name,
T8."size" AS total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN adm_device_definition T8
ON T1.item_id = T8.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.occurrence_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T2."name" AS item_name,
T2.id AS item_id,
T2.part_percent,
T2.manufacturer_text AS supplier_name,
T3.total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.occurrence_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T8."name" AS item_name,
T8.id AS item_id,
T8.part_percent,
T8.manufacturer_text AS supplier_name,
T8."size" AS total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN adm_device_definition T8
ON T1.item_id = T8.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,479 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.PurchaseReturnMapper">
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnDetailDto">
SELECT T1.bus_no,
T1.original_bus_no,
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.item_quantity
ELSE 0
END AS item_quantity, --退库数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
ELSE (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
END AS returned_quantity, --已退数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.id
ELSE NULL
END AS id, --采购退货id
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN NULL
ELSE T1.id
END AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T3.quantity
END AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T1.unit_code
END AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T8.total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{medicine} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.practitioner_id
ELSE NULL
END AS practitioner_id, --经手人
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T1.item_id = T2.item_id
AND T1.purpose_location_id = T2.location_id
AND T1.lot_number = T2.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN med_medication_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication T8
ON T8.medication_def_id = T4.id
AND T8.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.bus_no,
T1.original_bus_no,
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.item_quantity
ELSE NULL
END AS item_quantity, --退库数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
ELSE (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
END AS returned_quantity, --已退数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.id
ELSE NULL
END AS id, --采购退货id
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN NULL
ELSE T1.id
END AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T3.quantity
END AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T1.unit_code
END AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T4."size" AS total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{device} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.practitioner_id
ELSE NULL
END AS practitioner_id, --经手人
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T2.item_id = T1.item_id
AND T2.location_id = T1.purpose_location_id
AND T2.lot_number = T1.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="selectGeneratedDetail"
resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnPageDto">
SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.practitioner_id,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time, -- 制单时间
T1.approval_time
FROM wor_supply_request AS T1
WHERE T1.original_bus_no = #{busNo}
AND T1.type_enum = #{purchaseReturn}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.practitioner_id,
T1.applicant_id,
T1.approver_id,
T1.approval_time
ORDER BY T1.bus_no DESC
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnDetailDto">
SELECT T1.bus_no,
T1.original_bus_no,
T1.item_quantity AS item_quantity, --退库数量
( SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{statusEnum}
)
AS returned_quantity, --已退数量
T1.id , --采购退货id
NULL AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
( SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
( SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T8.total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{medicine} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
T1.practitioner_id , --经手人
T1.occurrence_time,--制单日期
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T1.item_id = T2.item_id
AND T1.purpose_location_id = T2.location_id
AND T1.lot_number = T2.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN med_medication_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication T8
ON T8.medication_def_id = T4.id
AND T8.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.bus_no,
T1.original_bus_no,
T1.item_quantity AS item_quantity, --退库数量
( SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{statusEnum}
) AS returned_quantity, --已退数量
T1.id , --采购退货id
NULL AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
( SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
( SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T4."size" AS total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{device} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
T1.practitioner_id, --经手人
T1.occurrence_time,--制单日期
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T2.item_id = T1.item_id
AND T2.location_id = T1.purpose_location_id
AND T2.lot_number = T1.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.ReceiptApprovalMapper">
<select id="selectSupplyDetail" resultType="com.openhis.web.inventorymanage.dto.SupplyItemDetailDto">
SELECT T1.id AS supply_id,
T1.item_table,
T1.item_id,
T1.item_quantity,
T1.total_quantity,
T1.unit_code AS item_unit,
T1.price,
T1.total_price,
T1.approver_id,
T1.source_type_enum,
T1.source_location_id,
T1.source_location_store_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T1.supplier_id,
T1.lot_number,
T1.trace_no,
T1.trace_no_unit_code,
T1.invoice_no,
T1.bus_no,
T1.start_time,
T1.end_time,
T1.id AS service_id,
T2."name",
T2.bus_no AS item_bus_no,
T2.py_str,
T2.wb_str,
T2.unit_code,
T2.min_unit_code,
T2.part_percent,
T2.category_code AS item_category,
T2.yb_no,
T2.rx_flag,
T2.approval_number,
T2.manufacturer_text,
T6."name" AS supplier_name,
T7."name" AS practitioner_name
FROM wor_supply_request AS T1
LEFT JOIN wor_supply_delivery AS T5
ON T1.id = T5.request_id
AND T5.delete_flag = '0'
INNER JOIN med_medication_definition AS T2
ON T2.id = T1.item_id
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T6
ON T1.supplier_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.practitioner_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T5.status_enum = #{completed}
AND T1.delete_flag = '0'
UNION
SELECT T1.id AS supply_id,
T1.item_table,
T1.item_id,
T1.item_quantity,
T1.total_quantity,
T1.unit_code AS item_unit,
T1.price,
T1.total_price,
T1.approver_id,
T1.source_type_enum,
T1.source_location_id,
T1.source_location_store_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T1.supplier_id,
T1.lot_number,
T1.trace_no,
T1.trace_no_unit_code,
T1.invoice_no,
T1.bus_no,
T1.start_time,
T1.end_time,
T1.id AS service_id,
T3."name",
T3.bus_no AS item_bus_no,
T3.py_str,
T3.wb_str,
T3.unit_code,
T3.min_unit_code,
T3.part_percent,
T3.category_code AS item_category,
T3.yb_no,
T3.rx_flag,
T3.approval_number,
T3.manufacturer_text,
T6."name" AS supplier_name,
T7."name" AS practitioner_name
FROM wor_supply_request AS T1
LEFT JOIN wor_supply_delivery AS T5
ON T1.id = T5.request_id
INNER JOIN adm_device_definition AS T3
ON T3.id = T1.item_id
LEFT JOIN adm_supplier AS T6
ON T1.supplier_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.practitioner_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T5.status_enum = #{completed}
AND T1.delete_flag = '0'
</select>
<select id="selectChargeDetail" resultType="com.openhis.web.inventorymanage.dto.ItemChargeDetailDto">
SELECT T1.id AS definition_id,
T1.instance_id,
T1.charge_name,
T1.price AS sell_price,
T2.condition_code,
T2.condition_value,
T2.amount AS unit_price,
T3.unit_code,
T3.min_unit_code
FROM adm_charge_item_definition AS T1
LEFT JOIN adm_charge_item_def_detail AS T2
ON T1.id = T2.definition_id
LEFT JOIN med_medication_definition AS T3
ON T1.instance_id = T3.id
WHERE T1.instance_id IN
<foreach collection="itemIdList" item="itemId" separator="," open="(" close=")">
#{itemId}
</foreach>
</select>
<select id="selectReceiptPage" resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T2.supply_bus_no,
T2.status_enum,
T2.type_enum,
T2.approver_id,
T2.approval_time,
T2.applicant_id,
T2.apply_time,
T2.practitioner_id,
T2.tenant_id
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.practitioner_id,
T1.tenant_id
FROM wor_supply_request AS T1
WHERE T1.status_enum IN (#{approval},#{agree},#{reject})
AND T1.delete_flag != '1'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.practitioner_id,
T1.tenant_id
ORDER BY T1.apply_time desc
) AS T2
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,351 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.RequisitionIssueMapper">
<select id="selectRequisitionDepartment" resultType="com.openhis.web.inventorymanage.dto.IssueDepartmentDto">
SELECT id AS location_id,--科室id
name,--名称
type_enum--科室
FROM adm_organization
WHERE type_enum = #{department}--科室类型
AND delete_flag = '0'
</select>
<select id="selectRequisitionIssuePage"
resultType="com.openhis.web.inventorymanage.dto.IssuePageDto">
SELECT T2.supply_bus_no,--单据号
T2.status_enum,--状态
T2.approver_id,--审批人
T2.approval_time,--审批时间
T2.applicant_id,--申请人
T2.create_time, -- 制单时间
T2.practitioner_id,--经手人
T2.tenant_id,--租户ID
T2.purpose_location_id,--领用部门ID
T2.location_name --领用部门名
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.tenant_id,
T1.purpose_location_id,--领用部门ID
T4.name AS location_name
FROM wor_supply_request AS T1
LEFT JOIN adm_location T3
ON T1.source_location_id = T3.id
LEFT JOIN adm_organization T4
ON T1.purpose_location_id = T4.id
WHERE T1.type_enum = #{issueInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.tenant_id,
T1.purpose_location_id,
T4.name
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="requisitionIssueDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.purpose_type_enum,--目的类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品类型
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.purpose_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,
T2.part_percent,
T2."size" AS total_volume,
T2."yb_no",
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.purpose_type_enum,--目的类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品类型
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T1.occurrence_time,
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.source_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.purpose_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,
T2.part_percent,
T2."size" AS total_volume,
T2."yb_no",
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T1.occurrence_time,
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.source_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,346 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.ReturnIssueMapper">
<select id="selectReturnIssueDepartment" resultType="com.openhis.web.inventorymanage.dto.IssueDepartmentDto">
SELECT id AS location_id,--科室id
name,--名称
type_enum--科室
FROM adm_organization
WHERE type_enum = #{department}--科室类型
AND delete_flag = '0'
</select>
<select id="selectReturnIssuePage"
resultType="com.openhis.web.inventorymanage.dto.IssuePageDto">
SELECT T2.supply_bus_no,--单据号
T2.status_enum,--状态
T2.approver_id,--审批人
T2.approval_time,--审批时间
T2.applicant_id,--申请人
T2.create_time, -- 制单时间
T2.practitioner_id,--供应人
T2.tenant_id,--租户ID
T2.source_location_id,--领用部门ID
T2.location_name --领用部门名
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.tenant_id,
T1.source_location_id,--领用部门ID
T4.name AS location_name
FROM wor_supply_request AS T1
LEFT JOIN adm_location T3
ON T1.purpose_location_id = T3.id
LEFT JOIN adm_organization T4
ON T1.source_location_id = T4.id
WHERE T1.type_enum = #{issueInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.tenant_id,
T1.source_location_id,
T4.name
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="returnIssueDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.source_type_enum,--源仓库类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--药品规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,--经办人名称
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS purpose_location_name, -- 目的仓库
T7."name" AS purpose_location_store_name, -- 目的仓位
T8."name" AS source_location_name, -- 源仓库
T9."name" AS source_location_store_name, -- 源仓位
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.source_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,--器材名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T2."size" AS total_volume,--包装规格
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.source_type_enum,--源仓库类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--药品规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,--经办人名称
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS purpose_location_name, -- 目的仓库
T7."name" AS purpose_location_store_name, -- 目的仓位
T8."name" AS source_location_name, -- 源仓库
T9."name" AS source_location_store_name, -- 源仓位
T1.occurrence_time,
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.source_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,--器材名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T2."size" AS total_volume,--包装规格
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.occurrence_time,
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inventorymanage.mapper.TraceNoAppMapper">
<select id="selectDetailsPage" resultType="com.openhis.web.inventorymanage.dto.TraceNoDetailsPageDto">
SELECT T4.id,--ID
T4.name,--药品名
T4.location_id,--药房药库
T4.location_name,
T4.lot_number,--产品批号
T4.trace_no,--追溯码
T4.status_enum,--追溯码状态
T4.unit_code,--追溯码单位
T4.operation_type,--操作类型
T4.item_type,--项目类型
T4.create_time, --进出时间
T4.tenant_id,
T4.item_table,
T4.item_id
FROM (SELECT T1.id,--ID
T2.name,--药品名
T1.location_id,--药房药库
T3.name AS location_name,
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.status_enum,--追溯码状态
T1.unit_code,--追溯码单位
T1.operation_type,--操作类型
1 AS item_type,--项目类型
T1.create_time, --进出时间
T1.tenant_id,
T1.item_table,
T1.item_id
FROM adm_trace_no_manage AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T1.location_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.item_table = 'med_medication_definition'
AND T1.delete_flag = '0'
UNION
SELECT T1.id,--ID
T2.name,--药品名
T1.location_id,--药房药库
T3.name AS location_name,
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.status_enum,--追溯码状态
T1.unit_code,--追溯码单位
T1.operation_type,--操作类型
2 AS item_type,--项目类型
T1.create_time, --进出时间
T1.tenant_id,
T1.item_table,
T1.item_id
FROM adm_trace_no_manage AS T1
LEFT JOIN adm_device_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T1.location_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.item_table = 'adm_device_definition'
AND T1.delete_flag = '0') AS T4
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,307 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryCommonMapper">
<select id="getMedicationInfo"
resultType="com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryMedicationInfoDto">
SELECT T6.id,--物品id
T6.bus_no,-- 药品编号
T6.name,-- 物品名称
T6.py_str,-- 拼音码
T6.total_volume,--规格
T6.unit_code,-- 包装单位
T6.min_unit_code,--最小单位
T6.part_percent,--拆零比
T6.price,--进货单价
T6.retailPrice,--零售价
T6.manufacturer_text,-- 厂家/产地
T6.approval_number,--批准文号
T6.item_min_quantity, --库存最小警戒线
T6.specification_inventory,--规格库存
T6.batch_inventory,--批次库存
T6.lot_number,
T6.production_date,--生产日期
T6.expiration_date,--失效日期
<if test="locationId != null">
T6.location_id,
</if>
T6.supplier_id,
T6.tenant_id
FROM (SELECT T1.id,--物品id
T1.bus_no,-- 药品编号
T1.name,-- 物品名称
T1.py_str,-- 拼音码
T2.total_volume,--规格
T1.unit_code,-- 包装单位
T1.min_unit_code,--最小单位
T1.part_percent,--拆零比
CASE
WHEN T9.lot_number IS NULL THEN
CASE T4.condition_value
WHEN T1.min_unit_code THEN T4.amount * T1.part_percent
ELSE T4.amount END
ELSE CASE T4.condition_value
WHEN T1.min_unit_code THEN T10.amount * T1.part_percent
ELSE T10.amount END
END AS price,--进货单价(大单位)
CASE
WHEN T9.lot_number IS NULL THEN
CASE T5.condition_value
WHEN T1.min_unit_code THEN T5.amount * T1.part_percent
ELSE T5.amount END
ELSE CASE T5.condition_value
WHEN T1.min_unit_code THEN T11.amount * T1.part_percent
ELSE T11.amount END
END AS retailPrice,--零售价(大单位)
T1.manufacturer_text,-- 厂家/产地
T1.approval_number,--批准文号
T1.item_min_quantity * T1.part_percent AS item_min_quantity, --库存最小警戒线(小单位)
COALESCE(CAST(T8.specification_inventory AS DECIMAL(18, 6)), 0.00) AS specification_inventory,--规格库存(小单位)
COALESCE(CAST(T9.batch_inventory AS DECIMAL(18, 6)), 0.00) AS batch_inventory,--批次库存(小单位)
T9.lot_number,
T7.production_date,--生产日期
T7.expiration_date,--失效日期
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T1.tenant_id
FROM med_medication_definition AS T1
LEFT JOIN med_medication AS T2
ON T1.id = T2.medication_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3
ON T3.instance_id = T1.id
AND T3.instance_table = 'med_medication_definition'
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T4
ON T4.definition_id = T3.id
AND T4.condition_code = '2'--2:采购价
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T5
ON T5.definition_id = T3.id
AND T5.condition_code = '3'--2:单位
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item T7
ON T7.item_table = 'med_medication_definition'
AND T7.item_id = T1.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
<if test="locationId != null">
i1.location_id,
</if>
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_inventory
FROM wor_inventory_item i1
LEFT JOIN med_medication_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'med_medication_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id
<if test="locationId != null">
,i1.location_id
</if>) T8
ON T8.item_table = 'med_medication_definition'
AND T8.item_id = T1.ID
<if test="locationId != null">
AND T8.location_id = T7.location_id
</if>
LEFT JOIN (SELECT i3.item_table,
i3.item_id,
i3.lot_number,
<if test="locationId != null">
i3.location_id,
</if>
COALESCE(CAST(SUM(i3.quantity) AS DECIMAL(18, 6)), 0.00) AS batch_inventory
FROM wor_inventory_item i3
LEFT JOIN med_medication_definition i4 ON i3.item_id = i4.ID
AND i4.delete_flag = '0'
WHERE i3.item_table = 'med_medication_definition'
AND i3.delete_flag = '0'
GROUP BY i3.item_table,
i3.item_id,
i3.lot_number
<if test="locationId != null">
,i3.location_id
</if>) T9
ON T9.item_table = 'med_medication_definition'
AND T9.item_id = T1.ID
AND T9.lot_number = T7.lot_number
<if test="locationId != null">
AND T9.location_id = T7.location_id
</if>
LEFT JOIN adm_charge_item_def_detail T10
ON T10.definition_id = T3.id
AND T10.condition_code = '1'--1:批号进价
AND T10.condition_value = T9.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T11
ON T11.definition_id = T3.id
AND T11.condition_code = '5'--1:批号售价
AND T11.condition_value = T9.lot_number
AND T11.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="locationId != null">
AND T7.location_id = #{locationId}
</if>
<!-- <if test="supplierId != null">-->
<!-- AND T7.supplier_id = #{supplierId}-->
<!-- </if>-->
GROUP BY T1.id,
T2.total_volume,
T4.condition_value,
T5.condition_value,
T4.amount,
T5.amount,
T10.amount,
T11.amount,
T8.specification_inventory,
T9.batch_inventory,
T9.lot_number,
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T7.production_date,
T7.expiration_date
<if test="supplierId != null">
HAVING
T8.specification_inventory <![CDATA[ <= ]]> (T1.item_min_quantity * T1.part_percent)
</if>
ORDER BY T1.bus_no) AS T6
${ew.customSqlSegment}
</select>
<select id="getPage"
resultType="com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.supplier_id, --供应商
T4.location_type_enum, --仓库类型
T4.location_id, --仓库
T4.applicant_id, --开单人
T4.applicant_name, --开单人
T4.approver_id, --审批人
T4.apply_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum AS location_type_enum,
T1.source_location_id AS location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum AS location_type_enum,
T1.purpose_location_id AS location_id,
</if>
T1.applicant_id,
T2.name AS applicant_name,
T1.approver_id,
T1.apply_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T2.id = T1.applicant_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="originalBusNoFlg != null">
and original_bus_no = ''
</if>
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum,
T1.source_location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum,
T1.purpose_location_id,
</if>
T1.applicant_id,
T2.name,
T1.approver_id,
T1.apply_time,
T1.approval_time
) AS T4
${ew.customSqlSegment}
</select>
<select id="getDetailPage"
resultType="com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T2.bus_no AS item_bus_no, --药品编码
T1.item_id, --药品id
T2.name AS item_name, --名称
T3.total_volume, --规格
T1.unit_code, --选择单位
T2.unit_code AS max_unit_code, --常规单位
T2.min_unit_code AS min_unit_code, --最小单位
T2.part_percent, --拆零比
T1.item_quantity, --数量
T1.total_quantity, --合计数量
T1.price, --采购单价
T1.total_price, --采购总价
T1.retail_price, --零售价
T1.total_retail_price, --零价金额
T2.manufacturer_text, --生产厂商文本
T2.approval_number, --批准文号
T1.remake, --备注
T1.reason, --摘要(理由)
T1.reason_code, --理由类型
T1.batch_inventory, --批次库存
T1.specification_inventory, --规格库存
T1.applicant_id,--申请人
T1.apply_time,--申请时间
T1.approver_id,--审批人
T1.approval_time,--审批时间
T1.supplier_id,--供应商
T4.phone,--供应商联系人
T1.status_enum,
T1.type_enum,
T1.category_enum,--单据类型
T1.source_type_enum, --源仓库类型
T1.source_location_id, --源仓库
T1.purpose_type_enum, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.practitioner_id,--仓库员
T1.invoice_no,--发票号
T1.lot_number,--产品批号
T1.start_time,--开始时间
T1.end_time,--结束时间
T1.packaging_condition_enum,--包装情况
T1.acceptance_result_enum,--验收结果
T1.trace_no,--追溯码
T1.trace_no_unit_code,--追溯码包装
T1.occurrence_time,--禁用日期
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier AS T4
ON T4.id = T1.supplier_id
AND T4.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.bus_no,
T2.name,
T2.unit_code,
T2.min_unit_code,
T3.total_volume,
T2.part_percent,
T2.manufacturer_text,
T2.approval_number,
T4.phone
</select>
</mapper>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryDispensingOrderMapper">
<select id="getInfo"
resultType="com.openhis.web.pharmacyDispensarymanage.dto.PharmacyDispensaryDetailDto">
SELECT string_agg(T1.id::text, ',' ORDER BY T1.id) AS dispense_ids,--药品发放id
T1.status_enum,--发放状态
CASE T3.category_enum
WHEN 1 THEN 20
WHEN 2 THEN 19 END AS category_enum, --分类
T3.medication_id AS item_id,--物品编码
T3.unit_code,--物品计量单位
T3.quantity AS item_quantity,--数量
T3.lot_number, --产品批号
T3.perform_location AS source_location_id, --源仓库
T4.organization_id AS purpose_location_id,--目的仓库
T1.practitioner_id AS approver_id,--审批人
T1.dispense_time AS approval_time, --审批时间
T1.patient_id AS applicant_id,--申请人
T3.req_authored_time AS apply_time --申请时间
FROM med_medication_dispense AS T1
INNER JOIN med_medication_request AS T3
ON T1.med_req_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T2
ON T3.medication_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_encounter AS T4
ON T3.encounter_id = T4.id
AND T4.delete_flag = '0'
WHERE T1.id IN
<foreach collection="dispenseIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.status_enum = #{dispenseStatus}
AND T1.delete_flag = '0'
GROUP BY T1.status_enum,
T3.category_enum,
T3.medication_id,
T3.unit_code,
T3.quantity,
T3.lot_number,
T3.perform_location,
T4.organization_id,
T1.practitioner_id,
T1.dispense_time,
T1.patient_id,
T3.req_authored_time
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryProfitLossOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryRequisitionOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryReturnToWarehouseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryStockInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryStocktakingOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryTransferInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyDispensarymanage.mapper.PharmacyDispensaryTransferOutOrderMapper">
</mapper>

View File

@@ -0,0 +1,312 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseCommonMapper">
<select id="getMedicationInfo"
resultType="com.openhis.web.pharmacyWarehousemanage.dto.PharmacyWarehouseMedicationInfoDto">
SELECT T6.id,--物品id
T6.bus_no,-- 药品编号
T6.name,-- 物品名称
T6.py_str,-- 拼音码
T6.total_volume,--规格
T6.unit_code,-- 包装单位
T6.min_unit_code,--最小单位
T6.part_percent,--拆零比
T6.price,--进货单价
T6.retailPrice,--零售价
T6.manufacturer_text,-- 厂家/产地
T6.approval_number,--批准文号
T6.item_min_quantity, --库存最小警戒线
T6.specification_inventory,--规格库存
<if test="locationId != null">
T6.location_id,
</if>
<if test="supplierId == null">
T6.batch_inventory,--批次库存
T6.lot_number,
T6.production_date,--生产日期
T6.expiration_date,--失效日期
</if>
T6.supplier_id,
T6.tenant_id
FROM (SELECT T1.id,--物品id
T1.bus_no,-- 药品编号
T1.name,-- 物品名称
T1.py_str,-- 拼音码
T2.total_volume,--规格
T1.unit_code,-- 包装单位
T1.min_unit_code,--最小单位
T1.part_percent,--拆零比
CASE
WHEN T7.supplier_id IS NULL THEN
CASE T4.condition_value
WHEN T1.min_unit_code THEN T4.amount * T1.part_percent
ELSE T4.amount END
ELSE CASE T4.condition_value
WHEN T1.min_unit_code THEN T10.amount * T1.part_percent
ELSE T10.amount END
END AS price,--进货单价(大单位)
CASE
WHEN T7.supplier_id IS NULL THEN
CASE T5.condition_value
WHEN T1.min_unit_code THEN T5.amount * T1.part_percent
ELSE T5.amount END
ELSE CASE T5.condition_value
WHEN T1.min_unit_code THEN T11.amount * T1.part_percent
ELSE T11.amount END
END AS retailPrice,--零售价(大单位)
T1.manufacturer_text,-- 厂家/产地
T1.approval_number,--批准文号
T1.item_min_quantity * T1.part_percent AS item_min_quantity, --库存最小警戒线(小单位)
COALESCE(CAST(T8.specification_inventory AS DECIMAL(18, 6)), 0.00) AS specification_inventory,--规格库存(小单位)
<if test="supplierId == null">
COALESCE(CAST(T9.batch_inventory AS DECIMAL(18, 6)), 0.00) AS batch_inventory,--批次库存(小单位)
T7.lot_number,
T7.production_date,--生产日期
T7.expiration_date,--失效日期
</if>
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T1.tenant_id
FROM med_medication_definition AS T1
LEFT JOIN med_medication AS T2
ON T1.id = T2.medication_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3
ON T3.instance_id = T1.id
AND T3.instance_table = 'med_medication_definition'
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T4
ON T4.definition_id = T3.id
AND T4.condition_code = '2'--2:采购价
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T5
ON T5.definition_id = T3.id
AND T5.condition_code = '3'--2:单位
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item T7
ON T7.item_table = 'med_medication_definition'
AND T7.item_id = T1.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
<if test="locationId != null">
i1.location_id,
</if>
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_inventory
FROM wor_inventory_item i1
LEFT JOIN med_medication_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'med_medication_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id
<if test="locationId != null">
,i1.location_id
</if>) T8
ON T8.item_table = 'med_medication_definition'
AND T8.item_id = T1.ID
<if test="locationId != null">
AND T8.location_id = T7.location_id
</if>
LEFT JOIN (SELECT i3.item_table,
i3.item_id,
i3.lot_number,
<if test="locationId != null">
i3.location_id,
</if>
COALESCE(CAST(SUM(i3.quantity) AS DECIMAL(18, 6)), 0.00) AS batch_inventory
FROM wor_inventory_item i3
LEFT JOIN med_medication_definition i4 ON i3.item_id = i4.ID
AND i4.delete_flag = '0'
WHERE i3.item_table = 'med_medication_definition'
AND i3.delete_flag = '0'
GROUP BY i3.item_table,
i3.item_id,
i3.lot_number
<if test="locationId != null">
,i3.location_id
</if>) T9
ON T9.item_table = 'med_medication_definition'
AND T9.item_id = T1.ID
AND T9.lot_number = T7.lot_number
<if test="locationId != null">
AND T9.location_id = T7.location_id
</if>
LEFT JOIN adm_charge_item_def_detail T10
ON T10.definition_id = T3.id
AND T10.condition_code = '1'--1:批号进价
AND T10.condition_value = T9.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T11
ON T11.definition_id = T3.id
AND T11.condition_code = '5'--1:批号售价
AND T11.condition_value = T9.lot_number
AND T11.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="locationId != null">
AND T7.location_id = #{locationId}
</if>
GROUP BY T1.id,
T2.total_volume,
T4.condition_value,
T5.condition_value,
T4.amount,
T5.amount,
T10.amount,
T11.amount,
T8.specification_inventory,
<if test="locationId != null">
T7.location_id,
</if>
<if test="supplierId == null">
T7.lot_number,
T9.batch_inventory,
T7.production_date,
T7.expiration_date,
</if>
T7.supplier_id
<if test="supplierId != null">
HAVING
T8.specification_inventory <![CDATA[ <= ]]> (T1.item_min_quantity * T1.part_percent)
</if>
ORDER BY T1.bus_no) AS T6
${ew.customSqlSegment}
</select>
<select id="getPage"
resultType="com.openhis.web.pharmacyWarehousemanage.dto.PharmacyWarehouseDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.supplier_id, --供应商
T4.location_type_enum, --仓库类型
T4.location_id, --仓库
T4.applicant_id, --开单人
T4.applicant_name, --开单人
T4.approver_id, --审批人
T4.apply_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum AS location_type_enum,
T1.source_location_id AS location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum AS location_type_enum,
T1.purpose_location_id AS location_id,
</if>
T1.applicant_id,
T2.name AS applicant_name,
T1.approver_id,
T1.apply_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T2.id = T1.applicant_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="originalBusNoFlg != null">
and original_bus_no = ''
</if>
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
T1.source_type_enum,
T1.source_location_id,
<if test="locationFlg != null">
T1.source_type_enum,
T1.source_location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum,
T1.purpose_location_id,
</if>
T1.applicant_id,
T2.name,
T1.approver_id,
T1.apply_time,
T1.approval_time
) AS T4
${ew.customSqlSegment}
</select>
<select id="getDetailPage"
resultType="com.openhis.web.pharmacyWarehousemanage.dto.PharmacyWarehouseDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T2.bus_no AS item_bus_no, --药品编码
T1.item_id, --药品id
T2.name AS item_name, --名称
T3.total_volume, --规格
T1.unit_code, --选择单位
T2.unit_code AS max_unit_code, --常规单位
T2.min_unit_code AS min_unit_code, --最小单位
T2.part_percent, --拆零比
T1.item_quantity, --数量
T1.total_quantity, --合计数量
T1.price, --采购单价
T1.total_price, --采购总价
T1.retail_price, --零售价
T1.total_retail_price, --零价金额
T2.manufacturer_text, --生产厂商文本
T2.approval_number, --批准文号
T1.remake, --备注
T1.reason, --摘要(理由)
T1.reason_code, --理由类型
T1.batch_inventory, --批次库存
T1.specification_inventory, --规格库存
T1.applicant_id,--申请人
T1.apply_time,--申请时间
T1.approver_id,--审批人
T1.approval_time,--审批时间
T1.supplier_id,--供应商
T4.phone,--供应商联系人
T1.status_enum,
T1.type_enum,
T1.category_enum,--单据类型
T1.source_type_enum, --源仓库类型
T1.source_location_id, --源仓库
T1.purpose_type_enum, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.practitioner_id,--仓库员
T1.invoice_no,--发票号
T1.lot_number,--产品批号
T1.start_time,--开始时间
T1.end_time,--结束时间
T1.packaging_condition_enum,--包装情况
T1.acceptance_result_enum,--验收结果
T1.trace_no,--追溯码
T1.trace_no_unit_code,--追溯码包装
T1.occurrence_time,--禁用日期
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier AS T4
ON T4.id = T1.supplier_id
AND T4.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.bus_no,
T2.name,
T2.unit_code,
T2.min_unit_code,
T3.total_volume,
T2.part_percent,
T2.manufacturer_text,
T2.approval_number,
T4.phone
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseDocumentManagementMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseProfitLossOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehousePurchaseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseReturnOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseReturnToWarehouseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseStockInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseStockOutOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.pharmacyWarehousemanage.mapper.PharmacyWarehouseStocktakingOrderMapper">
</mapper>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper">
<select id="getUserPractitionerPage" resultType="com.openhis.web.basedatamanage.dto.UserAndPractitionerDto">
SELECT T3.tenant_id,
T3.user_id,
T3.practitioner_id,
T3.py_str,
T3.wb_str,
T3.user_name,
T3.nick_name,
T3.email,
T3.phonenumber,
T3.sex,
T3.status,
T3.remark,
T3.birth_date,
T3.address,
T3.yb_no,
T3.org_id,
T3.phar_prac_cert_no
from (
SELECT T1.tenant_id,
T1.id AS practitioner_id,
T1.user_id,
T1.py_str,
T1.wb_str,
T2.user_name,
T2.nick_name,
T2.email,
T2.phonenumber,
T2.sex,
T2.status,
T2.remark,
T1.birth_date,
T1.address,
T1.yb_no,
T1.org_id,
T1.phar_prac_cert_no
FROM adm_practitioner AS T1
LEFT JOIN sys_user AS T2 ON T2.user_id = T1.user_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0') AS T3
${ew.customSqlSegment}
</select>
<select id="getPractitionerRolesDtoList" resultType="com.openhis.web.basedatamanage.dto.PractitionerRolesDto">
SELECT
sr.role_id,
sr.role_key AS role_code,
sr.role_name,
ap.ID AS practitioner_id
FROM
sys_role sr
JOIN sys_user_role sur ON sr.role_id = sur.role_id
JOIN adm_practitioner ap ON sur.user_id = ap.user_id
WHERE
ap.delete_flag = '0'
<if test="practitionerIdList != null and !practitionerIdList.isEmpty()">
AND ap.ID IN
<foreach collection="practitionerIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<select id="getOrgAndLocationDtoList" resultType="com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto">
SELECT
t1.practitioner_id,
t1.role_code,
t1.org_id,
t1.location_id
FROM
adm_practitioner_role AS T1
WHERE
t1.delete_flag = '0'
<if test="practitionerIdList != null and !practitionerIdList.isEmpty()">
AND t1.practitioner_id IN
<foreach collection="practitionerIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<delete id="delUserRole">
delete
from sys_user_role
where user_id = #{userId}
</delete>
<delete id="delPractitionerRole">
delete
from adm_practitioner_role
where practitioner_id = #{practitionerId}
</delete>
<select id="getSelectableOrgList" resultType="com.openhis.web.basedatamanage.dto.SelectableOrgDto">
SELECT apr.org_id AS org_id,
ao.NAME AS org_name
FROM adm_practitioner_role AS apr
INNER JOIN adm_organization AS ao ON ao.ID = apr.org_id
AND ao.delete_flag = '0'
WHERE apr.delete_flag = '0'
AND apr.practitioner_id = #{practitionerId}
GROUP BY apr.org_id,
ao.NAME
</select>
</mapper>

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper">
<select id="getHealthcareServicePage" resultType="com.openhis.web.basicservice.dto.HealthcareServiceDto">
SELECT T3.id,
T3.tenant_id,
T3.active_flag,
T3.offered_org_id,
T3.category_code,
T3.type_code,
T3.specialty_code,
T3.location_id,
T3.NAME,
T3.COMMENT,
T3.extra_details,
T3.contact,
T3.appointment_required_flag,
T3.definition_id,
T3.charge_name,
T3.price,
T3.activity_price
FROM (
SELECT T1.ID,
T1.tenant_id,
T1.active_flag,
T1.offered_org_id,
T1.category_code,
T1.type_code,
T1.specialty_code,
T1.location_id,
T1.NAME,
T1.COMMENT,
T1.extra_details,
T1.contact,
T1.appointment_required_flag,
T2.ID AS definition_id,
T2.charge_name,
T2.price,
COALESCE(activity_sum.price_sum, 0) AS activity_price
FROM adm_healthcare_service AS T1
LEFT JOIN adm_charge_item_definition AS T2 ON T2.instance_id = T1.ID
AND T2.instance_table = #{tableName}
LEFT JOIN (
SELECT tad.item_no,
SUM(acid.price) AS price_sum
FROM tmp_activity_device AS tad
JOIN adm_charge_item_definition AS acid ON acid.instance_id = tad.dev_act_id
AND acid.delete_flag = '0'
WHERE tad.delete_flag = '0'
AND tad.dev_act_table = #{activityTableName}
GROUP BY tad.item_no
) AS activity_sum ON activity_sum.item_no = CAST(T1.ID AS TEXT)
WHERE T1.delete_flag = '0'
AND T1.active_flag = 1
ORDER BY T1.create_time DESC
) AS T3
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,677 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.catalogmanage.mapper.CatalogMapper">
<select id="get1315Page" resultType="com.openhis.ybcatalog.domain.CatalogZySyndrome">
SELECT
T1.tcm_syndrome_id
,T1.syndrome_class_code
,T1.syndrome_class_name
,T1.syndrome_property_code
,T1.syndrome_property
,T1.syndrome_type_code
,T1.syndrome_type_name
,T1.remark
,T1.active_flag
,T1.uni_record_id
,T1.craet_time
,T1.update_time
,T1.version
,T1.version_name
FROM(
SELECT
tcm_syndrome_id
,syndrome_class_code
,syndrome_class_name
,syndrome_property_code
,syndrome_property
,syndrome_type_code
,syndrome_type_name
,remark
,active_flag
,uni_record_id
,craet_time
,update_time
,version
,version_name
FROM yb_catalog_zy_syndrome
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1314Page" resultType="com.openhis.ybcatalog.domain.CatalogZyDiseaseDiagnosis">
SELECT
id
,T1.category_code
,T1.category_name
,T1.specialty_system_category_code
,T1.specialty_system_category_name
,T1.disease_category_code
,T1.disease_category_name
,T1.remarks
,T1.valid_flag
,T1.unique_record_id
,T1.create_time
,T1.update_time
,T1.version_number
,T1.version_name
FROM(
SELECT
id
,category_code
,category_name
,specialty_system_category_code
,specialty_system_category_name
,disease_category_code
,disease_category_name
,remarks
,valid_flag
,unique_record_id
,create_time
,update_time
,version_number
,version_name
FROM yb_catalog_zy_syndrome
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1308Page" resultType="com.openhis.ybcatalog.domain.CatalogSurgeryStandardDirectory">
SELECT
id
,T1.chapter
,T1.chapter_code_range
,T1.chapter_name
,T1.category_code
,T1.category_name
,T1.subcategory_code
,T1.subcategory_name
,T1.item_code
,T1.item_name
,T1.operation_code
,T1.operation_name
,T1.usage_flag
,T1.group_standard_operation_code
,T1.group_standard_operation_name
,T1.clinical_version_operation_code
,T1.clinical_version_operation_name
,T1.remarks
,T1.valid_flag
,T1.unique_record_id
,T1.create_time
,T1.update_time
,T1.version_number
,T1.version_name
FROM(
SELECT
id
,chapter
,chapter_code_range
,chapter_name
,category_code
,category_name
,subcategory_code
,subcategory_name
,item_code
,item_name
,operation_code
,operation_name
,usage_flag
,group_standard_operation_code
,group_standard_operation_name
,clinical_version_operation_code
,clinical_version_operation_name
,remarks
,valid_flag
,unique_record_id
,create_time
,update_time
,version_number
,version_name
FROM yb_catalog_surgery_standard_directory
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1307Page" resultType="com.openhis.ybcatalog.domain.CatalogWesternDisease">
SELECT
disease_id
,T1.chapter
,T1.chapter_code_range
,T1.chapter_name
,T1.section_code_range
,T1.section_name
,T1.category_code
,T1.category_name
,T1.subcategory_code
,T1.subcategory_name
,T1.diagnosis_code
,T1.diagnosis_name
,T1.usage_flag
,T1.gb_diagnosis_code
,T1.gb_diagnosis_name
,T1.clinical_code
,T1.clinical_name
,T1.remarks
,T1.valid_flag
,T1.unique_record_id
,T1.create_time
,T1.update_time
,T1.version_number
,T1.version_name
FROM(
SELECT
disease_id
,chapter
,chapter_code_range
,chapter_name
,section_code_range
,section_name
,category_code
,category_name
,subcategory_code
,subcategory_name
,diagnosis_code
,diagnosis_name
,usage_flag
,gb_diagnosis_code
,gb_diagnosis_name
,clinical_code
,clinical_name
,remarks
,valid_flag
,unique_record_id
,create_time
,update_time
,version_number
,version_name
FROM yb_catalog_western_disease
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1306Page" resultType="com.openhis.ybcatalog.domain.CatalogMedicalConsumables">
SELECT
T1.medical_catalog_code
,T1.consumable_name
,T1.device_unique_id
,T1.insurance_generic_code
,T1.insurance_generic_name
,T1.product_model
,T1.spec_code
,T1.specification
,T1.consumable_category
,T1.spec_model
,T1.material_code
,T1.material_type
,T1.package_spec
,T1.package_quantity
,T1.package_material
,T1.package_unit
,T1.conversion_ratio
,T1.min_usage_unit
,T1.production_area_type
,T1.production_area_name
,T1.product_standard
,T1.expiry_date
,T1.structure_composition
,T1.applicable_scope
,T1.usage_method
,T1.image_code
,T1.quality_standard
,T1.instructions
,T1.proof_materials
,T1.special_device_flag
,T1.special_device_name
,T1.kit_name
,T1.kit_flag
,T1.usage_restriction_flag
,T1.insurance_restriction
,T1.min_sale_unit
,T1.high_value_flag
,T1.medical_material_code
,T1.implant_flag
,T1.sterilization_flag
,T1.sterilization_name
,T1.implant_intervention_flag
,T1.implant_intervention_name
,T1.disposable_flag
,T1.disposable_flag_name
,T1.registrant_name
,T1.start_date
,T1.end_date
,T1.device_management_category
,T1.device_category_name
,T1.registration_no
,T1.registered_product_name
,T1.structure_details
,T1.other_content
,T1.approval_date
,T1.registrant_address
,T1.cert_effective_start
,T1.cert_effective_end
,T1.manufacturer_code
,T1.manufacturer_name
,T1.production_address
,T1.agent_company
,T1.agent_address
,T1.production_country
,T1.service_agency
,T1.cert_archive_path
,T1.product_images
,T1.valid_flag
,T1.unique_record_id
,T1.version_number
,T1.version_name
FROM(
SELECT
medical_catalog_code
,T1.consumable_name
,T1.device_unique_id
,insurance_generic_code
,insurance_generic_name
,product_model
,spec_code
,specification
,consumable_category
,spec_model
,material_code
,material_type
,package_spec
,package_quantity
,package_material
,package_unit
,conversion_ratio
,min_usage_unit
,production_area_type
,production_area_name
,product_standard
,expiry_date
,structure_composition
,applicable_scope
,usage_method
,image_code
,quality_standard
,instructions
,proof_materials
,special_device_flag
,special_device_name
,kit_name
,kit_flag
,usage_restriction_flag
,insurance_restriction
,min_sale_unit
,high_value_flag
,medical_material_code
,implant_flag
,sterilization_flag
,sterilization_name
,implant_intervention_flag
,implant_intervention_name
,disposable_flag
,disposable_flag_name
,registrant_name
,start_date
,end_date
,device_management_category
,device_category_name
,registration_no
,registered_product_name
,structure_details
,other_content
,approval_date
,registrant_address
,cert_effective_start
,cert_effective_end
,manufacturer_code
,manufacturer_name
,production_address
,agent_company
,agent_address
,production_country
,service_agency
,cert_archive_path
,product_images
,valid_flag
,unique_record_id
,version_number
,version_name
FROM yb_catalog_medical_consumables
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1305Page" resultType="com.openhis.ybcatalog.domain.CatalogMedicalService">
SELECT
T1.tenant_id
,T1.medical_catalog_code
,T1.billing_unit
,T1.billing_unit_name
,T1.medical_item_desc
,T1.exclusion_content
,T1.medical_item_connotation
,T1.valid_flag
,T1.remarks
,T1.service_category
,T1.medical_service_name
,T1.project_description
,T1.start_date
,T1.end_date
,T1.unique_record_id
,T1.version_number
,T1.version_name
,T1.issuance_flag
,T1.transfer_data_id
,T1.effective_time
,T1.expiry_time
FROM(
SELECT
#{tenantId} AS tenant_id
,medical_catalog_code
,billing_unit
,billing_unit_name
,medical_item_desc
,exclusion_content
,medical_item_connotation
,valid_flag
,remarks
,service_category
,medical_service_name
,project_description
,start_date
,end_date
,unique_record_id
,version_number
,version_name
,issuance_flag
,transfer_data_id
,effective_time
,expiry_time
-- 添加窗口函数用于分组内排序
,ROW_NUMBER() OVER (
PARTITION BY medical_catalog_code
ORDER BY version_number DESC
) AS row_num_max
FROM yb_catalog_medical_service
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1302Page" resultType="com.openhis.ybcatalog.domain.CatalogMedicalHerbInfo">
SELECT
T1.medical_catalog_code,
T1.single_drug_name,
T1.single_compound_flag,
T1.quality_grade,
T1.herbal_year,
T1.medicinal_part,
T1.safe_dosage,
T1.conventional_usage,
T1.properties_taste,
T1.meridian_attribution,
T1.species,
T1.start_date,
T1.end_date,
T1.valid_flag,
T1.unique_record_id,
T1.create_time,
T1.update_time,
T1.version_number,
T1.version_name,
T1.herb_name,
T1.indications,
T1.processing_method,
T1.efficacy_classification,
T1.herb_source,
T1.national_insurance_policy,
T1.provincial_insurance_policy,
T1.standard_name,
T1.standard_page,
T1.electronic_record,
T1.issuance_flag,
T1.transfer_data_id,
T1.effective_time,
T1.expiry_time
FROM(
SELECT
medical_catalog_code,
single_drug_name,
single_compound_flag,
quality_grade,
herbal_year,
medicinal_part,
safe_dosage,
conventional_usage,
properties_taste,
meridian_attribution,
species,
start_date,
end_date,
valid_flag,
unique_record_id,
create_time,
update_time,
version_number,
version_name,
herb_name,
indications,
processing_method,
efficacy_classification,
herb_source,
national_insurance_policy,
provincial_insurance_policy,
standard_name,
standard_page,
electronic_record,
issuance_flag,
transfer_data_id,
effective_time,
expiry_time
FROM
yb_catalog_medical_herb_info
) AS T1
${ew.customSqlSegment}
</select>
<select id="get1301Page" resultType="com.openhis.ybcatalog.domain.CatalogDrugInfo">
SELECT
T1.tenant_id
,T1.medical_catalog_code
,T1.drug_trade_name
,T1.generic_name_id
,T1.drug_generic_name
,T1.chemical_name
,T1.alias
,T1.english_name
,T1.registered_name
,T1.drug_supervision_code
,T1.drug_form
,T1.drug_form_name
,T1.drug_category
,T1.drug_category_name
,T1.drug_specification
,T1.drug_spec_code
,T1.registered_form
,T1.registered_spec
,T1.registered_spec_code
,T1.dosage
,T1.frequency
,T1.acid_base
,T1.national_drug_code
,T1.usage
,T1.tcm_flag
,T1.production_area_type
,T1.production_area_name
,T1.pricing_unit_type
,T1.otc_flag
,T1.otc_flag_name
,T1.packaging_material
,T1.packaging_material_name
,T1.packaging_spec
,T1.packaging_quantity
,T1.function_indication
,T1.administration_route
,T1.instructions
,T1.start_date
,T1.end_date
,T1.min_use_unit
,T1.min_sale_unit
,T1.min_measurement_unit
,T1.min_package_quantity
,T1.min_package_unit
,T1.min_preparation_unit
,T1.min_package_unit_name
,T1.min_preparation_unit_name
,T1.conversion_ratio
,T1.shelf_life
,T1.min_pricing_unit
,T1.wubi_code
,T1.pinyin_code
,T1.repackager
,T1.manufacturer_code
,T1.manufacturer_name
,T1.special_price_limit_flag
,T1.special_drug_flag
,T1.use_restriction
,T1.use_restriction_flag
,T1.registration_cert_no
,T1.reg_cert_start_date
,T1.reg_cert_end_date
,T1.approval_no
,T1.approval_start_date
,T1.approval_end_date
,T1.market_status
,T1.market_status_name
,T1.reg_document_archive
,T1.supp_application_archive
,T1.national_insurance_notes
,T1.essential_drug_flag_name
,T1.essential_drug_flag
,T1.vat_adjustment_flag
,T1.vat_adjustment_name
,T1.listed_drug_flag
,T1.negotiation_drug_flag
,T1.negotiation_drug_name
,T1.nhc_drug_code
,T1.remarks
,T1.valid_flag
,T1.unique_record_id
,T1.created_at
,T1.updated_at
,T1.version
,T1.version_name
,T1.pediatric_use
,T1.company_name
,T1.generic_evaluation_flag
,T1.distribution_company
,T1.distribution_contact
,T1.distribution_auth_archive
,T1.insurance_form
,T1.insurance_class
,T1.marketing_authorization_holder
,T1.release_flag
,T1.transmission_data_id
,T1.valid_from
,T1.valid_to
FROM(
SELECT
#{tenantId} AS tenant_id
,medical_catalog_code
,drug_trade_name
,generic_name_id
,drug_generic_name
,chemical_name
,alias
,english_name
,registered_name
,drug_supervision_code
,drug_form
,drug_form_name
,drug_category
,drug_category_name
,drug_specification
,drug_spec_code
,registered_form
,registered_spec
,registered_spec_code
,dosage
,frequency
,acid_base
,national_drug_code
,usage
,tcm_flag
,production_area_type
,production_area_name
,pricing_unit_type
,otc_flag
,otc_flag_name
,packaging_material
,packaging_material_name
,packaging_spec
,packaging_quantity
,function_indication
,administration_route
,instructions
,start_date
,end_date
,min_use_unit
,min_sale_unit
,min_measurement_unit
,min_package_quantity
,min_package_unit
,min_preparation_unit
,min_package_unit_name
,min_preparation_unit_name
,conversion_ratio
,shelf_life
,min_pricing_unit
,wubi_code
,pinyin_code
,repackager
,manufacturer_code
,manufacturer_name
,special_price_limit_flag
,special_drug_flag
,use_restriction
,use_restriction_flag
,registration_cert_no
,reg_cert_start_date
,reg_cert_end_date
,approval_no
,approval_start_date
,approval_end_date
,market_status
,market_status_name
,reg_document_archive
,supp_application_archive
,national_insurance_notes
,essential_drug_flag_name
,essential_drug_flag
,vat_adjustment_flag
,vat_adjustment_name
,listed_drug_flag
,negotiation_drug_flag
,negotiation_drug_name
,nhc_drug_code
,remarks
,valid_flag
,unique_record_id
,created_at
,updated_at
,version
,version_name
,pediatric_use
,company_name
,generic_evaluation_flag
,distribution_company
,distribution_contact
,distribution_auth_archive
,insurance_form
,insurance_class
,marketing_authorization_holder
,release_flag
,transmission_data_id
,valid_from
,valid_to
-- 添加窗口函数用于分组内排序
,ROW_NUMBER() OVER (
PARTITION BY medical_catalog_code
ORDER BY version DESC
) AS row_num_max
FROM yb_catalog_drug_info
) AS T1
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.chargemanage.mapper.InpatientChargeAppMapper">
<select id="selectEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T4.encounter_id,
T4.encounter_bus_no,
T4.patient_id,
T4.reception_time,
T4.patient_name,
T4.patient_bus_no,
T4.gender_enum,
T4.birth_date,
T4.id_card,
T4.start_time,
T4.patient_py_str,
T4.patient_wb_str,
T4.status_enum
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T1.start_time,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T3.status_enum
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
INNER JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.class_enum = #{classEnum}
GROUP BY T1.id,
T1.bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectEncounterPatientPrescription"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto">
SELECT T1.encounter_id,
T1.id,
T1.patient_id,
T1.context_enum,
T1.status_enum,
T1.requesting_org_id,
T1.quantity_value,
T1.quantity_unit,
T1.unit_price,
T1.total_price,
T1.prescription_no,
T1.bus_no,
T1.entered_date,
T1.account_id,
T1.service_table,
T5.enterer_id,
T5.bill_date,
T6.contract_no,
T7.med_type_code,
T8.contract_name,
CASE
WHEN T1.context_enum = #{activity} THEN T2."name"
WHEN T1.context_enum = #{medication} THEN T3."name"
WHEN T1.context_enum = #{device} THEN T4."name"
END AS item_name,
CASE
WHEN T1.context_enum = #{activity} THEN T2.yb_no
WHEN T1.context_enum = #{medication} THEN T3.yb_no
WHEN T1.context_enum = #{device} THEN T4.yb_no
END AS yb_no,
CASE
WHEN T1.context_enum = #{activity} THEN T2.id
WHEN T1.context_enum = #{medication} THEN T3.id
WHEN T1.context_enum = #{device} THEN T4.id
END AS item_id
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = #{activity}
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.context_enum = #{medication}
AND T1.product_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.context_enum = #{device}
AND T1.product_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T5
ON T1.id::TEXT = ANY(string_to_array(T5.charge_item_ids, ','))
AND T5.delete_flag = '0'
AND T5.status_enum = 1
LEFT JOIN adm_account AS T6
ON T1.account_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T7
ON T1.encounter_id = T7.encounter_id
AND T1.condition_id = T7.condition_id
AND T7.delete_flag = '0'
LEFT JOIN fin_contract AS T8
ON T6.contract_no = T8.bus_no
AND T8.delete_flag = '0'
WHERE T1.encounter_id = #{encounterId}
AND T1.status_enum IN (#{planned}
, #{billable}
, #{billed}
, #{refunding}
, #{refunded}
, #{partRefund})
AND T1.context_enum != #{register}
AND T1.entered_date &gt;= #{startTime}
AND T1.entered_date &lt;= #{endTime}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.chargemanage.mapper.OutpatientChargeAppMapper">
<select id="selectEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T4.encounter_id,
T4.encounter_bus_no,
T4.patient_id,
T4.reception_time,
T4.patient_name,
T4.patient_bus_no,
T4.gender_enum,
T4.birth_date,
T4.id_card,
T4.patient_py_str,
T4.patient_wb_str,
T4.status_enum
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T3.status_enum
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
INNER JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
GROUP BY T1.id,
T1.bus_no,
T1.patient_id,
T1.reception_time,
T1.delete_flag,
T1.tenant_id,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectEncounterPatientPrescription"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPrescriptionDto">
SELECT T1.encounter_id,
T1.id,
T1.patient_id,
T1.context_enum,
T1.status_enum,
T1.requesting_org_id,
T1.quantity_value,
T1.quantity_unit,
T1.unit_price,
T1.total_price,
T1.prescription_no,
T1.bus_no,
T1.entered_date,
T1.account_id,
T1.service_table,
T5.enterer_id,
T5.bill_date,
T6.contract_no,
T7.med_type_code,
T8.contract_name,
CASE WHEN T1.context_enum = #{activity} THEN T2."name"
WHEN T1.context_enum = #{medication} THEN T3."name"
WHEN T1.context_enum = #{device} THEN T4."name"
END AS item_name,
CASE WHEN T1.context_enum = #{activity} THEN T2.yb_no
WHEN T1.context_enum = #{medication} THEN T3.yb_no
WHEN T1.context_enum = #{device} THEN T4.yb_no
END AS yb_no,
CASE WHEN T1.context_enum = #{activity} THEN T2.id
WHEN T1.context_enum = #{medication} THEN T3.id
WHEN T1.context_enum = #{device} THEN T4.id
END AS item_id
FROM adm_charge_item AS T1
LEFT JOIN wor_activity_definition AS T2
ON T1.context_enum = #{activity}
AND T1.product_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_definition AS T3
ON T1.context_enum = #{medication}
AND T1.product_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.context_enum = #{device}
AND T1.product_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T5
ON T1.id::TEXT = ANY(string_to_array(T5.charge_item_ids, ','))
AND T5.delete_flag = '0'
AND T5.status_enum = 1
LEFT JOIN adm_account AS T6
ON T1.account_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS T7
ON T1.encounter_id = T7.encounter_id
AND T1.condition_id = T7.condition_id
AND T7.delete_flag = '0'
LEFT JOIN fin_contract AS T8
ON T6.contract_no = T8.bus_no
AND T8.delete_flag = '0'
WHERE T1.encounter_id = #{encounterId}
AND T1.status_enum IN (#{planned} ,#{billable} ,#{billed} ,#{refunding} ,#{refunded} ,#{partRefund})
AND T1.context_enum != #{register}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.chargemanage.mapper.OutpatientPricingAppMapper">
</mapper>

View File

@@ -0,0 +1,475 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.chargemanage.mapper.OutpatientRefundAppMapper">
<resultMap id="encounterPatientRefundMap"
type="com.openhis.web.chargemanage.dto.EncounterPatientRefundDto">
<!--患者退费项目信息-->
<result property="paymentId" column="payment_id"/>
<result property="entererId" column="enterer_id"/>
<result property="encounterId" column="encounter_id"/>
<result property="patientId" column="patient_id"/>
<result property="prescriptionNo" column="prescription_no"/>
<result property="busNo" column="bus_no"/>
<result property="contractNo" column="contract_no"/>
<result property="billDate" column="bill_date"/>
<result property="chargeItemIds" column="charge_item_ids"/>
<result property="itemName" column="item_name"/>
<result property="orgName" column="org_name"/>
<result property="entererName" column="enterer_name"/>
<result property="chargeStatus" column="charge_status"/>
<result property="paymentStatus" column="payment_status"/>
<result property="dispenseStatus" column="dispense_status"/>
<result property="serviceStatus" column="service_status"/>
<result property="quantityValue" column="quantity_value"/>
<result property="dispenseQuantity" column="dispense_quantity"/>
<result property="quantityUnit" column="quantity_unit"/>
<result property="unitPrice" column="unit_price"/>
<result property="totalPrice" column="total_price"/>
<result property="requestId" column="request_id"/>
<result property="dispenseId" column="dispense_id"/>
<result property="serviceTable" column="service_table"/>
<!--支付明细-->
<collection property="paymentDetailList"
ofType="com.openhis.yb.dto.PaymentDetailDto">
<!--唯一值,避免相同数据合并-->
<id column="payment_detail_id"/>
<result property="payEnum" column="pay_enum"/>
<!-- <result property="payLevelEnum" column="pay_level_enum"/>-->
<result property="amount" column="amount"/>
<result property="returnAmount" column="return_amount"/>
<result property="chargeAmount" column="charge_amount"/>
</collection>
</resultMap>
<select id="selectEncounterPatientPayment"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto">
SELECT T1.id,
T1.status_enum,
T1.relation_id,
T1.payment_no,
T1.payment_enum,
T1.location_id,
T1.expiration_date,
T1.tendered_amount,
T1.returned_amount,
T1.contract_no,
T2.prescription_no,
T2.account_id
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
-- 因为T2.id是long型T1.charge_item_ids是例如 [1,2] 的string类型所以需要先转类型再匹配
ON T2.id::TEXT = ANY(string_to_array(T1.charge_item_ids, ','))
AND T2.delete_flag = '0'
WHERE T1.encounter_id =#{encounterId}
AND T1.status_enum IN (#{success})
AND T1.delete_flag = '0'
</select>
<select id="selectRefundItem" resultType="com.openhis.web.chargemanage.dto.RefundItemDto">
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T2.bus_no,
T2.prescription_no,
T2.quantity,
T2.medication_id AS item_id,
T2.unit_code,
T1.unit_price,
T1.total_price,
T3.status_enum AS dispense_status,
T3.not_performed_reason_enum AS not_performed_reason,
0 AS service_status,
T3.id AS dispense_id,
T2.id AS request_id,
T7.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN med_medication_request AS T2
ON T2.id = T1.service_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication_dispense AS T3
ON T3.med_req_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T7
ON T1.product_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{medMedicationRequest}
AND T1.delete_flag = '0'
AND T2.refund_medicine_id IS NULL
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
UNION
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T4.bus_no,
T4.prescription_no,
T4.quantity,
T4.device_def_id AS item_id,
T4.unit_code,
T1.unit_price,
T1.total_price,
T5.status_enum AS dispense_status,
T5.not_performed_reason_enum AS not_performed_reason,
0 AS service_status,
T5.id AS dispense_id,
T4.id AS request_id,
T8.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN wor_device_request AS T4
ON T4.id = T1.service_id
AND T4.delete_flag = '0'
LEFT JOIN wor_device_dispense AS T5
ON T5.device_req_id = T4.id
AND T5.delete_flag = '0'
LEFT JOIN adm_device_definition AS T8
ON T1.product_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{worDeviceRequest}
AND T4.refund_device_id IS NULL
AND T1.delete_flag = '0'
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
UNION
SELECT T1.id AS charge_item_id,
T1.service_table,
T1.service_id,
T6.bus_no,
T6.prescription_no,
T6.quantity,
T6.activity_id AS item_id,
T6.unit_code,
T1.unit_price,
T1.total_price,
0 AS dispense_status,
null AS not_performed_reason,
T6.status_enum AS service_status,
null AS dispense_id,
T6.id AS request_id,
T9.name AS item_name,
T10.id AS payment_id,
T1.status_enum AS refund_status
FROM adm_charge_item AS T1
LEFT JOIN wor_service_request AS T6
ON T6.id = T1.service_id
AND T6.delete_flag = '0'
LEFT JOIN wor_activity_definition AS T9
ON T1.product_id = T9.id
AND T9.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T10
ON T1.id::TEXT = ANY(string_to_array(T10.charge_item_ids, ','))
AND T10.delete_flag = '0'
AND T10.status_enum = 1
WHERE T1.service_table = #{worServiceRequest}
AND T1.delete_flag = '0'
<if test="chargeItemIdList != null and !chargeItemIdList.isEmpty()">
AND T1.id IN
<foreach collection="chargeItemIdList" item="chargeItemId" separator="," open="(" close=")">
#{chargeItemId}
</foreach>
</if>
</select>
<select id="selectBilledEncounterPatientPage"
resultType="com.openhis.web.chargemanage.dto.EncounterPatientPageDto">
SELECT T8.encounter_id,
T8.encounter_bus_no,
T8.status_enum,
T8.start_time,
T8.patient_name,
T8.patient_bus_no,
T8.gender_enum,
T8.birth_date,
T8.id_card,
T8.patient_py_str,
T8.patient_wb_str,
T8.type_code,
T8.category_enum,
T8.total_amount,
T8.max_bill_date,
T8.insurance_amount,
T8.self_amount
FROM (
SELECT T1.id AS encounter_id,
T1.bus_no AS encounter_bus_no,
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T3.status_enum,
T2."name" AS patient_name,
T2.bus_no AS patient_bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T4.type_code,
T5.category_enum,
SUM(T6.tendered_amount) AS total_amount,
MAX(T6.bill_date) AS max_bill_date,
CASE WHEN T7.account_code = #{insurance} THEN SUM(T7.amount) ELSE 0 END AS insurance_amount,
CASE WHEN T7.account_code != #{insurance} THEN SUM(T7.amount) ELSE 0 END AS self_amount
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3
ON T3.encounter_id = T1.id
AND T3.delete_flag = '0'
LEFT JOIN adm_account AS T4
ON T4.id = T3.account_id
AND T4.delete_flag = '0'
LEFT JOIN fin_contract AS T5
ON T5.bus_no = T4.contract_no
AND T5.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T6
ON T6.encounter_id = T1.id
AND T6.status_enum = 1
AND T6.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail AS T7
ON T7.reconciliation_id = T6.id
AND T7.delete_flag = '0'
WHERE T3.status_enum IN (#{billed}, #{refunding}, #{refunded}, #{partRefund})
AND T3.refund_id IS NULL
AND T1.class_enum = #{amb}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T1.bus_no,
T1.start_time,
T1.delete_flag,
T1.tenant_id,
T3.status_enum,
T2."name",
T2.bus_no,
T2.gender_enum,
T2.birth_date,
T2.id_card,
T2.py_str,
T2.wb_str,
T4.type_code,
T5.category_enum,
T7.account_code
) AS T8
${ew.customSqlSegment}
ORDER BY T8.max_bill_date DESC
</select>
<select id="selectEncounterPatientRefund" resultMap="encounterPatientRefundMap">
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
mmr.prescription_no,
mmr.id AS request_id,
dis.status_enum AS dispense_status,
0 AS service_status,
dis.dispense_quantity,
dis.id AS dispense_id,
mmd."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN med_medication_request mmr
ON aci.service_id = mmr.refund_medicine_id
AND mmr.refund_medicine_id IS NOT NULL
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON mmr.id = dis.med_req_id
AND dis.delete_flag = '0'
INNER JOIN med_medication_definition mmd
ON aci.product_id = mmd.id
AND mmd.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids, ','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{medMedicationRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
UNION
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
wdr.prescription_no,
wdr.id AS request_id,
wdd.status_enum AS dispense_status,
0 AS service_status,
wdd.dispense_quantity,
wdd.id AS dispense_id,
dev."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN wor_device_request wdr
ON aci.service_id = wdr.refund_device_id
AND wdr.refund_device_id IS NOT NULL
AND wdr.delete_flag = '0'
LEFT JOIN wor_device_dispense wdd
ON wdr.id = wdd.device_req_id
AND wdd.delete_flag = '0'
INNER JOIN adm_device_definition dev
ON aci.product_id = dev.id
AND dev.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids, ','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{worDeviceRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
UNION
SELECT aci.encounter_id,
aci.bus_no,
aci.status_enum AS charge_status,
aci.quantity_unit,
aci.quantity_value,
aci.unit_price,
aci.total_price,
aci.service_table,
wsr.prescription_no,
wsr.id AS request_id,
0 AS dispense_status,
wsr.status_enum AS service_status,
0 AS dispense_quantity,
null AS dispense_id,
wad."name" AS item_name,
fpr.id AS payment_id,
fpr.enterer_id,
fpr.patient_id,
fpr.status_enum AS payment_status,
fpr.contract_no,
fpr.bill_date,
fpr.charge_item_ids,
fprd.id AS payment_detail_id,
fprd.target_enum,
fprd.account_id,
fprd.account_code,
fprd.pay_enum,
fprd.pay_level_enum,
fprd.amount,
fprd.return_amount,
fprd.charge_amount,
ao."name" AS org_name,
ap."name" AS enterer_name
FROM adm_charge_item aci
LEFT JOIN wor_service_request wsr
ON aci.service_id = wsr.id
AND wsr.refund_service_id IS NOT NULL
AND wsr.delete_flag = '0'
INNER JOIN wor_activity_definition wad
ON aci.product_id = wad.id
AND wad.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation fpr
ON aci.id::TEXT = ANY(string_to_array(fpr.charge_item_ids,','))
AND fpr.status_enum = 1
AND fpr.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail fprd
ON fpr.id = fprd.reconciliation_id
AND fprd.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = aci.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE aci.encounter_id = #{encounterId}
AND aci.status_enum IN (#{partRefund}
, #{refunded}
, #{refunding})
AND aci.service_table = #{worServiceRequest}
AND aci.refund_id IS NULL
AND aci.delete_flag = '0'
AND TO_CHAR(fpr.bill_date
, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{billDateSTime}
AND #{billDateETime}
</select>
</mapper>

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.chargemanage.mapper.OutpatientRegistrationAppMapper">
<select id="getPractitionerMetadataPage" resultType="com.openhis.web.chargemanage.dto.PractitionerMetadata">
SELECT T3.tenant_id,
T3.ID,
T3.NAME,
T3.gender_enum,
T3.py_str,
T3.wb_str
FROM (
SELECT T1.tenant_id,
T1.ID,
T1.NAME,
T1.gender_enum,
T1.py_str,
T1.wb_str
FROM adm_practitioner AS T1
WHERE T1.delete_flag = '0'
AND EXISTS(SELECT 1
FROM adm_practitioner_role AS T2
WHERE T2.practitioner_id = T1.ID
AND T2.org_id = #{orgId}
AND T2.ROLE_code = #{RoleCode})
) AS T3
${ew.customSqlSegment}
</select>
<select id="getNumByPatientIdAndOrganizationId" resultType="Integer">
SELECT COUNT
(1)
FROM adm_encounter
WHERE delete_flag = '0'
AND patient_id = #{patientId}
AND service_type_id = #{serviceTypeId}
AND status_enum != #{cancelled}
AND create_time
> CURRENT_DATE
</select>
<select id="getCurrentDayEncounter" resultType="com.openhis.web.chargemanage.dto.CurrentDayEncounterDto">
SELECT T9.tenant_id,
T9.encounter_id,
T9.organization_id,
T9.organization_name,
T9.healthcare_name,
T9.practitioner_user_id,
T9.practitioner_name,
T9.contract_name,
T9.patient_id,
T9.patient_name,
T9.gender_enum,
T9.id_card,
T9.status_enum,
T9.register_time,
T9.total_price,
T9.account_name,
T9.enterer_name,
T9.charge_item_ids,
T9.payment_id,
T9.picture_url,
T9.birth_date
from (
SELECT T1.tenant_id AS tenant_id,
T1.id AS encounter_id,
T1.organization_id AS organization_id,
T2.NAME AS organization_name,
T3.NAME AS healthcare_name,
T5.user_id AS practitioner_user_id,
T5.NAME AS practitioner_name,
T7.contract_name AS contract_name,
T8.id AS patient_id,
T8.NAME AS patient_name,
T8.gender_enum AS gender_enum,
T8.id_card AS id_card,
T1.status_enum AS status_enum,
T1.create_time AS register_time,
T10.total_price,
T11."name" AS account_name,
T12."name" AS enterer_name,
T13.charge_item_ids,
T13.id AS payment_id,
ai.picture_url AS picture_url,
T8.birth_date AS birth_date
FROM adm_encounter AS T1
LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2.ID AND T2.delete_flag = '0'
LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3.ID AND T3.delete_flag = '0'
LEFT JOIN (
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY create_time ASC) AS rn
FROM adm_encounter_participant
WHERE delete_flag = '0'
AND tenant_id = 1
AND type_code = #{participantType}
) t
WHERE rn = 1
) AS T4 ON T1.ID = T4.encounter_id
LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id AND T5.delete_flag = '0'
LEFT JOIN adm_account AS T6
ON T1.ID = T6.encounter_id AND T6.delete_flag = '0' AND T6.encounter_flag = '1'
LEFT JOIN fin_contract AS T7 ON T6.contract_no = T7.bus_no AND T7.delete_flag = '0'
LEFT JOIN adm_patient AS T8 ON T1.patient_id = T8.ID AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item AS T10 ON T1.id = T10.encounter_id AND T10.delete_flag = '0'
LEFT JOIN adm_account AS T11 ON T10.account_id = T11.id AND T11.delete_flag = '0'
LEFT JOIN adm_practitioner AS T12 ON T12.ID = T10.enterer_id AND T12.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation T13
ON T10.id::TEXT = ANY(string_to_array(T13.charge_item_ids,','))
AND T13.delete_flag = '0'
AND T13.status_enum = ${paymentStatus}
LEFT JOIN adm_invoice AS ai
ON ai.reconciliation_id = T13.id AND ai.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.class_enum = #{classEnum}
-- AND T1.create_time
-- > CURRENT_DATE
AND T10.context_enum = #{register}
) AS T9
${ew.customSqlSegment}
ORDER BY T9.register_time DESC
</select>
<select id="getTmpActivityList" resultType="com.openhis.web.personalization.dto.ActivityDeviceDto">
SELECT dev_act_id,
quantity
FROM tmp_activity_device
WHERE delete_flag = '0'
AND item_no = #{itemId}
AND dev_act_table = #{devActable}
</select>
</mapper>

View File

@@ -0,0 +1,266 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.common.mapper.CommonAppMapper">
<select id="selectInventoryItemList" resultType="com.openhis.web.common.dto.InventoryItemDto">
SELECT ii.tenant_id,
ii.item_type,
ii.category_code,
ii.part_percent,
ii.definition_id,
ii.name,
ii.item_bus_no,
ii.py_str,
ii.wb_str,
ii.yb_no,
ii.product_name,
ii.unit_code,
ii.min_unit_code,
ii.manufacturer,
ii.volume,
ii.supplier,
ii.item_table_name,
ii.lot_number,
ii.org_location_id,
ii.purchase_amount
FROM ( SELECT T1.tenant_id,
#{medicine} AS item_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.id AS definition_id,
T1."name" AS "name",
T1.bus_no AS item_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
T1.merchandise_name AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.manufacturer_text AS manufacturer,
T2.total_volume AS volume,
T3."name" AS supplier,
<choose>
<when test="purchaseFlag != 1">
T7.item_table AS item_table_name,
T7.lot_number,
T7.location_id AS org_location_id,
NULL AS purchase_amount
</when>
<otherwise>
NULL AS item_table_name,
NULL AS lot_number,
NULL AS org_location_id,
T9.amount AS purchase_amount
</otherwise>
</choose>
FROM med_medication_definition AS T1
LEFT JOIN med_medication AS T2
ON T2.medication_def_id = T1.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T3
ON T3.ID = T1.supply_id
AND T3.delete_flag = '0'
<if test="purchaseFlag != 1">
LEFT JOIN wor_inventory_item AS T7
ON T7.item_id = T1.id
AND T7.delete_flag = '0'
</if>
<if test="purchaseFlag != 0">
LEFT JOIN adm_charge_item_definition AS T8
ON T8.instance_id = T1.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T9
ON T9.definition_id = T8.id
AND T9.delete_flag = '0'
</if>
WHERE T1.delete_flag = '0'
AND T2.status_enum != #{retired}
<if test="purchaseFlag != 1">
AND T7.item_id IS NOT NULL -- 确保连接有效性
AND T7.item_table = #{medicationTableName}
</if>
<if test="purchaseFlag != 0">
AND T9.condition_code = #{purchase}
</if>
UNION ALL
SELECT T1.tenant_id,
#{device} AS item_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.id AS definition_id,
T1."name" AS "name",
T1.bus_no AS item_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.manufacturer_text AS manufacturer,
T1."size" AS volume,
T2."name" AS supplier,
<choose>
<when test="purchaseFlag != 1">
T7.item_table AS item_table_name,
T7.lot_number,
T7.location_id AS org_location_id,
NULL AS purchase_amount
</when>
<otherwise>
NULL AS item_table_name,
NULL AS lot_number,
NULL AS org_location_id,
T9.amount AS purchase_amount
</otherwise>
</choose>
FROM adm_device_definition AS T1
LEFT JOIN adm_supplier AS T2
ON T2.ID = T1.supply_id
AND T2.delete_flag = '0'
<if test="purchaseFlag != 1">
LEFT JOIN wor_inventory_item AS T7
ON T7.item_id = T1.id
AND T7.delete_flag = '0'
</if>
<if test="purchaseFlag != 0">
LEFT JOIN adm_charge_item_definition AS T8
ON T8.instance_id = T1.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T9
ON T9.definition_id = T8.id
AND T9.delete_flag = '0'
</if>
WHERE T1.delete_flag = '0'
AND T1.status_enum != #{retired}
<if test="purchaseFlag != 1">
AND T7.item_id IS NOT NULL -- 确保连接有效性
AND T7.item_table = #{deviceTableName}
</if>
<if test="purchaseFlag != 0">
AND T9.condition_code = #{purchase}
</if>
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectInventoryItemInfo" resultType="com.openhis.web.common.dto.LocationInventoryDto">
SELECT T1.item_id,
T1.item_table,
SUM(CASE WHEN T1.location_id = #{objLocationId} THEN T1.quantity ELSE 0 END) AS obj_quantity,
SUM(CASE WHEN T1.location_id = #{orgLocationId} THEN T1.quantity ELSE 0 END) AS org_quantity,
T1.unit_code,
T1.production_date,
T1.lot_number,
T1.expiration_date,
MAX(T2."name") AS location_name,
MAX(T3."name") AS location_store_name,
T5.amount AS price,
T1.supplier_id,
CASE WHEN T1.item_table = #{medicationTableName}
THEN ( SELECT T7.yb_no
FROM med_medication_definition AS T7
WHERE T1.item_id = T7.id
AND T7.delete_flag = '0')
WHEN T1.item_table = #{deviceTableName}
THEN ( SELECT T8.yb_no
FROM adm_device_definition AS T8
WHERE T1.item_id = T8.id
AND T8.delete_flag = '0'
) ELSE null END AS yb_no, --医保编码
CASE WHEN T1.item_table = #{medicationTableName}
THEN ( SELECT T7.manufacturer_text
FROM med_medication_definition AS T7
WHERE T1.item_id = T7.id
AND T7.delete_flag = '0')
WHEN T1.item_table = #{deviceTableName}
THEN ( SELECT T8.manufacturer_text
FROM adm_device_definition AS T8
WHERE T1.item_id = T8.id
AND T8.delete_flag = '0')
ELSE null END AS manufacturer,--生产厂家
T6.name AS supplier_name
FROM wor_inventory_item AS T1
LEFT JOIN adm_location AS T2
ON T2.id = T1.location_id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T3.id = T1.location_store_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T4
ON T4.instance_id = T1.item_id
AND T4.delete_flag = '0'
-- 使用子查询确保T5唯一记录 --
LEFT JOIN (
SELECT * FROM (
SELECT definition_id,
amount,
ROW_NUMBER() OVER (PARTITION BY definition_id ORDER BY id DESC ) AS rn -- 按ID取最新记录按需调整排序
FROM adm_charge_item_def_detail
WHERE delete_flag = '0'
AND condition_code = '1'--1:批号进价
) AS t
WHERE rn = 1 -- 确保每个分组只取一条记录
) AS T5 ON T5.definition_id = T4.id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
AND T6.delete_flag = '0'
WHERE T1.item_id = #{itemId}
AND T1.inventory_status_enum != 3
AND T1.delete_flag = '0'
<choose>
<when test="lotNumber != null">
AND T1.lot_number = #{lotNumber}
</when>
</choose>
<choose>
<when test="objLocationId != null and objLocationId != ''">
AND T1.location_id IN (#{orgLocationId}, #{objLocationId})
</when>
<otherwise>
AND T1.location_id = #{orgLocationId}
</otherwise>
</choose>
GROUP BY T1.item_id,
T1.item_table,
T1.unit_code,
T1.production_date,
T1.expiration_date,
T1.lot_number,
T5.amount,
T1.supplier_id,
T6.name
ORDER BY T1.lot_number DESC
</select>
<select id="getInfoByTraceNo" resultType="com.openhis.administration.domain.TraceNoManage">
SELECT id,
item_table,
item_id,
location_type_enum,
location_id,
location_store_id,
lot_number,
trace_no,
status_enum,
unit_code,
operation_type,
create_by,
create_time,
update_by,
update_time,
tenant_id,
delete_flag
FROM adm_trace_no_manage
WHERE trace_no like #{traceNo}
AND (trace_no) IN (
SELECT trace_no
FROM adm_trace_no_manage
WHERE trace_no like #{traceNo}
AND delete_flag = '0'
GROUP BY trace_no
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 进库次数
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 出库次数
)
AND delete_flag = '0'
ORDER BY create_time DESC LIMIT 1
</select>
</mapper>

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.ActivityDefinitionManageMapper">
<select id="getDiseaseTreatmentPage" parameterType="java.util.Map"
resultType="com.openhis.web.datadictionary.dto.DiagnosisTreatmentDto">
SELECT
T3.id,
T3.category_code,
T3.bus_no,
T3.name,
T3.py_str,
T3.wb_str,
T3.type_enum,
T3.permitted_unit_code,
T3.org_id,
T3.location_id,
T3.yb_flag,
T3.yb_no,
T3.yb_match_flag,
T3.status_enum,
T3.body_site_code,
T3.specimen_code,
T3.description_text,
T3.rule_id,
T3.tenant_id,
T3.item_type_code,
T3.yb_type,
T3.retail_price,
T3.maximum_retail_price,
T3.chrgitm_lv,--医保等级
T3.children_json,--子项json
T3.pricing_flag--划价标记
FROM
(
SELECT
T1.id,
T1.category_code,
T1.bus_no,
T1.name,
T1.py_str,
T1.wb_str,
T1.type_enum,
T1.permitted_unit_code,
T1.org_id,
T1.location_id,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag,
T1.status_enum,
T1.body_site_code,
T1.specimen_code,
T1.description_text,
T1.rule_id,
T1.tenant_id,
T1.chrgitm_lv,--医保等级
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '4'--4:限制
AND T5.instance_id = T1.id
AND T5.instance_table = 'wor_activity_definition'
) as maximum_retail_price,--最高零售价
T1.children_json,--子项json
T1.pricing_flag--划价标记
FROM wor_activity_definition T1
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
<where>
T1.delete_flag = '0'
AND T2.instance_table = 'wor_activity_definition'
</where>
ORDER BY T1.bus_no DESC
) AS T3
${ew.customSqlSegment}
</select>
<select id="getDiseaseTreatmentOne" resultType="com.openhis.web.datadictionary.dto.DiagnosisTreatmentDto">
SELECT
T1.id,
T1.category_code,
T1.bus_no,
T1.name,
T1.py_str,
T1.wb_str,
T1.type_enum,
T1.permitted_unit_code,
T1.org_id,
T1.location_id,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag,
T1.status_enum,
T1.body_site_code,
T1.specimen_code,
T1.description_text,
T1.rule_id,
T1.tenant_id,
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价,
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '4'--4:限制
AND T5.instance_id = T1.id
AND T5.instance_table = 'wor_activity_definition'
) as maximum_retail_price,--最高零售价
T1.chrgitm_lv,--医保等级
T1.children_json,--子项json
T1.pricing_flag--划价标记
FROM wor_activity_definition T1
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
<where>
T1.delete_flag = '0'
AND T2.instance_table = 'wor_activity_definition'
<if test="id!= null">
AND T1.id = #{id}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.ChargeItemDefSearchMapper">
<select id="getMedList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
T5.charge_name,
T5.status_enum,
T5.status_enum_text,
T5.description,
T5.effective_start,
T5.effective_end,
T5.instance_table,
T5.price,
T5.create_time,
T5.update_time,
T5.item_id,
T5.condition_rule_id,
T5.condition_value,
T5.condition_code,
T5.priority,
T5.amount,
T5.item_no,
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code,
T5.part_percent,
T5.total_volume,
T5.lot_number
FROM (
SELECT
T1.id,
T1.charge_name,
T1.status_enum,
CASE
WHEN T1.status_enum = 1 THEN '草稿'
WHEN T1.status_enum = 2 THEN '有效'
WHEN T1.status_enum = 3 THEN '停用'
WHEN T1.status_enum = 4 THEN '未知'
END AS status_enum_text,
T1.description,
T1.effective_start,
T1.effective_end,
T1.instance_table,
T1.price,
T1.create_time,
T1.update_time,
T2.id AS item_id,
T2.condition_rule_id,
T2.condition_value,
T2.condition_code,
T2.priority,
T2.amount,
T3.bus_no AS item_no,
T3.py_str,
T3.wb_str,
T3.unit_code,
T1.yb_type AS category_code,
T3.part_percent,
T4.total_volume,
T4.lot_number
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_detail T2
ON T1.id = T2.definition_id
LEFT JOIN med_medication_definition T3
ON T1.instance_id = T3.id
LEFT JOIN med_medication T4
ON T3.id = T4.medication_def_id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
<select id="getDevList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
T5.charge_name,
T5.status_enum,
T5.status_enum_text,
T5.description,
T5.effective_start,
T5.effective_end,
T5.instance_table,
T5.price,
T5.create_time,
T5.update_time,
T5.item_id,
T5.condition_rule_id,
T5.condition_value,
T5.condition_code,
T5.priority,
T5.amount,
T5.item_no,
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code,
T5.part_percent,
T5.lot_number
FROM (
SELECT
T1.id,
T1.charge_name,
T1.status_enum,
CASE
WHEN T1.status_enum = 1 THEN '草稿'
WHEN T1.status_enum = 2 THEN '有效'
WHEN T1.status_enum = 3 THEN '停用'
WHEN T1.status_enum = 4 THEN '未知'
END AS status_enum_text,
T1.description,
T1.effective_start,
T1.effective_end,
T1.instance_table,
T1.price,
T1.create_time,
T1.update_time,
T2.id AS item_id,
T2.condition_rule_id,
T2.condition_value,
T2.condition_code,
T2.priority,
T2.amount,
T3.bus_no AS item_no,
T3.py_str,
T3.wb_str,
T3.unit_code AS unit_code,
T1.yb_type AS category_code,
T3.part_percent,
T4.lot_number
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_detail T2
ON T1.id = T2.definition_id
LEFT JOIN adm_device_definition T3
ON T1.instance_id = T3.id
LEFT JOIN adm_device T4
ON T3.id = T4.device_def_id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
<select id="getActList" resultType="com.openhis.web.datadictionary.dto.ChargeItemDefPageDto">
SELECT
T5.id,
T5.charge_name,
T5.status_enum,
T5.status_enum_text,
T5.description,
T5.effective_start,
T5.effective_end,
T5.instance_table,
T5.price,
T5.create_time,
T5.update_time,
T5.item_id,
T5.condition_rule_id,
T5.condition_value,
T5.condition_code,
T5.priority,
T5.amount,
T5.item_no,
T5.py_str,
T5.wb_str,
T5.unit_code,
T5.category_code
FROM (
SELECT
T1.id,
T1.charge_name,
T1.status_enum,
CASE
WHEN T1.status_enum = 1 THEN '草稿'
WHEN T1.status_enum = 2 THEN '有效'
WHEN T1.status_enum = 3 THEN '停用'
WHEN T1.status_enum = 4 THEN '未知'
END AS status_enum_text,
T1.description,
T1.effective_start,
T1.effective_end,
T1.instance_table,
T1.price,
T1.create_time,
T1.update_time,
T2.id AS item_id,
T2.condition_rule_id,
T2.condition_value,
T2.condition_code,
T2.priority,
T2.amount,
T3.bus_no AS item_no,
T3.py_str,
T3.wb_str,
T3.permitted_unit_code AS unit_code,
T1.yb_type AS category_code
FROM
adm_charge_item_definition T1
LEFT JOIN adm_charge_item_def_detail T2
ON T1.id = T2.definition_id
LEFT JOIN wor_activity_definition T3
ON T1.instance_id = T3.id
ORDER BY T1.create_time DESC) T5
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,180 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.DeviceManageMapper">
<select id="getDevicePage" parameterType="java.util.Map"
resultType="com.openhis.web.datadictionary.dto.DeviceManageDto">
SELECT
T3.id,
T3.bus_no,
T3.name,
T3.py_str,
T3.wb_str,
T3.category_code,
T3.type_code,
T3.unit_code,
T3.size,
T3.part_percent,
T3.min_unit_code,
T3.org_id,
T3.location_id,
T3.model_number,
T3.hvcm_flag,
T3.sales_unit_code,
T3.approval_number,
T3.yb_flag,
T3.yb_no,
T3.yb_org_no,
T3.yb_match_flag,
T3.status_enum,
T3.manufacturer_id,
T3.manufacturer_text,
T3.supply_id,
T3.description,
T3.jurisdiction,
T3.version,
T3.substance_text,
T3.allergen_flag,
T3.tenant_id,
T3.item_type_code,
T3.yb_type,
T3.rx_flag,--处方标志
T3.chrgitm_lv,--医保等级
T3.retail_price,
T3.purchase_price,
T3.maximum_retail_price
FROM
(
SELECT
T1.id,
T1.bus_no,
T1.name,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.type_code,
T1.unit_code,
T1.size,
T1.part_percent,
T1.min_unit_code,
T1.org_id,
T1.location_id,
T1.model_number,
T1.hvcm_flag,
T1.sales_unit_code,
T1.approval_number,
T1.yb_flag,
T1.yb_no,
T1.yb_org_no,
T1.yb_match_flag,
T1.status_enum,
T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id,
T1.description,
T1.jurisdiction,
T1.version,
T1.substance_text,
T1.allergen_flag,
T1.tenant_id,
T1.rx_flag,--处方标志
T1.chrgitm_lv,--医保等级
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价,
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '2'--2:采购价
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
) as purchase_price,--购入价
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '4'--4:限制
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
) as maximum_retail_price--最高零售价
FROM adm_device_definition T1
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
<where>
T1.delete_flag = '0'
AND T2.instance_table = 'adm_device_definition'
</where>
ORDER BY T1.bus_no
) AS T3
${ew.customSqlSegment}
</select>
<select id="getOne" resultType="com.openhis.web.datadictionary.dto.DeviceManageDto">
SELECT
T1.id,
T1.bus_no,
T1.name,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.type_code,
T1.unit_code,
T1.size,
T1.part_percent,
T1.min_unit_code,
T1.org_id,
T1.location_id,
T1.model_number,
T1.hvcm_flag,
T1.sales_unit_code,
T1.approval_number,
T1.yb_flag,
T1.yb_no,
T1.yb_org_no,
T1.yb_match_flag,
T1.status_enum,
T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id,
T1.description,
T1.jurisdiction,
T1.version,
T1.substance_text,
T1.allergen_flag,
T1.tenant_id,
T1.rx_flag,--处方标志
T1.chrgitm_lv,--医保等级
T1.item_min_quantity,
T1.item_max_quantity,
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价,
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '2'--2:采购价
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
) as purchase_price,--购入价
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '4'--4:限制
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
) as maximum_retail_price--最高零售价
FROM adm_device_definition T1
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
<where>
T1.delete_flag = '0'
AND T2.instance_table = 'adm_device_definition'
<if test="id!= null">
AND T1.id = #{id}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
</select>
</mapper>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.ItemDefinitionAppMapper">
<select id="getChargeItemInfo" resultType="com.openhis.web.datadictionary.dto.ItemDefinitionDto">
SELECT
cii.tenant_id,
cii.ID,
cii.charge_name,
cii.status_enum,
cii.org_id,
cii.type_code,
cii.yb_type,
cii.instance_table,
cii.price,
cii.detail_count
FROM
(SELECT
T1.tenant_id,
T1.ID,
T1.charge_name,
T1.status_enum,
T1.org_id,
T1.type_code,
T1.yb_type,
T1.instance_table,
T1.price,
COUNT ( T2.ID ) AS detail_count
FROM
adm_charge_item_definition AS T1
LEFT JOIN adm_charge_item_def_detail AS T2 ON T2.definition_id = T1.ID
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
<if test="chargeItemContext == 1 ">
AND T1.instance_table = #{MED_MEDICATION_DEFINITION}
</if>
<if test="chargeItemContext == 2 ">
AND T1.instance_table = #{ADM_DEVICE_DEFINITION}
</if>
<if test="chargeItemContext == 3 ">
AND (T1.instance_table = #{WOR_ACTIVITY_DEFINITION} OR T1.instance_table = #{ADM_HEALTHCARE_SERVICE})
</if>
GROUP BY T1.tenant_id,
T1.ID,
T1.charge_name,
T1.status_enum,
T1.org_id,
T1.type_code,
T1.yb_type,
T1.instance_table,
T1.price
) AS cii
${ew.customSqlSegment}
</select>
<select id="getChargeItemInfoDetail" resultType="com.openhis.web.datadictionary.dto.ItemDefinitionDetailDto">
SELECT condition_code,
amount
FROM adm_charge_item_def_detail
WHERE delete_flag = '0'
AND definition_id = #{id}
</select>
</mapper>

View File

@@ -0,0 +1,355 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper">
<!-- 药品信息分页查询-->
<select id="getPage" parameterType="java.util.Map"
resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
SELECT
T6.id,
T6.medication_def_id,
T6.status_enum,
T6.org_id,
T6.location_id,
T6.dose_form_code,
T6.total_volume,
T6.ingredient_item,
T6.active_flag,
T6.lot_number,
T6.effective_date,
T6.expiration_date,
T6.method_code,
T6.rate_code,
T6.dose,
T6.dose_unit_code,
T6.max_unit,
T6.definition,
T6.usage_limit,
T6.ddd_code,
T6.ddd_unit_code,
T6.min_rate_code,
T6.max_rate_code,
T6.bus_no,
T6.name,
T6.domain_enum,
T6.version,
T6.name_en,
T6.py_str,
T6.wb_str,
T6.category_code,
T6.merchandise_name,
T6.merchandise_py_str,
T6.merchandise_wb_str,
T6.unit_code,
T6.comprised_text,
T6.ingredient,
T6.part_percent,
T6.dose_from,
T6.approval_number,
T6.yb_match_flag,
T6.yb_no,
T6.pharmacology_category_code,
T6.skin_test_flag,
T6.inject_flag,
T6.manufacturer_id,
T6.manufacturer_text,
T6.supply_id,
T6.restricted_flag,
T6.restricted_scope,
T6.children_flag,
T6.characteristic,
T6.national_drug_code,
T6.part_attribute_enum,
T6.tho_part_attribute_enum,
T6.antibiotic_code,
T6.restricted_enum,
T6.self_flag,
T6.antibiotic_flag,
T6.basic_flag,
T6.remark,
T6.item_min_quantity,--最小库存警戒数量(常规单位)
T6.item_max_quantity,--最大库存警戒数量(常规单位)
T6.yb_type,
T6.type_code,
T6.retail_price,
T6.purchase_price,
T6.retail_price,
T6.chrgitm_lv,--医保等级
T6.rx_flag,--处方标志
T6.tenant_id
FROM
(
SELECT T2.id,
T2.medication_def_id,
T2.status_enum,
T2.org_id,
T2.location_id,
T2.dose_form_code,
T2.total_volume,
T2.ingredient_item,
T2.active_flag,
T2.lot_number,
T2.effective_date,
T2.expiration_date,
T2.method_code,
T2.rate_code,
T2.dose,
T2.dose_unit_code,
T2.max_unit,
T2.definition,
T2.usage_limit,
T2.ddd_code,
T2.ddd_unit_code,
T2.min_rate_code,
T2.max_rate_code,
T1.bus_no,
T1.name,
T1.domain_enum,
T1.version,
T1.name_en,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.merchandise_name,
T1.merchandise_py_str,
T1.merchandise_wb_str,
T1.unit_code,
T1.comprised_text,
T1.ingredient,
T1.part_percent,
T1.dose_from,
T1.approval_number,
T1.yb_match_flag,
T1.yb_no,
T1.pharmacology_category_code,
T1.skin_test_flag,
T1.inject_flag,
T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id,
T1.restricted_flag,
T1.restricted_scope,
T1.children_flag,
T1.characteristic,
T1.national_drug_code,
T1.part_attribute_enum,
T1.tho_part_attribute_enum,
T1.antibiotic_code,
T1.restricted_enum,
T1.self_flag,
T1.antibiotic_flag,
T1.basic_flag,
T1.remark,
T1.item_min_quantity,--最小库存警戒数量(常规单位)
T1.item_max_quantity,--最大库存警戒数量(常规单位)
T5.yb_type,
T5.type_code,
T1.tenant_id,
T1.chrgitm_lv,--医保等级
T1.rx_flag,--处方标志
T5.price as retail_price,--零售价
(SELECT T7.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T7 ON T7.definition_id = T5.id
WHERE T7.condition_code = '2'--2:采购价
AND T5.instance_id = T2.medication_def_id
AND T5.instance_table = 'med_medication_definition'
) as purchase_price,--购入价
(
SELECT T7.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T7 ON T7.definition_id = T5.id
WHERE T7.condition_code = '4'--4:限制
AND T5.instance_id = T2.medication_def_id
AND T5.instance_table = 'med_medication_definition'
) as maximum_retail_price--最高零售价
FROM med_medication_definition T1
LEFT JOIN med_medication T2 ON T1.id = T2.medication_def_id AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T5 ON T2.medication_def_id = T5.instance_id
<where>
T1.delete_flag = '0'
AND T5.instance_table = 'med_medication_definition'
</where>
order by T2.status_enum ASC , T1.bus_no DESC
) AS T6
${ew.customSqlSegment}
</select>
<select id="getOne" resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
SELECT T2.id,
T2.medication_def_id,
T2.status_enum,
T2.org_id,
T2.location_id,
T2.dose_form_code,
T2.total_volume,
T2.ingredient_item,
T2.active_flag,
T2.lot_number,
T2.effective_date,
T2.expiration_date,
T2.method_code,
T2.rate_code,
T2.dose,
T2.dose_unit_code,
T2.max_unit,
T2.definition,
T2.usage_limit,
T2.ddd_code,
T2.ddd_unit_code,
T2.min_rate_code,
T2.max_rate_code,
T1.bus_no,
T1.name,
T1.domain_enum,
T1.version,
T1.name_en,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.merchandise_name,
T1.merchandise_py_str,
T1.merchandise_wb_str,
T1.unit_code,
T1.min_unit_code,
T1.comprised_text,
T1.ingredient,
T1.part_percent,
T1.dose_from,
T1.approval_number,
T1.yb_match_flag,
T1.yb_no,
T1.pharmacology_category_code,
T1.skin_test_flag,
T1.inject_flag,
T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id,
T1.restricted_flag,
T1.restricted_scope,
T1.children_flag,
T1.characteristic,
T1.national_drug_code,
T1.part_attribute_enum,
T1.tho_part_attribute_enum,
T1.antibiotic_code,
T1.restricted_enum,
T1.self_flag,
T1.antibiotic_flag,
T1.basic_flag,
T1.unit_conversion_ratio,--剂量单位换算比
T1.chrgitm_lv,--医保等级
T1.rx_flag,--处方标志
T1.item_min_quantity,--最小库存警戒数量(常规单位)
T1.item_max_quantity,--最大库存警戒数量(常规单位)
T3.type_code,
T3.yb_type,
T3.price as retail_price,--零售价
(SELECT T4.amount
FROM adm_charge_item_definition T3
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T3.id
WHERE T4.condition_code = '2'--2:采购价
AND T3.instance_id = T2.medication_def_id
AND T3.instance_table = 'med_medication_definition'
) as purchase_price,--购入价
(
SELECT T4.amount
FROM adm_charge_item_definition T3
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T3.id
WHERE T4.condition_code = '4'--4:限制
AND T3.instance_id = T2.medication_def_id
AND T3.instance_table = 'med_medication_definition'
) as maximum_retail_price--最高零售价
FROM med_medication_definition T1
LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id
LEFT JOIN adm_charge_item_definition T3 ON T2.medication_def_id = T3.instance_id
<where>
T1.delete_flag = '0'
<if test="id!= null">
AND T2.id = #{id}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
</select>
<select id="getList" resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
SELECT T2.id,
T2.medication_def_id,
T2.status_enum,
T2.org_id,
T2.dose_form_code,
T2.total_volume,
T2.ingredient_item,
T2.active_flag,
T2.lot_number,
T2.effective_date,
T2.expiration_date,
T2.method_code,
T2.rate_code,
T2.dose,
T2.dose_unit_code,
T2.max_unit,
T2.definition,
T1.bus_no,
T1.name,
T1.domain_enum,
T1.version,
T1.name_en,
T1.py_str,
T1.wb_str,
T1.category_code,
T1.merchandise_name,
T1.merchandise_py_str,
T1.merchandise_wb_str,
T1.unit_code,
T1.min_unit_code,
T1.comprised_text,
T1.ingredient,
T1.part_percent,
T1.dose_from,
T1.approval_number,
T1.yb_match_flag,
T1.yb_no,
T1.pharmacology_category_code,
T1.skin_test_flag,
T1.inject_flag,
T1.manufacturer_id,
T1.supply_id,
T1.restricted_flag,
T1.restricted_scope,
T1.children_flag,
T1.characteristic,
T1.item_min_quantity,--最小库存警戒数量(常规单位)
T1.item_max_quantity--最大库存警戒数量(常规单位)
FROM med_medication_definition T1
LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id
<where>
T1.delete_flag = '0'
<if test="searchKey!=null and searchKey!='' ">
AND ( T1.name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.name_en LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.bus_no LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%'))
</if>
<if test="ybMatchFlag!= -1">
AND T1.yb_match_flag = #{ybMatchFlag}
</if>
<if test="statusEnum!= -1">
AND T2.status_enum = #{statusEnum}
</if>
<if test="categoryCode!=null and categoryCode!='' ">
AND T1.category_code = #{categoryCode}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
ORDER BY T1.bus_no
</select>
</mapper>

View File

@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentCommonMapper">
<select id="getDeviceInfo"
resultType="com.openhis.web.departmentmanage.dto.DepartmentDeviceInfoDto">
SELECT T6.id,--物品id
T6.bus_no,-- 药品编号
T6.name,-- 物品名称
T6.py_str,-- 拼音码
T6.total_volume,--规格
T6.unit_code,-- 包装单位
T6.min_unit_code,--最小单位
T6.part_percent,--拆零比
T6.price,--进货单价
T6.retailPrice,--零售价
T6.manufacturer_text,-- 厂家/产地
T6.approval_number,--批准文号
T6.item_min_quantity, --库存最小警戒线
T6.specification_inventory,--规格库存
T6.batch_inventory,--批次库存
T6.lot_number,
T6.production_date,--生产日期
T6.expiration_date,--失效日期
<if test="locationId != null">
T6.location_id,
</if>
T6.supplier_id,
T6.tenant_id
FROM (SELECT T1.id,--物品id
T1.bus_no,-- 药品编号
T1.name,-- 物品名称
T1.py_str,-- 拼音码
T1.size AS total_volume,--规格
T1.unit_code,-- 包装单位
T1.min_unit_code,--最小单位
T1.part_percent,--拆零比
CASE
WHEN T9.lot_number IS NULL THEN
CASE T4.condition_value
WHEN T1.min_unit_code THEN T4.amount * T1.part_percent
ELSE T4.amount END
ELSE CASE T4.condition_value
WHEN T1.min_unit_code THEN T10.amount * T1.part_percent
ELSE T10.amount END
END AS price,--进货单价(大单位)
CASE
WHEN T9.lot_number IS NULL THEN
CASE T5.condition_value
WHEN T1.min_unit_code THEN T5.amount * T1.part_percent
ELSE T5.amount END
ELSE CASE T5.condition_value
WHEN T1.min_unit_code THEN T11.amount * T1.part_percent
ELSE T11.amount END
END AS retailPrice,--零售价(大单位)
T1.manufacturer_text,-- 厂家/产地
T1.approval_number,--批准文号
T1.item_min_quantity * T1.part_percent AS item_min_quantity, --库存最小警戒线(小单位)
COALESCE(CAST(T8.specification_inventory AS DECIMAL(18, 6)), 0.00) AS specification_inventory,--规格库存(小单位)
COALESCE(CAST(T9.batch_inventory AS DECIMAL(18, 6)), 0.00) AS batch_inventory,--批次库存(小单位)
T9.lot_number,
T7.production_date,--生产日期
T7.expiration_date,--失效日期
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T1.tenant_id
FROM adm_device_definition AS T1
LEFT JOIN adm_device AS T2
ON T1.id = T2.device_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3
ON T3.instance_id = T1.id
AND T3.instance_table = 'adm_device_definition'
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T4
ON T4.definition_id = T3.id
AND T4.condition_code = '2'--2:采购价
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T5
ON T5.definition_id = T3.id
AND T5.condition_code = '3'--2:单位
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item T7
ON T7.item_table = 'adm_device_definition'
AND T7.item_id = T1.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
<if test="locationId != null">
i1.location_id,
</if>
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_inventory
FROM wor_inventory_item i1
LEFT JOIN adm_device_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'adm_device_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id
<if test="locationId != null">
,i1.location_id
</if>) T8
ON T8.item_table = 'adm_device_definition'
AND T8.item_id = T1.ID
<if test="locationId != null">
AND T8.location_id = T7.location_id
</if>
LEFT JOIN (SELECT i3.item_table,
i3.item_id,
i3.lot_number,
<if test="locationId != null">
i3.location_id,
</if>
COALESCE(CAST(SUM(i3.quantity) AS DECIMAL(18, 6)), 0.00) AS batch_inventory
FROM wor_inventory_item i3
LEFT JOIN adm_device_definition i4 ON i3.item_id = i4.ID
AND i4.delete_flag = '0'
WHERE i3.item_table = 'adm_device_definition'
AND i3.delete_flag = '0'
GROUP BY i3.item_table,
i3.item_id,
i3.lot_number
<if test="locationId != null">
,i3.location_id
</if>) T9
ON T9.item_table = 'adm_device_definition'
AND T9.item_id = T1.ID
AND T9.lot_number = T7.lot_number
<if test="locationId != null">
AND T9.location_id = T7.location_id
</if>
LEFT JOIN adm_charge_item_def_detail T10
ON T10.definition_id = T3.id
AND T10.condition_code = '1'--1:批号进价
AND T10.condition_value = T9.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T11
ON T11.definition_id = T3.id
AND T11.condition_code = '5'--1:批号售价
AND T11.condition_value = T9.lot_number
AND T11.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="locationId != null">
AND T7.location_id = #{locationId}
</if>
GROUP BY T1.id,
T1.size,
T4.condition_value,
T5.condition_value,
T4.amount,
T5.amount,
T10.amount,
T11.amount,
T8.specification_inventory,
T9.batch_inventory,
T9.lot_number,
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T7.production_date,
T7.expiration_date
<if test="supplierId != null">
HAVING
T8.specification_inventory <![CDATA[ <= ]]> (T1.item_min_quantity * T1.part_percent)
</if>
ORDER BY T1.bus_no) AS T6
${ew.customSqlSegment}
</select>
<select id="getPage"
resultType="com.openhis.web.departmentmanage.dto.DepartmentDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.supplier_id, --供应商
T4.location_type_enum, --仓库类型
T4.location_id, --仓库
T4.applicant_id, --开单人
T4.applicant_name, --开单人
T4.approver_id, --审批人
T4.apply_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum AS location_type_enum,
T1.source_location_id AS location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum AS location_type_enum,
T1.purpose_location_id AS location_id,
</if>
T1.applicant_id,
T2.name AS applicant_name,
T1.approver_id,
T1.apply_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T2.id = T1.applicant_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="originalBusNoFlg != null">
and original_bus_no = ''
</if>
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum,
T1.source_location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum,
T1.purpose_location_id,
</if>
T1.applicant_id,
T2.name,
T1.approver_id,
T1.apply_time,
T1.approval_time
) AS T4
${ew.customSqlSegment}
</select>
<select id="getDetailPage"
resultType="com.openhis.web.departmentmanage.dto.DepartmentDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T2.bus_no AS item_bus_no, --药品编码
T1.item_id, --药品id
T2.name AS item_name, --名称
T2.size AS total_volume, --规格
T1.unit_code, --选择单位
T2.unit_code AS max_unit_code, --常规单位
T2.min_unit_code AS min_unit_code, --最小单位
T2.part_percent, --拆零比
T1.item_quantity, --数量
T1.total_quantity, --合计数量
T1.price, --采购单价
T1.total_price, --采购总价
T1.retail_price, --零售价
T1.total_retail_price, --零价金额
T2.manufacturer_text, --生产厂商文本
T2.approval_number, --批准文号
T1.remake, --备注
T1.reason, --摘要(理由)
T1.reason_code, --理由类型
T1.batch_inventory, --批次库存
T1.specification_inventory, --规格库存
T1.applicant_id,--申请人
T1.apply_time,--申请时间
T1.approver_id,--审批人
T1.approval_time,--审批时间
T1.supplier_id,--供应商
T4.phone,--供应商联系人
T1.status_enum,
T1.type_enum,
T1.category_enum,--单据类型
T1.source_type_enum, --源仓库类型
T1.source_location_id, --源仓库
T1.purpose_type_enum, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.practitioner_id,--仓库员
T1.invoice_no,--发票号
T1.lot_number,--产品批号
T1.start_time,--开始时间
T1.end_time,--结束时间
T1.packaging_condition_enum,--包装情况
T1.acceptance_result_enum,--验收结果
T1.trace_no,--追溯码
T1.trace_no_unit_code,--追溯码包装
T1.occurrence_time,--禁用日期
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN adm_device_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_device AS T3
ON T2.id = T3.device_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier AS T4
ON T4.id = T1.supplier_id
AND T4.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.bus_no,
T2.name,
T2.unit_code,
T2.min_unit_code,
T2.size,
T2.part_percent,
T2.manufacturer_text,
T2.approval_number,
T4.phone
</select>
</mapper>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentIssuanceOrderMapper">
<select id="getInfo"
resultType="com.openhis.web.departmentmanage.dto.DepartmentDetailDto">
SELECT string_agg(T1.id::text, ',' ORDER BY T1.id) AS dispense_ids,--药品发放id
T1.status_enum,--发放状态
CASE T3.category_enum
WHEN 1 THEN 20
WHEN 2 THEN 19 END AS category_enum, --分类
T3.device_def_id AS item_id,--物品编码
T3.unit_code,--物品计量单位
T3.quantity AS item_quantity,--数量
T3.lot_number, --产品批号
T3.perform_location AS source_location_id, --源仓库
T4.organization_id AS purpose_location_id,--目的仓库
T1.performer_id AS approver_id,--审批人
T1.dispense_time AS approval_time, --审批时间
T1.patient_id AS applicant_id,--申请人
T3.req_authored_time AS apply_time --申请时间
FROM wor_device_dispense AS T1
INNER JOIN wor_device_request AS T3
ON T1.device_req_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T2
ON T3.device_def_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_encounter AS T4
ON T3.encounter_id = T4.id
AND T4.delete_flag = '0'
WHERE T1.id IN
<foreach collection="dispenseIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.status_enum = #{dispenseStatus}
AND T1.delete_flag = '0'
GROUP BY T1.status_enum,
T3.category_enum,
T3.device_def_id,
T3.unit_code,
T3.quantity,
T3.lot_number,
T3.perform_location,
T4.organization_id,
T1.performer_id,
T1.dispense_time,
T1.patient_id,
T3.req_authored_time
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentProfitLossOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentRequisitionOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentReturnToWarehouseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentStockInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentStocktakingOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentTransferInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.departmentmanage.mapper.DepartmentTransferOutOrderMapper">
</mapper>

View File

@@ -0,0 +1,498 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationAdviceAppMapper">
<select id="getAdviceBaseInfo" resultType="com.openhis.web.doctorstation.dto.AdviceBaseDto">
SELECT abi.tenant_id,
abi.advice_type,
abi.category_code,
abi.pharmacology_category_code,
abi.part_percent,
abi.unit_conversion_ratio,
abi.part_attribute_enum,
abi.tho_part_attribute_enum,
abi.skin_test_flag,
abi.inject_flag,
abi.advice_definition_id,
abi.advice_name,
abi.advice_bus_no,
abi.py_str,
abi.wb_str,
abi.yb_no,
abi.product_name,
abi.activity_type,
abi.unit_code,
abi.min_unit_code,
abi.volume,
abi.method_code,
abi.rate_code,
abi.org_id,
abi.location_id,
abi.dose,
abi.dose_unit_code,
abi.supplier,
abi.manufacturer,
abi.charge_item_definition_id,
abi.advice_table_name,
abi.position_id,
abi.restricted_flag,
abi.restricted_scope
from (
<if test="adviceTypes == null or adviceTypes.contains(1)">
SELECT T1.tenant_id,
1 AS advice_type,
T1.category_code AS category_code,
T1.pharmacology_category_code AS pharmacology_category_code,
T1.part_percent AS part_percent,
T1.unit_conversion_ratio AS unit_conversion_ratio,
T1.part_attribute_enum AS part_attribute_enum,
T1.tho_part_attribute_enum AS tho_part_attribute_enum,
T1.skin_test_flag AS skin_test_flag,
T1.inject_flag AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
T1.merchandise_name AS product_name,
0 AS activity_type,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T2.total_volume AS volume,
T2.method_code AS method_code,
T2.rate_code AS rate_code,
T2.org_id AS org_id,
T2.location_id AS location_id,
CAST(T2.dose AS TEXT) AS dose,
T2.dose_unit_code AS dose_unit_code,
T3.NAME AS supplier,
T1.manufacturer_text AS manufacturer,
T5.id AS charge_item_definition_id,
T5.instance_table AS advice_table_name,
T6.def_location_id AS position_id,
t1.restricted_flag AS restricted_flag,
t1.restricted_scope AS restricted_scope
FROM med_medication_definition AS t1
INNER JOIN med_medication AS T2 ON T2.medication_def_id = T1.ID
AND T2.delete_flag = '0' AND T2.status_enum = #{statusEnum}
LEFT JOIN adm_supplier AS T3
ON T3.ID = T1.supply_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T5 ON T5.instance_id = T1.ID
AND T5.delete_flag = '0'
LEFT JOIN adm_organization_location AS T6
ON T6.distribution_category_code = T1.category_code
AND T6.delete_flag = '0' AND T6.organization_id = #{organizationId} AND
(CURRENT_TIME :: time (6) BETWEEN T6.start_time AND T6.end_time)
WHERE T1.delete_flag = '0'
AND T2.status_enum = #{statusEnum}
<if test="pricingFlag ==1">
AND 1 = 2
</if>
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T5.instance_table = #{medicationTableName}
</if>
<if test="adviceTypes == null or adviceTypes.contains(1)">
<if test="adviceTypes == null or adviceTypes.contains(2) or adviceTypes.contains(3)">UNION ALL</if>
</if>
<if test="adviceTypes == null or adviceTypes.contains(2)">
SELECT T1.tenant_id,
2 AS advice_type,
T1.category_code AS category_code,
'' AS pharmacology_category_code,
T1.part_percent AS part_percent,
0 AS unit_conversion_ratio,
null AS part_attribute_enum,
null AS tho_part_attribute_enum,
null AS skin_test_flag,
null AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
0 AS activity_type,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.SIZE AS volume,
'' AS method_code,
'' AS rate_code,
T1.org_id AS org_id,
T1.location_id AS location_id,
'' AS dose,
'' AS dose_unit_code,
T2.NAME AS supplier,
T1.manufacturer_text AS manufacturer,
T4.id AS charge_item_definition_id,
T4.instance_table AS advice_table_name,
T5.def_location_id AS position_id,
0 AS restricted_flag,
'' AS restricted_scope
FROM adm_device_definition AS T1
LEFT JOIN adm_supplier AS T2
ON T2.ID = T1.supply_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T4 ON T4.instance_id = T1.ID
AND T4.delete_flag = '0'
LEFT JOIN adm_organization_location AS T5 ON T5.distribution_category_code = T1.category_code
AND T5.delete_flag = '0' AND T5.organization_id = #{organizationId} AND
(CURRENT_TIME :: time (6) BETWEEN T5.start_time AND T5.end_time)
WHERE T1.delete_flag = '0'
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T4.instance_table = #{deviceTableName}
AND T1.category_code = #{singleUse}
AND T1.status_enum = #{statusEnum}
</if>
<if test="adviceTypes == null or adviceTypes.contains(2)">
<if test="adviceTypes == null or adviceTypes.contains(3)">UNION ALL</if>
</if>
<if test="adviceTypes == null or adviceTypes.contains(3)">
SELECT T1.tenant_id,
3 AS advice_type,
T1.category_code AS category_code,
'' AS pharmacology_category_code,
1 AS part_percent,
0 AS unit_conversion_ratio,
null AS part_attribute_enum,
null AS tho_part_attribute_enum,
null AS skin_test_flag,
null AS inject_flag,
T1.ID AS advice_definition_id,
T1.NAME AS advice_name,
T1.bus_no AS advice_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.type_enum AS activity_type,
'' AS unit_code,
'' AS min_unit_code,
'' AS volume,
'' AS method_code,
'' AS rate_code,
T1.org_id AS org_id,
T1.location_id AS location_id,
'' AS dose,
'' AS dose_unit_code,
'' AS supplier,
'' AS manufacturer,
T2.ID AS charge_item_definition_id,
T2.instance_table AS advice_table_name,
T3.organization_id AS position_id,
0 AS restricted_flag,
'' AS restricted_scope
FROM wor_activity_definition AS T1
LEFT JOIN adm_charge_item_definition AS T2
ON T2.instance_id = T1.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_organization_location AS T3 ON T3.activity_definition_id = T1.ID
AND T3.delete_flag = '0' AND (CURRENT_TIME :: time (6) BETWEEN T3.start_time AND T3.end_time)
WHERE T1.delete_flag = '0'
<if test="pricingFlag ==1">
AND T1.pricing_flag = #{pricingFlag}
</if>
<if test="adviceDefinitionIdParamList != null and !adviceDefinitionIdParamList.isEmpty()">
AND T1.id IN
<foreach collection="adviceDefinitionIdParamList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T1.status_enum = #{statusEnum}
AND T2.instance_table = #{activityTableName}
</if>
) AS abi
${ew.customSqlSegment}
</select>
<select id="getAdviceInventory" resultType="com.openhis.web.doctorstation.dto.AdviceInventoryDto">
SELECT
T1.id AS inventory_id,
T1.item_id,
T1.item_table,
T1.quantity,
T1.unit_code,
T1.lot_number,
T1.price,
T1.location_id,
T1.location_store_id,
T2.NAME AS location_name
FROM
wor_inventory_item AS T1
LEFT JOIN adm_location AS T2 ON T2.ID = T1.location_id
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
<if test="locationId != null">
AND T1.location_id = #{locationId}
</if>
<if test="adviceDefinitionIdList != null and !adviceDefinitionIdList.isEmpty()">
AND T1.item_id IN
<foreach collection="adviceDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
AND T1.inventory_status_enum = #{status}
AND T1.expiration_date > NOW()
AND T1.item_table IN ( ${SqlCondition} )
order by T1.expiration_date
</select>
<select id="getAdviceDraftInventory" resultType="com.openhis.web.doctorstation.dto.AdviceInventoryDto">
SELECT #{medicationTableName} AS item_table,
T1.medication_id AS item_id,
T1.lot_number,
T1.location_id,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.quantity
ELSE T1.quantity * T2.part_percent
END AS quantity,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.unit_code
ELSE T2.min_unit_code
END AS unit_code
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND NOW() &lt; T1.limit_time
AND (T1.status_enum = #{status1} OR T1.status_enum = #{status2})
UNION ALL
SELECT #{deviceTableName} AS item_table,
T1.device_def_id AS item_id,
T1.lot_number,
T1.location_id,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.quantity
ELSE T1.quantity * T2.part_percent
END AS quantity,
CASE
WHEN T1.unit_code = T2.min_unit_code THEN
T1.unit_code
ELSE T2.min_unit_code
END AS unit_code
FROM wor_device_dispense AS T1
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND NOW() &lt; T1.limit_time
AND (T1.status_enum = #{status1} OR T1.status_enum = #{status2})
</select>
<select id="getChildCharge" resultType="com.openhis.web.doctorstation.dto.AdvicePriceDto">
SELECT
T1.definition_id,
T1.id AS definition_detail_id,
T2.charge_name,
T1.condition_value,
T1.condition_code,
T1.amount AS price
FROM
adm_charge_item_def_detail AS T1
LEFT JOIN adm_charge_item_definition AS T2 ON T2.ID = T1.definition_id
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
AND T1.condition_code = #{conditionCode}
<if test="chargeItemDefinitionIdList != null and !chargeItemDefinitionIdList.isEmpty()">
AND T1.definition_id IN
<foreach collection="chargeItemDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
ORDER BY T1.priority DESC
</select>
<select id="getMainCharge" resultType="com.openhis.web.doctorstation.dto.AdvicePriceDto">
SELECT
id AS definition_id,
charge_name,
price
FROM
adm_charge_item_definition
WHERE
delete_flag = '0'
<if test="chargeItemDefinitionIdList != null and !chargeItemDefinitionIdList.isEmpty()">
AND id IN
<foreach collection="chargeItemDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
<select id="getRequestBaseInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
(SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name,
T1.sort_number AS sort_number
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 0
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.status_enum,T1.sort_number,T1.group_id)
UNION ALL
(SELECT 2 AS advice_type,
T1.id AS request_id,
T1.id || '-2' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
T2.NAME AS advice_name,
T2.SIZE AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
T1.rate_code AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
null AS dispense_per_duration,
T2.part_percent AS part_percent,
'' AS condition_definition_name,
99 AS sort_number
FROM wor_device_request AS T1
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3
ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = #{WOR_DEVICE_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_device_id IS NULL
ORDER BY T1.status_enum)
UNION ALL
(SELECT 3 AS advice_type,
T1.id AS request_id,
T1.id || '-3' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
T2.NAME AS advice_name,
'' AS volume,
'' AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
'' AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
ao.id AS position_id,
ao.name AS position_name,
null AS dispense_per_duration,
1 AS part_percent,
'' AS condition_definition_name,
99 AS sort_number
FROM wor_service_request AS T1
LEFT JOIN wor_activity_definition AS T2
ON T2.ID = T1.activity_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3 ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = #{WOR_SERVICE_REQUEST}
LEFT JOIN adm_organization AS ao ON ao.ID = T1.org_id AND ao.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.based_on_table is null
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
ORDER BY T1.status_enum)
</select>
<select id="getEncounterContract" resultType="com.openhis.web.doctorstation.dto.EncounterContractDto">
SELECT aa.id AS account_id,
fc.contract_name,
fc.bus_no
FROM adm_account aa
LEFT JOIN fin_contract AS fc ON fc.bus_no = aa.contract_no
AND fc.delete_flag = '0'
WHERE aa.delete_flag = '0'
AND aa.encounter_id = #{encounterId}
</select>
</mapper>

View File

@@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationChineseMedicalAppMapper">
<select id="getTcmEncounterDiagnosis" resultType="com.openhis.web.doctorstation.dto.DiagnosisQueryDto">
SELECT T1.id AS encounter_diagnosis_id,
T1.condition_id,
T1.syndrome_group_no,
T2.definition_id,
T3.source_enum,
T3.NAME,
T1.maindise_flag,
T1.diag_srt_no,
T1.med_type_code,
T2.verification_status_enum,
T2.yb_no
FROM adm_encounter_diagnosis AS T1
LEFT JOIN cli_condition AS T2 ON T2.ID = T1.condition_id
AND T2.delete_flag = '0' AND T2.tcm_flag = 1
LEFT JOIN cli_condition_definition AS T3 ON t3.ID = T2.definition_id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.tcm_flag = 1
AND T1.encounter_id = #{encounterId}
ORDER BY T1.diag_srt_no
</select>
<select id="getTcmRequestBaseInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.prescription_no AS prescription_no,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T1.chinese_herbs_dose_quantity AS chinese_herbs_dose_quantity,
T1.suffering_flag AS suffering_flag,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 1
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.group_id,T1.prescription_no, T1.status_enum
</select>
<select id="getTcmRequestHistoryInfo" resultType="com.openhis.web.doctorstation.dto.RequestBaseDto">
SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.prescription_no AS prescription_no,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = #{practitionerId} THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T1.chinese_herbs_dose_quantity AS chinese_herbs_dose_quantity,
T1.suffering_flag AS suffering_flag,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = #{MED_MEDICATION_REQUEST}
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 1
<if test="historyFlag == '0'.toString()">
AND T1.encounter_id = #{encounterId}
</if>
<if test="historyFlag == '1'.toString()">
AND T1.patient_id = #{patientId} AND T1.encounter_id != #{encounterId}
</if>
AND T1.refund_medicine_id IS NULL
ORDER BY T1.group_id,T1.prescription_no, T1.status_enum
</select>
<select id="getConditionIds" resultType="long">
SELECT condition_id
FROM adm_encounter_diagnosis
WHERE delete_flag = '0'
AND syndrome_group_no = #{syndromeGroupNo}
</select>
<select id="getAdviceNumByConditionIds" resultType="integer">
SELECT
count(1)
FROM
med_medication_request
WHERE
delete_flag = '0'
<if test="conditionIds != null and !conditionIds.isEmpty()">
AND condition_id IN
<foreach collection="conditionIds" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
</select>
</mapper>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationDiagnosisAppMapper">
<select id="getDiagnosisBelongBindingPage" resultType="com.openhis.web.doctorstation.dto.DiagnosisBelongBindingDto">
SELECT T5.tenant_id,
T5.ID,
T5.object_id,
T5.definition_id,
T5.binding_enum,
T5.definition_name,
T5.object_name
from (SELECT T1.tenant_id,
T1.ID,
T1.object_id,
T1.definition_id,
T1.binding_enum,
T2.NAME AS definition_name,
CASE
WHEN T1.binding_enum = #{bindingType1} THEN
T3.user_name
WHEN T1.binding_enum = #{bindingType2} THEN
T4.NAME
END AS object_name
FROM cli_diagnosis_belong_binding AS T1
LEFT JOIN cli_condition_definition AS T2 ON T1.definition_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN sys_user AS T3 ON T1.binding_enum = #{bindingType1}
AND T1.object_id = T3.user_id
LEFT JOIN adm_organization AS T4 ON T1.binding_enum = #{bindingType2}
AND T1.object_id = T4.ID
WHERE T1.delete_flag = '0'
ORDER BY object_name) AS T5
${ew.customSqlSegment}
</select>
<select id="getPatientHistoryList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T1.ID AS definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
AND EXISTS(
SELECT 1
FROM cli_condition AS T2
WHERE T2.delete_flag = '0'
AND t2.tcm_flag = 0
AND T2.definition_id IS NOT NULL
AND T2.patient_id = #{patientId}
AND T2.definition_id = T1.ID
)
</select>
<select id="getDoctorCommonUseList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T1.ID AS definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT definition_id
FROM cli_condition
WHERE delete_flag = '0'
AND tcm_flag = 0
AND definition_id IS NOT NULL
AND recorder_id = #{practitionerId}
GROUP BY definition_id LIMIT 10) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getUserPersonalList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T2.ID,
T2.definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT id, definition_id
FROM cli_diagnosis_belong_binding
WHERE delete_flag = '0'
AND binding_enum = #{bindingEnum}
AND object_id = #{userId}) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getOrganizationList" resultType="com.openhis.web.doctorstation.dto.ConditionDefinitionMetadata">
SELECT T2.ID,
T2.definition_id,
T1.source_enum,
T1.condition_code,
T1.NAME,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag
FROM cli_condition_definition AS T1
JOIN (SELECT id, definition_id
FROM cli_diagnosis_belong_binding
WHERE delete_flag = '0'
AND binding_enum = #{bindingEnum}
<if test="currentUserOrganizationId != null">
AND object_id = #{currentUserOrganizationId}
</if>
) AS T2 ON T1.ID = T2.definition_id
WHERE T1.delete_flag = '0'
AND T1.status_enum = #{statusEnum}
</select>
<select id="getEncounterDiagnosis" resultType="com.openhis.web.doctorstation.dto.DiagnosisQueryDto">
SELECT T1.id AS encounter_diagnosis_id,
T1.condition_id,
T2.definition_id,
T3.source_enum,
T3.NAME,
T1.maindise_flag,
T1.diag_srt_no,
T1.med_type_code,
T1.diagnosis_desc,
T2.verification_status_enum,
T2.yb_no
FROM adm_encounter_diagnosis AS T1
LEFT JOIN cli_condition AS T2 ON T2.ID = T1.condition_id
AND T2.delete_flag = '0' AND T2.tcm_flag = 0
LEFT JOIN cli_condition_definition AS T3 ON t3.ID = T2.definition_id
AND T3.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.tcm_flag = 0
AND T1.encounter_id = #{encounterId}
</select>
<select id="getAdviceNumByConditionId" resultType="Integer">
SELECT SUM
(count_result) AS total_count
FROM (
SELECT COUNT
(1) AS count_result
FROM med_medication_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
UNION ALL
SELECT COUNT
(1)
FROM wor_device_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
UNION ALL
SELECT COUNT
(1)
FROM wor_service_request
WHERE delete_flag = '0'
AND condition_id = #{conditionId}
) AS counts
</select>
</mapper>

View File

@@ -0,0 +1,494 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationElepPrescriptionMapper">
<select id="selectCatalogDrugInfoByNo" resultType="com.openhis.ybcatalog.domain.CatalogDrugInfo">
SELECT T1.medical_catalog_code,
T1.drug_trade_name,
T1.generic_name_id,
T1.drug_generic_name,
T1.chemical_name,
T1.alias,
T1.english_name,
T1.registered_name,
T1.drug_supervision_code,
T1.drug_form,
T1.drug_form_name,
T1.drug_category,
T1.drug_category_name,
T1.drug_specification,
T1.drug_spec_code,
T1.registered_form,
T1.registered_spec,
T1.registered_spec_code,
T1.dosage,
T1.frequency,
T1.acid_base,
T1.national_drug_code,
T1.usage,
T1.tcm_flag,
T1.production_area_type,
T1.production_area_name,
T1.pricing_unit_type,
T1.otc_flag,
T1.otc_flag_name,
T1.packaging_material,
T1.packaging_material_name,
T1.packaging_spec,
T1.packaging_quantity,
T1.function_indication,
T1.administration_route,
T1.instructions,
T1.start_date,
T1.end_date,
T1.min_use_unit,
T1.min_sale_unit,
T1.min_measurement_unit,
T1.min_package_quantity,
T1.min_package_unit,
T1.min_preparation_unit,
T1.min_package_unit_name,
T1.min_preparation_unit_name,
T1.conversion_ratio,
T1.shelf_life,
T1.min_pricing_unit,
T1.wubi_code,
T1.pinyin_code,
T1.repackager,
T1.manufacturer_code,
T1.manufacturer_name,
T1.special_price_limit_flag,
T1.special_drug_flag,
T1.use_restriction,
T1.use_restriction_flag,
T1.registration_cert_no,
T1.reg_cert_start_date,
T1.reg_cert_end_date,
T1.approval_no,
T1.approval_start_date,
T1.approval_end_date,
T1.market_status,
T1.market_status_name,
T1.reg_document_archive,
T1.supp_application_archive,
T1.national_insurance_notes,
T1.essential_drug_flag_name,
T1.essential_drug_flag,
T1.vat_adjustment_flag,
T1.vat_adjustment_name,
T1.listed_drug_flag,
T1.negotiation_drug_flag,
T1.negotiation_drug_name,
T1.nhc_drug_code,
T1.remarks,
T1.valid_flag,
T1.unique_record_id,
T1.created_at,
T1.updated_at,
T1.version,
T1.version_name,
T1.pediatric_use,
T1.company_name,
T1.generic_evaluation_flag,
T1.distribution_company,
T1.distribution_contact,
T1.distribution_auth_archive,
T1.insurance_form,
T1.insurance_class,
T1.marketing_authorization_holder,
T1.release_flag,
T1.transmission_data_id,
T1.valid_from,
T1.valid_to
FROM yb_catalog_drug_info T1
WHERE T1.medical_catalog_code = #{medicationNo}
AND T1.version = #{version}
AND T1.valid_flag = '1'
</select>
<select id="selectCatalogDrugInfo" resultType="com.openhis.ybcatalog.domain.CatalogDrugInfo">
SELECT T3.medical_catalog_code,
T3.drug_trade_name,
T3.generic_name_id,
T3.drug_generic_name,
T3.chemical_name,
T3.alias,
T3.english_name,
T3.registered_name,
T3.drug_supervision_code,
T3.drug_form,
T3.drug_form_name,
T3.drug_category,
T3.drug_category_name,
T3.drug_specification,
T3.drug_spec_code,
T3.registered_form,
T3.registered_spec,
T3.registered_spec_code,
T3.dosage,
T3.frequency,
T3.acid_base,
T3.national_drug_code,
T3.usage,
T3.tcm_flag,
T3.production_area_type,
T3.production_area_name,
T3.pricing_unit_type,
T3.otc_flag,
T3.otc_flag_name,
T3.packaging_material,
T3.packaging_material_name,
T3.packaging_spec,
T3.packaging_quantity,
T3.function_indication,
T3.administration_route,
T3.instructions,
T3.start_date,
T3.end_date,
T3.min_use_unit,
T3.min_sale_unit,
T3.min_measurement_unit,
T3.min_package_quantity,
T3.min_package_unit,
T3.min_preparation_unit,
T3.min_package_unit_name,
T3.min_preparation_unit_name,
T3.conversion_ratio,
T3.shelf_life,
T3.min_pricing_unit,
T3.wubi_code,
T3.pinyin_code,
T3.repackager,
T3.manufacturer_code,
T3.manufacturer_name,
T3.special_price_limit_flag,
T3.special_drug_flag,
T3.use_restriction,
T3.use_restriction_flag,
T3.registration_cert_no,
T3.reg_cert_start_date,
T3.reg_cert_end_date,
T3.approval_no,
T3.approval_start_date,
T3.approval_end_date,
T3.market_status,
T3.market_status_name,
T3.reg_document_archive,
T3.supp_application_archive,
T3.national_insurance_notes,
T3.essential_drug_flag_name,
T3.essential_drug_flag,
T3.vat_adjustment_flag,
T3.vat_adjustment_name,
T3.listed_drug_flag,
T3.negotiation_drug_flag,
T3.negotiation_drug_name,
T3.nhc_drug_code,
T3.remarks,
T3.valid_flag,
T3.unique_record_id,
T3.created_at,
T3.updated_at,
T3.version,
T3.version_name,
T3.pediatric_use,
T3.company_name,
T3.generic_evaluation_flag,
T3.distribution_company,
T3.distribution_contact,
T3.distribution_auth_archive,
T3.insurance_form,
T3.insurance_class,
T3.marketing_authorization_holder,
T3.release_flag,
T3.transmission_data_id,
T3.valid_from,
T3.valid_to,
T3.tenant_id
FROM (SELECT T1.medical_catalog_code,
T1.drug_trade_name,
T1.generic_name_id,
T1.drug_generic_name,
T1.chemical_name,
T1.alias,
T1.english_name,
T1.registered_name,
T1.drug_supervision_code,
T1.drug_form,
T1.drug_form_name,
T1.drug_category,
T1.drug_category_name,
T1.drug_specification,
T1.drug_spec_code,
T1.registered_form,
T1.registered_spec,
T1.registered_spec_code,
T1.dosage,
T1.frequency,
T1.acid_base,
T1.national_drug_code,
T1.usage,
T1.tcm_flag,
T1.production_area_type,
T1.production_area_name,
T1.pricing_unit_type,
T1.otc_flag,
T1.otc_flag_name,
T1.packaging_material,
T1.packaging_material_name,
T1.packaging_spec,
T1.packaging_quantity,
T1.function_indication,
T1.administration_route,
T1.instructions,
T1.start_date,
T1.end_date,
T1.min_use_unit,
T1.min_sale_unit,
T1.min_measurement_unit,
T1.min_package_quantity,
T1.min_package_unit,
T1.min_preparation_unit,
T1.min_package_unit_name,
T1.min_preparation_unit_name,
T1.conversion_ratio,
T1.shelf_life,
T1.min_pricing_unit,
T1.wubi_code,
T1.pinyin_code,
T1.repackager,
T1.manufacturer_code,
T1.manufacturer_name,
T1.special_price_limit_flag,
T1.special_drug_flag,
T1.use_restriction,
T1.use_restriction_flag,
T1.registration_cert_no,
T1.reg_cert_start_date,
T1.reg_cert_end_date,
T1.approval_no,
T1.approval_start_date,
T1.approval_end_date,
T1.market_status,
T1.market_status_name,
T1.reg_document_archive,
T1.supp_application_archive,
T1.national_insurance_notes,
T1.essential_drug_flag_name,
T1.essential_drug_flag,
T1.vat_adjustment_flag,
T1.vat_adjustment_name,
T1.listed_drug_flag,
T1.negotiation_drug_flag,
T1.negotiation_drug_name,
T1.nhc_drug_code,
T1.remarks,
T1.valid_flag,
T1.unique_record_id,
T1.created_at,
T1.updated_at,
T1.version,
T1.version_name,
T1.pediatric_use,
T1.company_name,
T1.generic_evaluation_flag,
T1.distribution_company,
T1.distribution_contact,
T1.distribution_auth_archive,
T1.insurance_form,
T1.insurance_class,
T1.marketing_authorization_holder,
T1.release_flag,
T1.transmission_data_id,
T1.valid_from,
T1.valid_to,
1 AS tenant_id
FROM yb_catalog_drug_info T1
INNER JOIN (
SELECT medical_catalog_code, MAX(version) AS max_version
FROM yb_catalog_drug_info
WHERE valid_flag = '1'
GROUP BY medical_catalog_code
) T2
ON T1.medical_catalog_code = T2.medical_catalog_code AND
T1.version = T2.max_version
WHERE T1.valid_flag = '1') AS T3
${ew.customSqlSegment}
</select>
<select id="selectElepPrescriptionInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoDto">
SELECT tenant_id,
prescription_no, --处方号
ipt_otp_no, --门诊号
department_ward, --科室病区
validity_days, --有效天数
status_enum, --状态
practitioner_name, --开方医生名
prsc_dept_name, --开单科室
MIN(prsc_time) AS prsc_time, --处方开立日期
med_status, --取药状态
extension_reason, --延长原因
quash_reason, --撤销原因
condition_name, --诊断名
rx_type_code --处方类别
FROM (SELECT T1.tenant_id,
T1.prescription_no, --处方号
T1.ipt_otp_no, --门诊号
T1.department_ward, --科室病区
T1.validity_days, --有效天数
T1.status_enum, --状态
T2.name AS practitioner_name, --开方医生名
T3.name AS prsc_dept_name, --开单科室
T1.issue_time AS prsc_time, --处方开立日期
CASE
WHEN (T4.rx_used_stas_codg IN ('1', '2')) THEN T4.rx_used_stas_name
ELSE '未使用'
END AS med_status, --取药状态
T1.extension_reason, --延长原因
T1.quash_reason, --撤销原因
T6.name AS condition_name, --诊断名
T1.rx_type_code --处方类别
FROM elep_medication_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T1.prescribing_dr_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.org_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN yb_elep_medresult_info AS T4
ON T1.hi_rxno = T4.hi_rxno
LEFT JOIN cli_condition AS T5
ON T1.condition_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN cli_condition_definition AS T6
ON T5.definition_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.patient_id = #{patientId}
AND T1.delete_flag = '0')
GROUP BY tenant_id,
prescription_no,
ipt_otp_no,
department_ward,
validity_days,
status_enum,
practitioner_name,
prsc_dept_name,
med_status,
extension_reason,
quash_reason,
condition_name,
rx_type_code
ORDER BY prsc_time DESC
</select>
<select id="selectMedicationInfo" resultType="com.openhis.web.doctorstation.dto.ElepMedicationInfoDto">
SELECT T1.id,
T2.medical_catalog_code AS medication_id, --药品id
T2.registered_name AS medication_name, --药品名
T2.drug_specification, --药品规格
T2.manufacturer_name, --生产厂家
T1.med_dosage, --药品剂量
T1.med_dosage_unit_code, --药品剂量单位
T1.med_frequency, --使用频次
T1.med_route, --途径
T1.quantity, --请求数量
T1.unit_code, --请求单位
T1.support_info, --支持用药信息
T1.effective_dose_start, --服药时间(开始)
T1.effective_dose_end, --服药时间(结束)
T1.dispense_interval, --给药间隔
T1.dispense_per_quantity, --单次发药数
T1.dispense_per_duration, --每次发药供应天数
T1.rx_type_code, --处方类别
T1.rx_item_type_code, --处方项目类别
T1.condition_id, --诊断id
T1.version --药品版本号
FROM elep_medication_request AS T1
LEFT JOIN yb_catalog_drug_info AS T2
ON T1.medication_id = T2.medical_catalog_code
AND T1.version = T2.version
WHERE T1.prescription_no = #{prescriptionNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.medical_catalog_code,
T2.registered_name,
T2.drug_specification,
T2.manufacturer_name,
T1.med_dosage,
T1.med_dosage_unit_code,
T1.med_frequency,
T1.med_route,
T1.quantity,
T1.unit_code,
T1.support_info,
T1.effective_dose_start,
T1.effective_dose_end,
T1.dispense_interval,
T1.dispense_per_quantity,
T1.dispense_per_duration,
T1.rx_type_code,
T1.rx_item_type_code,
T1.condition_id,
T1.version
</select>
<select id="selectSaveInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoParam">
SELECT T7.id AS organization_id, --医院id
T1.bus_no AS ipt_otp_no, --门诊/住院病历号
CASE
WHEN (T1.class_enum = '2') THEN T3.name
WHEN (T1.class_enum = '1') THEN T5.name
ELSE NULL
END AS department_ward, --科室病区
T6.insutype AS insurance_enum --医保类型
--T8.id AS condition_id --诊断id
FROM adm_encounter AS T1
-- LEFT JOIN adm_encounter_diagnosis AS T2
-- ON T2.encounter_id = T1.id
-- AND T2.maindise_flag = '1'
-- AND T2.delete_flag = '0'
-- LEFT JOIN cli_condition AS T8
-- ON T2.condition_id = T8.id
-- AND T8.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T1.id
AND T4.status_enum = '2'
AND T4.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T4.location_id
AND T5.delete_flag = '0'
LEFT JOIN yb_clinc_reg AS T6
ON T6.ipt_otp_no = T1.bus_no
LEFT JOIN adm_organization AS T7
ON LEFT (T3.bus_no, 6) = T7.bus_no
AND T7.type_enum = '1'
AND T7.delete_flag = '0'
WHERE T1.id = #{encounterId}
AND T1.delete_flag = '0'
GROUP BY T7.id,
T1.bus_no,
T1.class_enum,
T3.name,
T5.name,
T6.insutype
-- T8.id
</select>
<!-- <select id="selectConditionInfo" resultType="com.openhis.web.doctorstation.dto.ElepPrescriptionInfoParam">-->
<!-- SELECT T3.id AS condition_id, &#45;&#45;诊断id-->
<!-- T4.name AS condition_name &#45;&#45;诊断名-->
<!-- FROM adm_encounter AS T1-->
<!-- LEFT JOIN adm_encounter_diagnosis AS T2-->
<!-- ON T2.encounter_id = T1.id-->
<!-- AND T2.delete_flag = '0'-->
<!-- LEFT JOIN cli_condition AS T3-->
<!-- ON T2.condition_id = T3.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- LEFT JOIN cli_condition_definition AS T4-->
<!-- ON T3.definition_id = T4.id-->
<!-- AND T3.delete_flag = '0'-->
<!-- WHERE T1.id = #{encounterId}-->
<!-- AND T1.delete_flag = '0'-->
<!-- GROUP BY T3.id,-->
<!-- T4.name-->
<!-- </select>-->
</mapper>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationEmrAppMapper">
</mapper>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationMainAppMapper">
<select id="getPatientInfo" resultType="com.openhis.web.doctorstation.dto.PatientInfoDto">
SELECT
T10.encounter_id,
T10.patient_id,
T10.patient_name,
T10.gender_enum,
T10.id_card,
T10.phone,
T10.birth_date,
T10.status_enum,
T10.allergy_history_flag,
T10.account_id,
T10.type_code,
T10.contract_name,
T10.org_id,
T10.register_time,
T10.reception_time,
T10.practitioner_user_id,
T10.jz_practitioner_user_id
from
(
SELECT T1.tenant_id AS tenant_id,
T1.ID AS encounter_id,
T1.organization_id AS organization_id,
T2.NAME AS organization_name,
T3.NAME AS healthcare_name,
T5.user_id AS practitioner_user_id,
T5.NAME AS practitioner_name,
ap.user_id AS jz_practitioner_user_id,
ap.NAME AS jz_practitioner_name,
T6.id AS account_id,
T6.type_code AS type_code,
T7.contract_name AS contract_name,
T8.ID AS patient_id,
T8.NAME AS patient_name,
T8.gender_enum AS gender_enum,
T8.id_card AS id_card,
T8.phone AS phone,
T8.birth_date AS birth_date,
T1.status_enum AS status_enum,
T1.create_time AS register_time,
T1.reception_time AS reception_time,
T1.organization_id AS org_id,
CASE
WHEN T9.patient_id IS NOT NULL THEN 1
ELSE 0
END AS allergy_history_flag
FROM adm_encounter AS T1
LEFT JOIN adm_organization AS T2 ON T1.organization_id = T2.ID AND T2.delete_flag = '0'
LEFT JOIN adm_healthcare_service AS T3 ON T1.service_type_id = T3.ID AND T3.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS T4
ON T1.ID = T4.encounter_id AND T4.type_code = #{participantType} AND T4.delete_flag = '0'
LEFT JOIN adm_practitioner AS T5 ON T5.ID = T4.practitioner_id AND T5.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS aep ON T1.ID = aep.encounter_id
AND aep.type_code = #{participantType2}
AND aep.delete_flag = '0'
LEFT JOIN adm_practitioner AS ap ON ap.ID = aep.practitioner_id
AND ap.delete_flag = '0'
LEFT JOIN adm_account AS T6 ON T1.ID = T6.encounter_id AND T6.delete_flag = '0' and T6.encounter_flag = '1'
LEFT JOIN fin_contract AS T7 ON T6.contract_no = T7.bus_no AND T7.delete_flag = '0'
LEFT JOIN adm_patient AS T8 ON T1.patient_id = T8.ID AND T8.delete_flag = '0'
LEFT JOIN cli_allergy_intolerance AS T9
ON T1.patient_id = T9.patient_id AND T9.clinical_status_enum != #{ClinicalStatus} AND T9.delete_flag = '0'
WHERE
T1.delete_flag = '0'
<!-- 当前登录账号ID 和 当前登录账号所属的科室ID 用于控制数据权限 -->
<if test="userId != null and currentUserOrganizationId != null">
AND ( T5.user_id = #{userId}
OR (T1.organization_id = #{currentUserOrganizationId}) )
</if>
<if test="pricingFlag ==1">
AND T1.status_enum != #{encounterStatus}
</if>
ORDER BY
T1.create_time ) AS T10
${ew.customSqlSegment}
</select>
<select id="getPrescriptionPageInfo" resultType="com.openhis.web.doctorstation.dto.PrescriptionInfoBaseDto">
SELECT ppi.prescription_no,
ppi.encounter_id,
ppi.patient_id,
ppi.patient_name,
ppi.birth_date,
ppi.gender_enum,
ppi.condition_definition_name,
ppi.request_time,
ppi.practitioner_id,
ppi.practitioner_name,
ppi.organization_id,
ppi.bus_no,
ppi.contract_name
FROM (SELECT DISTINCT
ON
( mmr.prescription_no ) mmr.prescription_no, mmr.encounter_id,
mmr.tenant_id,
mmr.patient_id,
ap.NAME AS patient_name,
ap.birth_date AS birth_date,
ap.gender_enum AS gender_enum,
ccd.NAME AS condition_definition_name,
mmr.create_time AS request_time,
mmr.practitioner_id,
aper.NAME AS practitioner_name,
ae.organization_id,
ae.bus_no,
fc.contract_name
FROM
med_medication_request AS mmr
LEFT JOIN adm_encounter AS ae
ON ae.id = mmr.encounter_id AND ae.delete_flag = '0'
LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.id AND aa.delete_flag = '0' AND aa.encounter_flag = 1
LEFT JOIN fin_contract AS fc ON fc.bus_no = aa.contract_no AND fc.delete_flag = '0'
LEFT JOIN adm_patient AS ap
ON ap.ID = mmr.patient_id
AND ap.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.ID = mmr.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
LEFT JOIN adm_practitioner AS aper ON aper.ID = mmr.practitioner_id
AND aper.delete_flag = '0'
WHERE
mmr.delete_flag = '0'
AND (mmr.prescription_no LIKE 'P%'
OR mmr.prescription_no LIKE 'C%')
AND mmr.refund_medicine_id IS NULL
ORDER BY
mmr.prescription_no DESC) AS ppi
${ew.customSqlSegment}
</select>
<select id="getPrescriptionDetailInfo" resultType="com.openhis.web.doctorstation.dto.PrescriptionInfoDetailDto">
SELECT mmr.prescription_no,
mmr.ID AS request_id,
mmr.practitioner_id AS requester_id,
mmr.create_time AS request_time,
mmr.group_id AS group_id,
mmd.NAME AS advice_name,
mm.total_volume AS volume,
mmr.lot_number AS lot_number,
mmr.quantity AS quantity,
mmr.unit_code AS unit_code,
mmr.status_enum AS status_enum,
mmr.method_code AS method_code,
mmr.rate_code AS rate_code,
mmr.dose AS dose,
mmr.dose_unit_code AS dose_unit_code,
aci.ID AS charge_item_id,
aci.total_price AS total_price,
aci.status_enum AS charge_status,
al.ID AS position_id,
al.NAME AS position_name,
mmr.dispense_per_duration AS dispense_per_duration,
mmd.part_percent AS part_percent,
ccd.NAME AS condition_definition_name
FROM med_medication_request AS mmr
LEFT JOIN med_medication_definition AS mmd ON mmd.ID = mmr.medication_id
AND mmd.delete_flag = '0'
LEFT JOIN med_medication AS mm ON mm.medication_def_id = mmd.ID
AND mm.delete_flag = '0'
LEFT JOIN adm_charge_item AS aci ON aci.service_id = mmr.ID
AND aci.delete_flag = '0'
LEFT JOIN adm_location AS al ON al.ID = mmr.perform_location
AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.ID = mmr.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
WHERE mmr.delete_flag = '0'
<if test="prescriptionNo != null">
AND mmr.prescription_no = #{prescriptionNo}
</if>
<if test="encounterId != null">
AND mmr.encounter_id = #{encounterId}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.DoctorStationPtDetailsAppMapper">
<!-- 查询患者详情-->
<select id="getPtDetailsList" resultType="com.openhis.web.doctorstation.dto.PatientDetailsDto">
SELECT
p.name,
p.gender_enum,
p.birth_date,
p.phone,
p.address,
p.work_company,
p.nationality_code,
p.marital_status_enum,
p.id_card,
p.country_code,
p.prfs_enum,
p.link_name,
p.link_relation_code,
p.link_telcom,
e.id,
e.bus_no,
e.patient_id,
e.status_enum,
e.class_enum,
e.start_time,
e.end_time,
COALESCE(a.balance_amount, 0) AS balance_amount, -- 账户余额
a.type_code, -- 账户类型
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextMed} -- 1药品
AND aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_medication_price, -- 费用:药品
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextDev} -- 2耗材
AND aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_device_price, -- 费用:耗材
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.context_enum = #{contextAct} -- 3项目
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_activity_price, -- 费用:项目
(SELECT SUM(aci.total_price)
FROM adm_charge_item aci
WHERE aci.encounter_id = e.id
--待收费,待结算,已结算
AND aci.status_enum IN
<foreach item="status" collection="statusList" open="(" separator="," close=")">
#{status}
</foreach>
AND aci.delete_flag = '0'
) AS total_price, -- 费用总计
CASE
WHEN (
SELECT COUNT(*)
FROM cli_allergy_intolerance ai
WHERE ai.patient_id = e.patient_id
AND ai.clinical_status_enum = #{clinicalStatus} -- 阳性
) > 0 THEN 1
ELSE 0
END AS allergy_history_flag, -- 是否有过敏史
(SELECT el.location_id
FROM adm_encounter_location el
WHERE el.encounter_id = e.id
AND el.form_enum = #{form} -- 8病床
LIMIT 1
) AS bed_location_id, -- 床位ID
(SELECT pra.name
FROM adm_encounter_participant ep
LEFT JOIN adm_practitioner pra ON ep.practitioner_id = pra.id
WHERE ep.encounter_id = e.id
AND ep.type_code = #{typeCode} --就诊参与者身份类型是1:接诊医生
ORDER BY ep.create_time DESC
LIMIT 1) AS doctor_name--门诊医生
FROM adm_encounter e
LEFT JOIN adm_patient p ON e.patient_id = p.id AND p.delete_flag = '0'
LEFT JOIN adm_account a ON e.id = a.encounter_id AND a.delete_flag = '0'
<where>
e.delete_flag = '0'
AND e.id = #{encounterId}
</where>
</select>
</mapper>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.doctorstation.mapper.ReservationRecordAppMapper">
<select id="getReservationInfo" resultType="com.openhis.web.doctorstation.dto.ReservationRecordDto">
SELECT ri.tenant_id,
ri.id,
ri.patient_name,
ri.patient_tel,
ri.chief_complaint,
ri.reservation_time,
ri.org_id,
ri.org_name,
ri.practitioner_id,
ri.practitioner_name,
ri.remark
from (SELECT crr.tenant_id,
crr.id,
crr.patient_name,
crr.patient_tel,
crr.chief_complaint,
crr.reservation_time,
crr.org_id,
ao.NAME AS org_name,
crr.practitioner_id,
ap.NAME AS practitioner_name,
crr.remark
FROM cli_reservation_record AS crr
LEFT JOIN adm_organization AS ao ON ao.ID = crr.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_practitioner AS ap ON ap.ID = crr.practitioner_id
AND ap.delete_flag = '0'
WHERE crr.delete_flag = '0'
AND (crr.org_id = #{orgId} OR crr.practitioner_id = #{practitionerId})
order by crr.reservation_time) AS ri
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.document.mapper.DocDefinitionAppMapper">
<!-- 患者信息分页查询-->
<select id="getDefinationList" parameterType="java.util.Map"
resultType="com.openhis.web.document.dto.DocDefinitionDto">
SELECT
dd.id,
dd.name,
dd.version,
dd.primary_menu_enum ,
dd.sub_menu ,
dd.bus_no ,
dd.vue_router ,
dd.hospital_id ,
dd.is_valid ,
dd.display_order ,
dd.use_range_enum ,
dd.doctor_permission_enum ,
dd.nursing_permission_enum ,
dd.medical_permission_enum ,
dd.pharmacist_permission_enum ,
ARRAY_AGG(ddo.organization_id) FILTER (WHERE ddo.organization_id IS NOT NULL) AS organization_Ids
FROM doc_definition dd
LEFT JOIN doc_definition_organization ddo
ON dd.id = ddo.definition_id -- 使用 definition_id 关联
WHERE dd.delete_flag = '0'
and dd.hospital_id = #{hospitalId}
<if test="useRanges != null and !useRanges.isEmpty()">
AND dd.use_range_enum IN
<foreach collection="useRanges" item="useRange" open="(" separator="," close=")">
#{useRange}
</foreach>
</if>
<if test="organizationId != null and organizationId != 0">
AND ddo.organization_id = #{organizationId} OR dd.use_range_enum = 1
</if>
<if test="name != null and !name.isEmpty()">
AND dd.name LIKE CONCAT('%',#{name},'%')
</if>
GROUP BY
dd.id, dd.primary_menu_enum ,
dd.sub_menu
</select>
</mapper>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.document.mapper.DocRecordAppMapper">
<!-- 患者信息分页查询-->
<select id="getRecordPageList" parameterType="java.util.Map"
resultType="com.openhis.web.document.dto.DocRecordPatientDto">
SELECT t1.id,
t1.definition_id,
t1.definition_bus_no,
t1.content_json,
t1.status_enum,
t1.organization_id,
t1.encounter_id,
t1.patient_id,
t1.record_time,
t1.tenant_id,
t1.delete_flag,
t1.create_by,
t1.create_time,
t1.update_by,
t1.update_time,
t1.bus_no,
t1.patient_name,
t1.gender,
t1.age,
t1.id_card,
t1.phone,
t1.address,
t1.birth_date,
t1.reception_time,
t1.start_time,
t1.end_time,
t1.class_enum,
t1.primary_menu_enum,
t1.doc_name,
t1.tenant_id
FROM
(SELECT
p.bus_no,
p.name as patient_name,
p.gender_enum as gender,
null as age,
p.birth_date,
p.address,
p.phone,
p.id_card,
e.start_time,
e.end_time,
e.reception_time,
e.class_enum,
d.primary_menu_enum,
d.name as doc_name,
t.id,
t.definition_id,
t.definition_bus_no,
t.content_json,
t.status_enum,
t.organization_id,
t.encounter_id,
t.patient_id,
t.record_time,
t.tenant_id,
t.delete_flag,
t.create_by,
t.create_time,
t.update_by,
t.update_time,
t.tenant_id
FROM doc_record t
LEFT JOIN doc_definition d
on d.id=t.definition_id
LEFT JOIN adm_encounter e
on t.encounter_id =e.id
LEFT JOIN adm_patient p
on t.patient_id=p.id
WHERE t.delete_flag='0'
<if test="primaryMenuEnumList != null and !primaryMenuEnumList.isEmpty()">
AND t.primary_menu_enum IN
<foreach collection="primaryMenuEnumList" item="primaryMenuEnum" open="(" separator="," close=")">
#{primaryMenuEnum}
</foreach>
</if>
order by t.record_time desc
)t1
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.document.mapper.DocStatisticsDefinitionAppMapper">
<!-- 患者信息分页查询-->
<select id="getDocStatisticsDefinitionPageList" parameterType="java.util.Map"
resultType="com.openhis.web.document.dto.DocStatisticsDefinitionDto">
</select>
<select id="getOptionList" parameterType="java.util.Map"
resultType="com.openhis.web.document.dto.OptionDto">
SELECT op.id as option_id,
op.option,
op.display_order,
d.id,
d.name,
d.type_enum,
d.code,
d.required,
d.remark,
d.is_statistics,
d.unit
from doc_statistics_definition_option op
RIGHT JOIN doc_statistics_definition d
on op.doc_statistics_definition_id = d.id
WHERE
d.delete_flag='0'
<if test="id!= null">
and d.id = #{id}
</if>
<if test="code!= null and code.isEmpty() == false">
and d.code = #{code}
</if>
<if test="name!= null">
and d.name = #{name}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inhospitalcharge.mapper.AdvancePaymentManageAppMapper">
<select id="getAdvancePaymentInfo" resultType="com.openhis.web.inhospitalcharge.dto.AdvancePaymentInfoDto">
SELECT api.tenant_id,
api.encounter_id,
api.bus_no,
api.patient_id,
api.patient_name,
api.gender_enum,
api.birth_date,
api.ward_name,
api.house_name,
api.bed_name,
api.inHospital_org_name,
api.account_id,
api.total_amount,
api.balance_amount
from (SELECT ae.tenant_id,
ae.ID AS encounter_id,
ae.bus_no AS bus_no,
ap.id AS patient_id,
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
alw.name AS ward_name,
alh.name AS house_name,
alb.name AS bed_name,
ao.NAME AS inHospital_org_name,
aa.id AS account_id,
COALESCE(payment.total_amount, 0) AS total_amount,
COALESCE(payment.total_amount, 0) - COALESCE(consumption.consumption_amount, 0) +
COALESCE(return_pay.return_amount, 0) AS balance_amount
FROM adm_encounter AS ae
LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization AS ao ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelw
ON aelw.encounter_id = ae.ID AND aelw.delete_flag = '0' AND
aelw.form_enum = #{wardEnum} AND
aelw.status_enum = #{encounterLocationStatus}
LEFT JOIN adm_location AS alw ON alw.id = aelw.location_id AND alw.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelh
ON aelh.encounter_id = ae.ID AND aelh.delete_flag = '0' AND
aelh.form_enum = #{houseEnum} AND
aelh.status_enum = #{encounterLocationStatus}
LEFT JOIN adm_location AS alh ON alh.id = aelh.location_id AND alh.delete_flag = '0'
LEFT JOIN adm_encounter_location AS aelb
ON aelb.encounter_id = ae.ID AND aelb.delete_flag = '0' AND
aelb.form_enum = #{bedEnum} AND
aelb.status_enum = #{encounterLocationStatus}
LEFT JOIN adm_location AS alb ON alb.id = aelb.location_id AND alb.delete_flag = '0'
LEFT JOIN adm_account AS aa
ON aa.encounter_id = ae.ID AND aa.delete_flag = '0' AND
aa.type_code = #{accountTypeCode}
LEFT JOIN LATERAL (
SELECT SUM
(tendered_amount) AS total_amount
FROM fin_payment_reconciliation AS fpr
WHERE fpr.delete_flag = '0'
AND fpr.kind_enum = #{kindEnum}
AND fpr.encounter_id = ae.ID
) AS payment
ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS consumption_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status1}, #{status2})
AND aci.encounter_id = ae.ID
) AS consumption ON TRUE
LEFT JOIN LATERAL (
SELECT SUM
(total_price) AS return_amount
FROM adm_charge_item AS aci
WHERE aci.delete_flag = '0'
AND aci.status_enum IN (#{status3})
AND aci.encounter_id = ae.ID
) AS return_pay ON TRUE
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{classEnum}) AS api
${ew.customSqlSegment}
</select>
<select id="getAdvancePaymentFlowRecordList"
resultType="com.openhis.web.inhospitalcharge.dto.AdvancePaymentFlowRecordDto">
SELECT fpr.payment_no,
fpr.tendered_amount,
fpr.payment_enum,
fpr.create_time AS operate_time,
ap.NAME AS enterer
FROM fin_payment_reconciliation AS fpr
LEFT JOIN adm_practitioner AS ap ON ap.ID = fpr.enterer_id
AND ap.delete_flag = '0'
WHERE fpr.delete_flag = '0'
AND fpr.kind_enum = 0
AND fpr.encounter_id = #{encounterId}
ORDER BY fpr.create_time DESC
</select>
</mapper>

View File

@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inhospitalcharge.mapper.InHospitalRegisterAppMapper">
<select id="getInHospitalRegisterInfo" resultType="com.openhis.web.inhospitalcharge.dto.InHospitalRegisterQueryDto">
SELECT ihri.tenant_id,
ihri.encounter_id,
ihri.amb_encounter_id,
ihri.patient_id,
ihri.request_time,
ihri.registrar,
ihri.source_name,
ihri.patient_name,
ihri.gender_enum,
ihri.birth_date,
ihri.ward_name
from (SELECT ae.tenant_id,
ae.ID AS encounter_id,
ae.amb_encounter_id AS amb_encounter_id,
ae.patient_id AS patient_id,
ae.create_time AS request_time,
aper.NAME AS registrar,
ao.NAME AS source_name,
ap.NAME AS patient_name,
ap.gender_enum AS gender_enum,
ap.birth_date AS birth_date,
al.NAME AS ward_name
FROM adm_encounter AS ae
LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae.
ID
LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID
AND ael.delete_flag = '0'
AND ael.form_enum = #{formEnum}
LEFT JOIN adm_location AS al ON al.ID = ael.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_practitioner AS aper ON aper.ID = ae.registrar_id
AND aper.delete_flag = '0'
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{encounterClass}
<if test="registeredFlag == '0'.toString()">
AND ae.status_enum = #{encounterStatus}
</if>
<if test="registeredFlag == '1'.toString()">
AND ae.status_enum != #{encounterStatus}
</if>
) AS ihri
${ew.customSqlSegment}
</select>
<select id="getPatientInfo" resultType="com.openhis.web.inhospitalcharge.dto.InHospitalPatientInfoDto">
SELECT ap.id AS patient_id,
ap.bus_no,
ap.NAME AS patient_name,
ap.id_card,
ap.birth_date,
ap.gender_enum,
ap.nationality_code,
ap.country_code,
ap.marital_status_enum,
ap.prfs_enum,
ap.phone,
ap.address,
ap.native_place,
ap.work_company
FROM adm_patient AS ap
WHERE ap.delete_flag = '0'
AND ap.ID = #{patientId}
</select>
<select id="getInHospitalInfo" resultType="com.openhis.web.inhospitalcharge.dto.InHospitalInfoDto">
SELECT ae.ID AS encounter_id,
ae.bus_no AS bus_no,
(SELECT COUNT(1)
FROM adm_encounter
WHERE delete_flag = '0'
AND class_enum = 1
AND patient_id = ae.patient_id) - 1 AS in_hospital_count,
ae.organization_id AS in_hospital_org_id,
ae.amb_encounter_id AS amb_encounter_id,
ae.priority_enum AS priority_enum,
ae.admit_source_code AS admit_source_code,
ae.in_way_code AS in_way_code,
ae.start_time AS start_time,
ao.NAME AS in_hospital_org_name,
al.ID AS ward_location_id,
al.NAME AS ward_name,
al.bus_no AS ward_bus_no,
ap.ID AS amb_doctor_practitioner_id,
ap.NAME AS amb_doctor_practitioner_name,
ccd.NAME AS amb_diagnosis_name,
COALESCE(aa.balance_amount, 0) AS balance_amount
FROM adm_encounter AS ae
LEFT JOIN adm_organization AS ao ON ao.ID = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID
AND ael.delete_flag = '0'
AND ael.form_enum = #{formEnum}
LEFT JOIN adm_location AS al ON al.ID = ael.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_encounter_participant AS aep ON aep.encounter_id = ae.amb_encounter_id
AND aep.delete_flag = '0'
AND aep.type_code = #{participantType}
LEFT JOIN adm_practitioner AS ap ON ap.ID = aep.practitioner_id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_diagnosis AS aed ON aed.encounter_id = ae.amb_encounter_id
AND aed.delete_flag = '0'
AND aed.maindise_flag = #{maindiseFlag}
LEFT JOIN cli_condition AS cc ON cc.ID = aed.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.ID = cc.definition_id
AND ccd.delete_flag = '0'
LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.ID
AND aa.delete_flag = '0'
AND aa.type_code = #{accountType}
WHERE ae.ID = #{encounterId}
</select>
<select id="getTotalBedsNum" resultType="integer">
SELECT COUNT
(1)
FROM adm_location
WHERE delete_flag = '0'
AND form_enum = #{formEnum}
AND status_enum != #{status}
AND bus_no LIKE concat('%'
, #{wardBusNo}
, '%')
</select>
<select id="getIdleBedsNum" resultType="integer">
SELECT COUNT
(1)
FROM adm_location
WHERE delete_flag = '0'
AND form_enum = #{formEnum}
AND status_enum = #{status}
AND bus_no LIKE concat('%'
, #{wardBusNo}
, '%')
</select>
</mapper>

View File

@@ -0,0 +1,347 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inhospitalnursestation.mapper.ATDManageAppMapper">
<select id="selectAdmissionPatientPage"
resultType="com.openhis.web.inhospitalnursestation.dto.AdmissionPatientPageDto">
SELECT ii.encounter_id,
ii.bus_no,
ii.encounter_status,
ii.start_time,
ii.end_time,
ii.admit_source_code,
ii.priority_enum,
ii.organization_id,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.gender_enum,
ii.birth_date,
ii.ward_id,
ii.ward_name,
ii.house_id,
ii.house_name,
ii.bed_id,
ii.bed_name,
ii.organization_name,
ii.contract_name
FROM (
WITH locations AS (
SELECT ael.encounter_id,
al.form_enum,
al.id AS location_id,
al."name" AS location_name
FROM adm_encounter_location ael
LEFT JOIN adm_location al
ON ael.location_id = al.id
AND al.delete_flag = '0'
WHERE ael.status_enum = #{active}
AND ael.delete_flag = '0'
)
SELECT ae.tenant_id,
ae.id AS encounter_id,
ae.bus_no,
ae.status_enum AS encounter_status,
ae.start_time,
ae.end_time,
ae.admit_source_code,
ae.priority_enum,
ae.organization_id,
ap."name" AS patient_name,
ap.py_str AS patient_py_str,
ap.wb_str AS patient_wb_str,
ap.gender_enum,
ap.birth_date,
alw.location_id AS ward_id,
alw.location_name AS ward_name,
alh.location_id AS house_id,
alh.location_name AS house_name,
alb.location_id AS bed_id,
alb.location_name AS bed_name,
ao."name" AS organization_name,
fc.contract_name
FROM adm_encounter ae
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN locations alw
ON alw.encounter_id = ae.id
AND alw.form_enum = #{ward}
LEFT JOIN locations alh
ON alh.encounter_id = ae.id
AND alh.form_enum = #{house}
LEFT JOIN locations alb
ON alb.encounter_id = ae.id
AND alb.form_enum = #{bed}
LEFT JOIN adm_organization ao
ON ao.id = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_account aa
ON ae.id = aa.encounter_id
AND aa.encounter_flag = 1
AND aa.delete_flag = '0'
LEFT JOIN fin_contract fc
ON aa.contract_no = fc.bus_no
AND fc.delete_flag = '0'
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{imp}
AND ae.status_enum != #{toBeRegistered}
GROUP BY ae.id,
ae.bus_no,
ae.status_enum,
ae.start_time,
ae.end_time,
ae.admit_source_code,
ae.priority_enum,
ae.organization_id,
ap."name",
ap.py_str,
ap.wb_str,
ap.gender_enum,
ap.birth_date,
alw.location_id,
alw.location_name,
alh.location_id,
alh.location_name,
alb.location_id,
alb.location_name,
ao."name",
fc.contract_name
ORDER BY ae.bus_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectAdmissionBadPage"
resultType="com.openhis.web.inhospitalnursestation.dto.AdmissionBedPageDto">
SELECT ii.bed_id,
ii.bed_name,
ii.bed_status,
ii.house_id,
ii.house_name,
ii.ward_id,
ii.ward_name,
ii.encounter_id ,
ii.organization_id ,
ii.bus_no ,
ii.encounter_status,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.gender_enum ,
ii.birth_date ,
ii.total_amount,
ii.balance_amount
FROM ( SELECT bed.id AS bed_id,
bed.tenant_id,
bed."name" AS bed_name,
bed.status_enum AS bed_status,
house.id AS house_id,
house."name" AS house_name,
ward.id AS ward_id,
ward."name" AS ward_name,
ae.id AS encounter_id ,
ae.organization_id ,
ae.bus_no ,
ae.status_enum AS encounter_status,
ap."name" AS patient_name,
ap.py_str AS patient_py_str,
ap.wb_str AS patient_wb_str,
ap.gender_enum ,
ap.birth_date ,
personal_account.total_amount,
personal_account.balance_amount
FROM adm_location bed
LEFT JOIN adm_location house
ON house.bus_no = SPLIT_PART(bed.bus_no,'.',1) || '.' || SPLIT_PART(bed.bus_no,'.',2)
AND house.form_enum = #{house}
AND house.delete_flag = '0'
LEFT JOIN adm_location ward
ON ward.bus_no = SPLIT_PART(bed.bus_no,'.',1)
AND ward.form_enum = #{ward}
AND ward.delete_flag = '0'
LEFT JOIN adm_encounter_location aelb
ON bed.id = aelb.location_id
AND aelb.delete_flag = '0'
AND aelb.status_enum = #{active}
AND bed.form_enum = #{bed}
LEFT JOIN adm_encounter ae
ON aelb.encounter_id = ae.id
AND ae.delete_flag = '0'
LEFT JOIN adm_patient ap
ON ap.id = ae.patient_id
AND ap.delete_flag = '0'
LEFT JOIN ( SELECT aa.encounter_id,
aa.balance_amount AS total_amount,
(aa.balance_amount -
COALESCE(SUM(CASE WHEN aci.status_enum IN (#{billed}, #{billable})
THEN aci.total_price ELSE 0 END), 0) +
COALESCE(SUM(CASE WHEN aci.status_enum = #{refunded}
THEN aci.total_price ELSE 0 END), 0)) AS balance_amount
FROM adm_account aa
LEFT JOIN adm_charge_item aci
ON aa.encounter_id = aci.encounter_id
AND aa.delete_flag = '0'
WHERE aa.type_code = #{personalCashAccount}
AND aa.delete_flag = '0'
GROUP BY aa.encounter_id,
aa.balance_amount
) AS personal_account
ON personal_account.encounter_id = ae.id
WHERE bed.form_enum = #{bed}
AND bed.delete_flag = '0'
AND bed.status_enum != #{inactive}
GROUP BY bed.id,
bed.tenant_id,
bed."name",
bed.status_enum,
house.id,
house."name",
ward.id,
ward."name",
ae.id,
ae.organization_id ,
ae.bus_no ,
ae.status_enum,
ap."name",
ap.py_str,
ap.wb_str,
ap.gender_enum ,
ap.birth_date,
personal_account.total_amount,
personal_account.balance_amount
ORDER BY bed.bus_no
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectAdmissionPatientInfo"
resultType="com.openhis.web.inhospitalnursestation.dto.AdmissionPatientInfoDto">
WITH locations AS (
SELECT ael.encounter_id,
ael.start_time,
al.form_enum,
al.id AS location_id,
al."name" AS location_name
FROM adm_encounter_location ael
LEFT JOIN adm_location al
ON ael.location_id = al.id
AND al.delete_flag = '0'
WHERE ael.status_enum = #{active}
AND ael.delete_flag = '0'
) , practitioners AS (
SELECT aep.encounter_id ,
aep.type_code ,
pra.id AS practitioner_id,
pra."name" AS practitioner_name
FROM adm_encounter_participant aep
LEFT JOIN adm_practitioner pra
ON aep.practitioner_id = pra.id
AND pra.delete_flag = '0'
WHERE aep.status_enum = #{active}
AND aep.delete_flag = '0'
)
SELECT ae.id AS encounter_id,
ae.bus_no ,
ae.priority_enum ,
ae.organization_id ,
ae.start_time AS in_hos_time,
bed.start_time,
bed.location_id AS bed_id,
bed.location_name AS bed_name,
house.location_id AS house_id,
house.location_name AS house_name,
ward.location_id AS ward_id,
ward.location_name AS ward_name,
primaryNurse.practitioner_id AS primary_nurse_id,
primaryNurse.practitioner_name AS primary_nurse_name,
attendingDoctor.practitioner_id AS attending_doctor_id,
attendingDoctor.practitioner_name AS attending_doctor_name,
admittingDoctor.practitioner_id AS admitting_doctor_id,
admittingDoctor.practitioner_name AS admitting_doctor_name,
chiefDoctor.practitioner_id AS chief_doctor_id,
chiefDoctor.practitioner_name AS chief_doctor_name,
ao."name" AS organization_name ,
ap."name" AS patient_name,
ap.gender_enum ,
ap.birth_date ,
ap.phone ,
fc.contract_name ,
diagnosis.condition_names
FROM adm_encounter ae
LEFT JOIN locations AS bed
ON bed.encounter_id = ae.id
AND bed.form_enum = #{bed}
LEFT JOIN locations AS house
ON house.encounter_id = ae.id
AND house.form_enum = #{house}
LEFT JOIN locations AS ward
ON ward.encounter_id = ae.id
AND ward.form_enum = #{ward}
LEFT JOIN practitioners AS primaryNurse
ON primaryNurse.encounter_id = ae.id
AND primaryNurse.type_code = #{primaryNurse}
LEFT JOIN practitioners AS attendingDoctor
ON attendingDoctor.encounter_id = ae.id
AND attendingDoctor.type_code = #{attendingDoctor}
LEFT JOIN practitioners AS admittingDoctor
ON admittingDoctor.encounter_id = ae.id
AND admittingDoctor.type_code = #{admittingDoctor}
LEFT JOIN practitioners AS chiefDoctor
ON chiefDoctor.encounter_id = ae.id
AND chiefDoctor.type_code = #{chiefDoctor}
LEFT JOIN adm_organization ao
ON ao.id = ae.organization_id
AND ao.delete_flag = '0'
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_account aa
ON ae.id = aa.encounter_id
AND aa.encounter_flag = 1
AND aa.delete_flag = '0'
LEFT JOIN fin_contract fc
ON aa.contract_no = fc.bus_no
AND fc.delete_flag = '0'
LEFT JOIN (
SELECT aed.encounter_id,
STRING_AGG(ccd.name, ', ') AS condition_names
FROM adm_encounter_diagnosis aed
INNER JOIN cli_condition cc
ON cc.id = aed.condition_id
AND cc.delete_flag = '0'
INNER JOIN cli_condition_definition ccd
ON ccd.id = cc.definition_id
AND ccd.delete_flag = '0'
WHERE aed.delete_flag = '0'
GROUP BY aed.encounter_id
) AS diagnosis
ON ae.id = diagnosis.encounter_id
WHERE ae.id = #{encounterId}
AND ae.delete_flag = '0'
GROUP BY ae.id,
ae.bus_no ,
ae.priority_enum ,
ae.organization_id ,
ae.start_time,
bed.start_time,
bed.location_id,
bed.location_name,
house.location_id,
house.location_name,
ward.location_id,
ward.location_name,
primaryNurse.practitioner_id,
primaryNurse.practitioner_name,
attendingDoctor.practitioner_id,
attendingDoctor.practitioner_name,
admittingDoctor.practitioner_id,
admittingDoctor.practitioner_name,
chiefDoctor.practitioner_id,
chiefDoctor.practitioner_name,
ao."name",
ap."name",
ap.gender_enum ,
ap.birth_date ,
ap.phone ,
fc.contract_name ,
diagnosis.condition_names
</select>
</mapper>

View File

@@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inhospitalnursestation.mapper.AdviceProcessAppMapper">
<select id="selectInpatientPage"
resultType="com.openhis.web.inhospitalnursestation.dto.AdmissionPatientPageDto">
SELECT ii.encounter_id,
ii.bus_no,
ii.encounter_status,
ii.start_time,
ii.end_time,
ii.admit_source_code,
ii.priority_enum,
ii.organization_id,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.gender_enum,
ii.birth_date,
ii.ward_id,
ii.ward_name,
ii.house_id,
ii.house_name,
ii.bed_id,
ii.bed_name,
ii.organization_name
FROM (
WITH locations AS (
SELECT ael.encounter_id,
al.form_enum,
al.id AS location_id,
al."name" AS location_name
FROM adm_encounter_location ael
LEFT JOIN adm_location al
ON ael.location_id = al.id
AND al.delete_flag = '0'
WHERE ael.status_enum = #{active}
AND ael.delete_flag = '0'
)
SELECT ae.tenant_id,
ae.id AS encounter_id,
ae.bus_no,
ae.status_enum AS encounter_status,
ae.start_time,
ae.end_time,
ae.admit_source_code,
ae.priority_enum,
ae.organization_id,
ap."name" AS patient_name,
ap.py_str AS patient_py_str,
ap.wb_str AS patient_wb_str,
ap.gender_enum,
ap.birth_date,
alw.location_id AS ward_id,
alw.location_name AS ward_name,
alh.location_id AS house_id,
alh.location_name AS house_name,
alb.location_id AS bed_id,
alb.location_name AS bed_name,
ao."name" AS organization_name
FROM adm_encounter ae
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN locations alw
ON alw.encounter_id = ae.id
AND alw.form_enum = #{ward}
LEFT JOIN locations alh
ON alh.encounter_id = ae.id
AND alh.form_enum = #{house}
LEFT JOIN locations alb
ON alb.encounter_id = ae.id
AND alb.form_enum = #{bed}
LEFT JOIN adm_organization ao
ON ao.id = ae.organization_id
AND ao.delete_flag = '0'
WHERE ae.delete_flag = '0'
AND ae.class_enum = #{imp}
AND ae.status_enum != #{toBeRegistered}
AND ae.status_enum != #{registered}
GROUP BY ae.id,
ae.bus_no,
ae.status_enum,
ae.start_time,
ae.end_time,
ae.admit_source_code,
ae.priority_enum,
ae.organization_id,
ap."name",
ap.py_str,
ap.wb_str,
ap.gender_enum,
ap.birth_date,
alw.location_id,
alw.location_name,
alh.location_id,
alh.location_name,
alb.location_id,
alb.location_name,
ao."name"
ORDER BY ae.bus_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectInpatientAdvicePage"
resultType="com.openhis.web.inhospitalnursestation.dto.InpatientAdviceDto">
SELECT ii.encounter_id,
ii.advice_table,
ii.request_id,
ii.start_time,
ii.end_time,
ii.requester_id,
ii.request_time,
ii.skin_test_flag,
ii.inject_flag,
ii.group_id,
ii.advice_name,
ii.item_id,
ii.volume,
ii.lot_number,
ii.quantity,
ii.unit_code,
ii.request_status,
ii.method_code,
ii.rate_code,
ii.dose,
ii.dose_unit_code,
ii.position_id,
ii.position_name,
ii.dispense_per_duration,
ii.part_percent,
ii.condition_definition_name,
ii.therapy_enum,
ii.sort_number,
ii.execute_num,
ii.day_times,
ii.bus_no,
ii."patient_name" AS patient_name,
ii."bad_name" AS bad_name,
ii.gender_enum ,
ii.birth_date ,
ii.contract_name ,
ii.condition_names,
ii.admitting_doctor_name AS admitting_doctor_name,
ii.balance_amount AS balance_amount
FROM (( SELECT T1.encounter_id,
T1.tenant_id,
#{medMedicationRequest} AS advice_table,
T1.id AS request_id,
T1.effective_dose_start AS start_time,
T1.effective_dose_end AS end_time,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2."name" AS advice_name,
T2.id AS item_id,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS request_status,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
al1.id AS position_id,
al1."name" AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T2.part_percent AS part_percent,
ccd."name" AS condition_definition_name,
T1.therapy_enum AS therapy_enum,
T1.sort_number AS sort_number,
T1.execute_num,
af.day_times,
ae.bus_no,
ap."name" AS patient_name,
al2."name" AS bad_name,
ap.gender_enum ,
ap.birth_date ,
fc.contract_name ,
diagnosis.condition_names,
pra."name" AS admitting_doctor_name,
personal_account.balance_amount
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2
ON T2.id = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3
ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_location AS al1
ON al1.id = T1.perform_location
AND al1.delete_flag = '0'
LEFT JOIN cli_condition AS cc
ON cc.id = T1.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd
ON ccd.id = cc.definition_id
AND ccd.delete_flag = '0'
LEFT JOIN adm_frequency af
ON af.rate_code = T1.rate_code
AND af.delete_flag = '0'
LEFT JOIN adm_encounter ae
ON ae.id = T1.encounter_id
AND ae.class_enum = #{imp}
AND ae.delete_flag = '0'
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_location ael
ON ae.id = ael.encounter_id
AND ael.delete_flag = '0'
AND ael.status_enum = #{active}
AND ael.form_enum = #{bed}
LEFT JOIN adm_location al2
ON ael.location_id = al2.id
AND al2.delete_flag = '0'
LEFT JOIN adm_account aa
ON ae.id = aa.encounter_id
AND aa.encounter_flag = 1
AND aa.delete_flag = '0'
LEFT JOIN fin_contract fc
ON aa.contract_no = fc.bus_no
AND fc.delete_flag = '0'
LEFT JOIN ( SELECT aed.encounter_id,
STRING_AGG(ccd.name, ', ') AS condition_names
FROM adm_encounter_diagnosis aed
INNER JOIN cli_condition cc
ON cc.id = aed.condition_id
AND cc.delete_flag = '0'
INNER JOIN cli_condition_definition ccd
ON ccd.id = cc.definition_id
AND ccd.delete_flag = '0'
WHERE aed.delete_flag = '0'
GROUP BY aed.encounter_id
) AS diagnosis
ON ae.id = diagnosis.encounter_id
LEFT JOIN adm_encounter_participant aep
ON ae.id = aep.encounter_id
AND aep.delete_flag = '0'
AND aep.status_enum = #{active}
AND aep.type_code = #{admittingDoctor}
LEFT JOIN adm_practitioner pra
ON aep.practitioner_id = pra.id
AND pra.delete_flag = '0'
LEFT JOIN ( SELECT aa.encounter_id,
(aa.balance_amount -
COALESCE(SUM(CASE WHEN aci.status_enum IN (#{billed}, #{billable})
THEN aci.total_price ELSE 0 END), 0) +
COALESCE(SUM(CASE WHEN aci.status_enum = #{refunded}
THEN aci.total_price ELSE 0 END), 0)) AS balance_amount
FROM adm_account aa
LEFT JOIN adm_charge_item aci
ON aa.encounter_id = aci.encounter_id
AND aa.delete_flag = '0'
WHERE aa.type_code = #{personalCashAccount}
AND aa.delete_flag = '0'
GROUP BY aa.encounter_id,
aa.balance_amount
) AS personal_account
ON personal_account.encounter_id = ae.id
WHERE T1.delete_flag = '0'
AND T1.refund_medicine_id IS NULL
AND CASE WHEN T1.status_enum = #{draft}
THEN T1.performer_check_id IS NOT NULL
ELSE 1=1 END
ORDER BY T1.status_enum,
T1.sort_number,
T1.group_id )
UNION
( SELECT T1.encounter_id,
T1.tenant_id,
#{worServiceRequest} AS advice_table,
T1.id AS request_id,
T1.occurrence_start_time AS start_time,
T1.occurrence_end_time AS end_time,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
NULL AS skin_test_flag,
NULL AS inject_flag,
NULL AS group_id,
T2."name" AS advice_name,
T2.id AS item_id,
NULL AS volume,
NULL AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS request_status,
NULL AS method_code,
NULL AS rate_code,
NULL AS dose,
NULL AS dose_unit_code,
ao1.id AS position_id,
ao1."name" AS position_name,
NULL AS dispense_per_duration,
1 AS part_percent,
ccd."name" AS condition_definition_name,
T1.therapy_enum AS therapy_enum,
NULL AS sort_number,
T1.quantity AS execute_num,
NULL AS day_times,
ae.bus_no,
ap."name" AS patient_name,
al2."name" AS bad_name,
ap.gender_enum ,
ap.birth_date ,
fc.contract_name ,
diagnosis.condition_names,
pra."name" AS admitting_doctor_name,
personal_account.balance_amount
FROM wor_service_request AS T1
LEFT JOIN wor_activity_definition AS T2
ON T2.id = T1.activity_id
AND T2.delete_flag = '0'
LEFT JOIN cli_condition AS cc
ON cc.id = T1.condition_id
AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd
ON ccd.id = cc.definition_id
AND ccd.delete_flag = '0'
LEFT JOIN adm_organization AS ao1
ON ao1.id = T1.org_id
AND ao1.delete_flag = '0'
LEFT JOIN adm_encounter ae
ON ae.id = T1.encounter_id
AND ae.class_enum = #{imp}
AND ae.delete_flag = '0'
LEFT JOIN adm_patient ap
ON ae.patient_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_encounter_location ael
ON ae.id = ael.encounter_id
AND ael.delete_flag = '0'
AND ael.status_enum = #{active}
AND ael.form_enum = #{bed}
LEFT JOIN adm_location al
ON ael.location_id = al.id
AND al.delete_flag = '0'
LEFT JOIN adm_location al2
ON ael.location_id = al2.ID
AND al2.delete_flag = '0'
LEFT JOIN adm_account aa ON ae.ID = aa.encounter_id
AND aa.encounter_flag = 1
AND aa.delete_flag = '0'
LEFT JOIN fin_contract fc ON aa.contract_no = fc.bus_no
AND fc.delete_flag = '0'
LEFT JOIN ( SELECT aed.encounter_id,
STRING_AGG(ccd.name, ', ') AS condition_names
FROM adm_encounter_diagnosis aed
INNER JOIN cli_condition cc
ON cc.id = aed.condition_id
AND cc.delete_flag = '0'
INNER JOIN cli_condition_definition ccd
ON ccd.id = cc.definition_id
AND ccd.delete_flag = '0'
WHERE aed.delete_flag = '0'
GROUP BY aed.encounter_id
) AS diagnosis
ON ae.id = diagnosis.encounter_id
LEFT JOIN adm_encounter_participant aep
ON ae.id = aep.encounter_id
AND aep.delete_flag = '0'
AND aep.status_enum = #{active}
AND aep.type_code = #{admittingDoctor}
LEFT JOIN adm_practitioner pra
ON aep.practitioner_id = pra.id
AND pra.delete_flag = '0'
LEFT JOIN ( SELECT aa.encounter_id,
(aa.balance_amount -
COALESCE(SUM(CASE WHEN aci.status_enum IN (#{billed}, #{billable})
THEN aci.total_price ELSE 0 END), 0) +
COALESCE(SUM(CASE WHEN aci.status_enum = #{refunded}
THEN aci.total_price ELSE 0 END), 0)) AS balance_amount
FROM adm_account aa
LEFT JOIN adm_charge_item aci
ON aa.encounter_id = aci.encounter_id
AND aa.delete_flag = '0'
WHERE aa.type_code = #{personalCashAccount}
AND aa.delete_flag = '0'
GROUP BY aa.encounter_id,
aa.balance_amount
) AS personal_account
ON personal_account.encounter_id = ae.id
WHERE T1.delete_flag = '0'
AND CASE WHEN T1.status_enum = #{draft}
THEN T1.performer_check_id IS NOT NULL
ELSE 1=1 END
AND T1.refund_service_id IS NULL
ORDER BY T1.status_enum )
) AS ii
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,258 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inhospitalnursestation.mapper.InpatientMedicineCollectionMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.inhospitalnursestation.dto.InpatientMedicineEncounterInfoDto">
SELECT ii.tenant_id,
ii.organization_id,
ii.organization_name,
ii.encounter_id,
ii.bus_no,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.gender_enum,
ii.birth_date,
ii.inpatient_bed
FROM (SELECT T1.tenant_id,
T1.organization_id, --科室 
T3.name AS organization_name,
T1.id AS encounter_id, --就诊id
T1.bus_no, --住院号
T2.name AS patient_name, --患者姓名
T2.py_str AS patient_py_str,--拼音码
T2.wb_str AS patient_wb_str,--五笔码
T2.gender_enum, --性别
T2.birth_date, --生日
STRING_AGG(T5.NAME, '_' ORDER BY T5.bus_no) AS inpatient_bed --床位
FROM adm_encounter AS T1
LEFT JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_organization AS T3
ON T1.organization_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_encounter_location AS T4
ON T4.encounter_id = T1.id
AND T4.status_enum = '2'
AND T4.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T4.location_id
AND T5.delete_flag = '0'
WHERE T1.class_enum = #{amb}
--todo status_enum 的值
AND T1.status_enum = 5
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.organization_id,
T3.name,
T1.id,
T1.bus_no,
T2.name,
T2.py_str,
T2.wb_str,
T2.gender_enum,
T2.birth_date) AS ii
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionInfoListPage" resultType="com.openhis.web.inhospitalnursestation.dto.InpatientMedicinePrescriptionInfoDto">
SELECT ii.tenant_id,
ii.dispense_id,--药品发放id
ii.therapy_enum,--治疗类型
ii.planned_dispense_time,--预定发放时间
ii.encounter_id,--就诊id
ii.patient_name,--患者姓名
ii.status_enum,--发放状态
ii.item_table,--项目表
ii.item_id,--项目id
ii.item_name,--项目名
ii.quantity,--请求数量
ii.unit_code,--请求单位编码
ii.location_id,--发放地点
ii.location_name,
ii.lot_number,--批号
ii.total_volume--规格
FROM (SELECT T1.tenant_id,
T1.id AS dispense_id,--发放id
T2.therapy_enum,--治疗类型
T1.planned_dispense_time,--预定发放时间
T1.encounter_id,--就诊id
T3.name AS patient_name,--患者姓名
T1.status_enum,--发放状态
#{medMedicationDefinition} AS item_table,--项目表
T1.medication_id AS item_id,--项目id
T4.name AS item_name,--项目名
T1.quantity,--请求数量
T1.unit_code,--请求单位编码
T1.location_id,--发放地点
T6.name AS location_name,
T1.lot_number,--批号
T5.total_volume--规格
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_patient AS T3
ON T1.patient_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T4
ON T1.medication_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication AS T5
ON T4.id = T5.medication_def_id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.encounter_id IN
<foreach collection="encounterIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.status_enum = #{statusEnum}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.therapy_enum,
T3.name,
T4.name,
T6.name,
T5.total_volume
UNION
SELECT T1.tenant_id,
T1.id AS dispense_id,--发放id
null AS therapy_enum,--治疗类型
T1.planned_dispense_time,--预定发放时间
T1.encounter_id,--就诊id
T3.name AS patient_name,--患者姓名
T1.status_enum,--发放状态
#{admDeviceDefinition} AS item_table,--项目表
T1.device_def_id AS item_id,--项目id
T4.name AS item_name,--项目名
T1.quantity,--请求数量
T1.unit_code,--请求单位编码
T1.location_id,--发放地点
T6.name AS location_name,
T1.lot_number,--批号
T4.size AS total_volume--规格
FROM wor_device_dispense AS T1
LEFT JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_patient AS T3
ON T1.patient_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.device_def_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_device AS T5
ON T4.id = T5.device_def_id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.encounter_id IN
<foreach collection="encounterIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.status_enum = #{statusEnum}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T3.name,
T4.name,
T6.name,
T4.size
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectPrescriptionSummaryInfoListPage" resultType="com.openhis.web.inhospitalnursestation.dto.InpatientMedicinePrescriptionInfoDto">
SELECT ii.tenant_id,
ii.dispense_ids,
ii.item_table,
ii.item_id,
ii.item_name,
ii.quantity,
ii.unit_code,
ii.lot_number,
ii.status_enum,
ii.location_id,
ii.location_enum
FROM (SELECT T1.tenant_id,
string_agg(T1.id::text, ',' ORDER BY T1.id) AS dispense_ids,
#{medMedicationDefinition} AS item_table,--项目表
T1.medication_id AS item_id,--项目id
T4.name AS item_name,--项目名
SUM(T1.quantity) AS quantity,--请求数量
T1.unit_code,--请求单位编码
T1.lot_number,--批号
T1.status_enum,--发放状态
T1.location_id,--发放地点
T6.form_enum AS location_enum--地点类型
FROM med_medication_dispense AS T1
LEFT JOIN med_medication_request AS T2
ON T1.med_req_id = T2.id
AND T2.delete_flag = '0'
-- LEFT JOIN adm_patient AS T3
-- ON T1.patient_id = T3.id
-- AND T3.delete_flag = '0'
LEFT JOIN med_medication_definition AS T4
ON T1.medication_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication AS T5
ON T4.id = T5.medication_def_id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.id IN
<foreach collection="medDispenseId" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.medication_id,
T1.unit_code,
T1.lot_number,
T1.location_id,
T4.name,
T6.form_enum
UNION
SELECT T1.tenant_id,
string_agg(T1.id::text, ',' ORDER BY T1.id) AS dispense_ids,
#{admDeviceDefinition} AS item_table,--项目表
T1.device_def_id AS item_id,--项目id
T4.name AS item_name,--项目名
SUM(T1.quantity) AS quantity,--请求数量
T1.unit_code,--请求单位编码
T1.lot_number,--批号
T1.status_enum,--发放状态
T1.location_id,--发放地点
T6.form_enum AS location_enum--地点类型
FROM wor_device_dispense AS T1
LEFT JOIN wor_device_request AS T2
ON T1.device_req_id = T2.id
AND T2.delete_flag = '0'
-- LEFT JOIN adm_patient AS T3
-- ON T1.patient_id = T3.id
-- AND T3.delete_flag = '0'
LEFT JOIN adm_device_definition AS T4
ON T1.device_def_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_device AS T5
ON T4.id = T5.device_def_id
AND T5.delete_flag = '0'
LEFT JOIN adm_location AS T6
ON T1.location_id = T6.id
AND T6.delete_flag = '0'
WHERE T1.id IN
<foreach collection="devDispenseId" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.device_def_id,
T1.unit_code,
T1.lot_number,
T1.location_id,
T4.name,
T6.form_enum) AS ii
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inpatientmanage.mapper.AdmissionMapper">
<!-- 住院登记信息分页查询-->
<select id="getPage" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.AdmissionDto">
SELECT
T1.id,
T1.patient_id,
T1.group_id,
T1.encounter_bus_no,
T1.status_enum,
T1.class_enum,
T1.yb_class_enum,
T1.organization_id,
T1.in_way_code,
T1.admit_source_code,
T1.tenant_id,
T1.create_time,
T1.create_by,
T1.name,
T1.patient_bus_no,
T1.gender_enum,
T1.birth_date,
T1.phone,
T1.id_card,
T1.py_str,
T1.wb_str,
T1.ward_location_id
FROM
(
SELECT
e.id,
e.patient_id,
e.group_id,
e.bus_no as encounter_bus_no,
e.status_enum,
e.class_enum,
e.yb_class_enum,
e.organization_id,
e.admit_source_code,
e.in_way_code,
e.tenant_id,
e.create_time,
e.create_by,
p.name,
p.bus_no AS patient_bus_no,
p.gender_enum,
p.birth_date,
p.phone,
p.id_card,
p.py_str,
p.wb_str,
(SELECT el.location_id
FROM adm_encounter_location el
WHERE el.encounter_id = e.id AND el.form_enum = #{formEnum} --4:病区
ORDER BY el.id DESC
LIMIT 1) as ward_location_id--病区
FROM adm_encounter e
LEFT JOIN adm_patient p ON e.patient_id = p.id
<where>
e.delete_flag = '0'
AND e.class_enum = #{classEnum} --1:住院
</where>
ORDER BY e.bus_no desc
) AS T1
${ew.customSqlSegment}
</select>
<!-- 住院登记信息分页查询-->
<select id="getAdmissionOne" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.AdmissionUpDto">
SELECT
e.id,
e.patient_id,
e.group_id,
e.bus_no as encounter_bus_no,
e.status_enum,
e.class_enum,
e.yb_class_enum,
e.class_json,
e.priority_enum,
e.type_enum,
e.service_type_id,
e.subject_status_enum,
e.start_time,
e.end_time,
e.organization_id,
e.display_order,
e.admit_source_code,
e.in_way_code,
e.first_enum,
e.tenant_id,
p.name,
p.bus_no AS patient_bus_no,
p.gender_enum,
p.birth_date,
p.address,
p.prfs_enum,
p.phone,
p.id_card,
p.py_str,
p.wb_str,
p.work_company,
p.native_place,
p.country_code,
p.nationality_code,
p.link_name,
p.link_relation_code,
p.link_telcom,
(SELECT pra.name
FROM adm_encounter_participant ep
LEFT JOIN adm_practitioner pra ON ep.practitioner_id = pra.id
WHERE ep.encounter_id = e.id
AND ep.type_code = #{typeCode} --就诊参与者身份类型是1:接诊医生
ORDER BY ep.create_time DESC
LIMIT 1) AS doctor_name,--接诊医生
COALESCE((SELECT COUNT(*)
FROM adm_encounter e1
WHERE e1.patient_id = e.patient_id
AND e1.class_enum = #{classEnum} --住院类型
AND e1.status_enum = #{statusEnum} --出院,诊毕
), 0) AS hospitalization_count,-- 住院次数
el.location_id AS ward_location_id, --病区
l.bus_no,
(SELECT COUNT(*)
FROM adm_location
WHERE bus_no LIKE l.bus_no || '%'
AND form_enum = #{bedForm} -- 8:病床
AND operational_enum = #{operational} -- 病床状态 3占用中
) || '/' ||
(SELECT COUNT(*)
FROM adm_location
WHERE bus_no LIKE l.bus_no || '%'
AND form_enum = #{bedForm} -- 8:病床
) AS bed_count -- 占用中/病床总数
FROM adm_encounter e
LEFT JOIN adm_patient p ON e.patient_id = p.id
LEFT JOIN adm_encounter_location el ON e.id = el.encounter_id AND el.form_enum = #{wardForm}--4病区
LEFT JOIN adm_location l ON l.id = el.location_id AND l.form_enum = #{wardForm}--4病区
<where>
e.delete_flag = '0'
AND e.class_enum = #{classEnum}
<if test="id!= null">
AND e.id = #{id}
</if>
<if test="tenantId!= null">
AND e.tenant_id = #{tenantId}
</if>
</where>
ORDER BY e.bus_no desc
</select>
</mapper>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inpatientmanage.mapper.DepositMapper">
<!-- 住院登记信息分页查询-->
<select id="getPage" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.DepositDetailDto">
SELECT T8.patient_id,
T8.name,
T8.gender_enum,
T8.birth_date,
T8.bed_location_id,
T8.organization_id,
T8.total_price,
T8.deposit,
T8.balance_amount,
T8.pay_way,
T8.payment_enum,
T8.tendered_amount,
T8.bus_no,
T8.status_enum,
T8.after_balance,
T8.pay_time,
T8.enterer_id
FROM (SELECT T1.id AS patient_id, --住院号
T1.name, --患者姓名
T1.gender_enum, --性别编码
T1.birth_date, --生日
T3.location_id AS bed_location_id, --位置ID床位号
T1.organization_id, --机构Id科室
COALESCE(SUM_TOTAL.total_price, 0) AS total_price, -- 总额
COALESCE(SUM_DEPOSIT.deposit, 0) AS deposit, -- 预交金
T4.balance_amount, --余额
CASE T4.pay_enum
WHEN '220100' THEN '微信'
WHEN '220200' THEN '支付宝'
WHEN '220300' THEN '银联'
WHEN '220400' THEN '现金'
ELSE '其他'
END AS pay_way, --支付方式
T5.payment_enum, --状态
T5.tendered_amount, --金额
T7.bus_no, --收据号
T7.status_enum, --票据状态
T6.after_balance, --可退金额
T6.pay_trans_date AS pay_time, --收款时间
T5.enterer_id --收款员
FROM adm_patient AS T1
INNER JOIN adm_encounter AS T2
ON T2.patient_id = T1.id
AND T2.class_enum = #{classEnum}
LEFT JOIN adm_encounter_location AS T3
ON T3.encounter_id = T2.id
AND T3.form_enum = #{formEnum}
AND T3.delete_flag = '0'
LEFT JOIN adm_account AS T4
ON T4.patient_id = T1.id
AND T4.encounter_id = T2.id
AND T4.delete_flag = '0'
LEFT JOIN fin_payment_reconciliation AS T5
ON T5.patient_id = T1.id
AND T5.encounter_id = T2.id
AND T5.delete_flag = '0'
LEFT JOIN fin_payment_rec_detail AS T6
ON T6.reconciliation_id = T5.id
AND T6.delete_flag = '0'
LEFT JOIN adm_invoice AS T7
ON T7.reconciliation_id = T6.reconciliation_id
AND T7.patient_id = T1.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT patient_id, SUM(tendered_amount) AS total_price
FROM fin_payment_reconciliation
WHERE kind_enum = 2
GROUP BY patient_id) AS SUM_TOTAL
ON SUM_TOTAL.patient_id = T1.id
LEFT JOIN (SELECT patient_id, SUM(tendered_amount) AS deposit
FROM fin_payment_reconciliation
WHERE kind_enum = 1
GROUP BY patient_id) AS SUM_DEPOSIT
ON SUM_DEPOSIT.patient_id = T1.id
WHERE T1.delete_flag = '0'
ORDER BY T6.pay_trans_date desc
) AS T8
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inpatientmanage.mapper.NursingRecordAppMapper">
<!-- 患者信息分页查询-->
<select id="getPatientPage" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.NursingPageDto">
SELECT T5.tenant_id,
T5.patient_id,
T5.patient_name,
T5.patient_bus_no,
T5.birth_date,
T5.gender_enum,
T5.org_id,
T5.encounter_id,
T5.admissionDate,
T5.ward_location_id,
T5.bed_location_id
FROM (SELECT T1.tenant_id,
T1.id AS patient_id, --患者ID
T1.name AS patient_name, --患者姓名
T1.bus_no AS patient_bus_no, --病历号
T1.birth_date, --患者出生日期
T1.gender_enum, --患者性别
T1.organization_id AS org_id, --科室ID
T2.id AS encounter_id, --就诊ID
T2.start_time AS admissionDate, --入院日期
T3.location_id AS ward_location_id, --病区
T4.location_id AS bed_location_id --床号
FROM adm_patient AS T1
INNER JOIN adm_encounter AS T2
ON T2.patient_id = T1.id
AND T2.class_enum = #{classEnum}
AND T2.delete_flag = '0'
INNER JOIN (SELECT encounter_id,
location_id,
form_enum,
delete_flag
FROM (SELECT encounter_id,
location_id,
form_enum,
delete_flag,
ROW_NUMBER() OVER (PARTITION BY encounter_id
ORDER BY
CASE
WHEN update_time IS NULL THEN create_time
ELSE update_time
END DESC) AS rn
FROM adm_encounter_location
WHERE form_enum = #{ward}
AND delete_flag = '0'
) ranked
WHERE rn = 1) AS T3
ON T3.encounter_id = T2.ID
INNER JOIN adm_encounter_location AS T4
ON T4.encounter_id = T2.ID
AND T4.form_enum = #{bed}
AND T4.status_enum = #{active}
AND T4.delete_flag = '0'
WHERE T1.delete_flag = '0'
ORDER BY T4.location_id ASC) AS T5
${ew.customSqlSegment}
</select>
<!-- 患者护理记录单信息分页查询-->
<select id="getNursingPatientPage" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.NursingDetailDto">
SELECT T6.tenant_id,
T6.patient_id,
T6.patient_name,
T6.birth_date,
T6.gender_enum,
T6.org_id,
T6.encounter_id,
T6.admissionDate,
T6.ward_location_id,
T6.record_id,
T6.recorder_id,
T6.recording_time,
T6.context_json,
T6.bed_location_id
FROM (SELECT T1.tenant_id,
T1.id AS patient_id, --患者ID
T1.name AS patient_name, --患者姓名
T1.birth_date, --患者出生日期
T1.gender_enum, --患者性别
T1.organization_id AS org_id, --科室ID
T2.id AS encounter_id, --就诊ID
T2.start_time AS admissionDate, --入院日期
T3.location_id AS ward_location_id, --病区
T5.id AS record_id, --记录单ID
T5.record_id AS recorder_id, --记录人
T5.record_time AS recording_time, --记录时间
T5.context_json, --病历信息
T4.location_id AS bed_location_id --床号
FROM adm_patient AS T1
INNER JOIN adm_encounter AS T2
ON T2.patient_id = T1.id
AND T2.class_enum = #{classEnum}
AND T2.delete_flag = '0'
INNER JOIN (SELECT encounter_id,
location_id,
form_enum,
delete_flag
FROM (SELECT encounter_id,
location_id,
form_enum,
delete_flag,
ROW_NUMBER() OVER (PARTITION BY encounter_id
ORDER BY
CASE
WHEN update_time IS NULL THEN create_time
ELSE update_time
END DESC) AS rn
FROM adm_encounter_location
WHERE form_enum = #{ward}
AND delete_flag = '0'
) ranked
WHERE rn = 1) AS T3
ON T3.encounter_id = T2.ID
INNER JOIN adm_encounter_location AS T4
ON T4.encounter_id = T2.ID
AND T4.form_enum = #{bed}
AND T4.status_enum = #{active}
AND T4.delete_flag = '0'
LEFT JOIN doc_emr AS T5
ON T5.patient_id = T1.id
AND T5.encounter_id = T2.ID
AND T5.class_enum = 1 --护理记录单
AND T5.delete_flag = '0'
WHERE T1.delete_flag = '0'
ORDER BY T5.record_time DESC) AS T6
${ew.customSqlSegment}
</select>
<!-- 病历模板分页查询-->
<select id="getEmrTemplate" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.NursingEmrTemplateDto">
SELECT T2.tenant_id,
T2.id,
T2.template_name,
T2.template_type_code,
T2.use_scope_code,
T2.use_scope_code_text,
T2.user_id,
T2.context_json
FROM (SELECT T1.tenant_id,
T1.id,
T1.template_name,
T1.template_type_code,
T1.use_scope_code,
CASE
WHEN T1.use_scope_code = '1' THEN '个人'
WHEN T1.use_scope_code = '2' THEN '科室'
WHEN T1.use_scope_code = '3' THEN '全院'
END AS use_scope_code_text,
T1.user_id,
T1.context_json
FROM doc_emr_template AS T1
WHERE T1.delete_flag = '0'
AND T1.template_type_code = #{nursing}
ORDER BY T1.create_time DESC) AS T2
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inpatientmanage.mapper.PatientHomeAppMapper">
<!-- 患者首页信息分页查询-->
<select id="getPage" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.PatientHomeDto">
SELECT
T1.id,
T1.active_flag,
T1.temp_flag,
T1."name" AS patientName, -- 患者姓名
T1.name_json,
T1.bus_no AS patientNo, -- 病历号
T1.gender_enum, -- 患者性别
T1.birth_date,
T1.deceased_date,
T1.marital_status_enum,
T1.prfs_enum,
T1.phone, -- 患者手机号
COALESCE(NULLIF(T1.address, ''), '') AS address, -- 处理空地址
T1.address_province,
T1.address_city,
T1.address_district,
T1.address_street,
T1.address_json,
T1.nationality_code,
T1.id_card,
T1.py_str,
T1.wb_str,
T1.blood_abo,
T1.blood_rh,
T1.work_company,
T1.native_place,
T1.country_code,
T1.link_name,
T1.link_relation_code,
T1.link_telcom,
T1.link_jsons,
T1.tenant_id,
T2.bus_no AS hospitalNo, -- 住院号
T2.id AS encounterId, -- 就诊ID
T2.priority_enum, -- 护理级别
T2.status_enum, -- 患者状态
T2.organization_id,-- 入院科室
T2.start_time AS admissionDate, -- 入院日期
T2.end_time AS dischargeDate, -- 出院日期
T2.class_enum, -- 就诊类别
Doctor.name AS responsibleDoctor, -- 责任医生
Nurse.name AS responsibleNurse, -- 责任护士
T6.type_code, -- 费别
T7.status_enum AS surgeryStatusEnum, -- 手术状态
T8.start_time AS surgeryStartTime, -- 手术开始时间
T8.end_time AS surgeryEndTime, -- 手术结束时间
T9.id AS encounterLocationId, -- 就诊位置ID
T9.location_id, -- 床位号
T10.category_code, -- 过敏原
T11."name" AS caty, -- 入院科室
T12."name" AS mainDiagnosis -- 主要诊断
FROM adm_patient AS T1
LEFT JOIN adm_encounter T2
ON T1.id = T2.patient_id -- 患者ID
AND T2.delete_flag = '0'
AND T2.class_enum = '1' -- 仅选择住院患者
-- 获取责任医生
LEFT JOIN (
SELECT
encounter_id,
practitioner_id,
"name",
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY practitioner_id) as rn
FROM (
SELECT
T3.encounter_id,
T4."name",
T3.practitioner_id
FROM adm_encounter_participant T3
LEFT JOIN adm_practitioner T4
ON T3.practitioner_id = T4.id
AND T4.delete_flag = '0'
WHERE T3.type_code = '9' -- 责任医生类型
AND T3.delete_flag = '0'
) sub
) Doctor ON T2.id = Doctor.encounter_id AND Doctor.rn = 1
-- 获取责任护士
LEFT JOIN (
SELECT
encounter_id,
practitioner_id,
"name",
ROW_NUMBER() OVER (PARTITION BY encounter_id ORDER BY practitioner_id) as rn
FROM (
SELECT
T3.encounter_id,
T4."name",
T3.practitioner_id
FROM adm_encounter_participant T3
LEFT JOIN adm_practitioner T4
ON T3.practitioner_id = T4.id
AND T4.delete_flag = '0'
WHERE T3.type_code = '2' -- 责任护士类型
AND T3.delete_flag = '0'
) sub
) Nurse ON T2.id = Nurse.encounter_id AND Nurse.rn = 1
LEFT JOIN adm_encounter_diagnosis T5
ON T2.id = T5.encounter_id -- 就诊ID
AND T5.maindise_flag = 1
AND T5.delete_flag = '0'
LEFT JOIN adm_account T6
ON T2.id = T6.encounter_id -- 就诊ID
AND T6.delete_flag = '0'
LEFT JOIN cli_procedure T7
ON T1.id = T7.patient_id -- 患者ID
AND T7.delete_flag = '0'
LEFT JOIN cli_procedure_performer T8
ON T7.id = T8.procedure_id -- 手术ID
AND T8.delete_flag = '0'
LEFT JOIN adm_encounter_location T9
ON T2.id = T9.encounter_id -- 就诊ID
AND T9.form_enum = 8
AND T9.delete_flag = '0'
LEFT JOIN cli_allergy_intolerance T10
ON T1.id = T10.patient_id -- 患者ID
AND T10.delete_flag = '0'
LEFT JOIN adm_organization T11
ON T2.organization_id = T11.id
AND T11.type_enum = 2
AND T11.delete_flag = '0'
LEFT JOIN cli_condition_definition T12
ON T5.condition_id = T12.id
AND T12.delete_flag = '0'
LEFT JOIN wor_service_request T13
ON T2.id = T13.encounter_id
AND T7.base_service_req_id = T13.id
AND T13.delete_flag = '0'
LEFT JOIN wor_service_request_detail T14
ON T13.id = T14.service_req_id
AND T14.type_code = '3'
AND T14.delete_flag = '0'
<where>
T1.delete_flag = '0'
-- 患者ID
<if test="patientId != null">
AND T1.id = #{patientId}
</if>
-- 在科
<if test="statusEnum == 1">
AND T9.status_enum = 2
</if>
-- 待出院
<if test="statusEnum == 3">
AND T2.status_enum = 4
</if>
-- 危重
<if test="statusEnum == 4">
AND T2.priority_enum = 1
</if>
-- 手术
<if test="statusEnum == 5">
AND T14.type_code = '3'
</if>
-- 欠费
<if test="statusEnum == 6">
AND T6.balance_amount &lt; 0
</if>
-- 已出院
<if test="statusEnum == 7">
AND T2.status_enum = 5
</if>
<if test="searchKey != null and searchKey != ''">
AND (
-- 住院号
T2.bus_no = #{searchKey}
-- 患者姓名
OR T1.name like concat('%', #{searchKey}, '%')
-- 责任医生
OR Doctor.name like concat('%', #{searchKey}, '%')
-- 责任护士
OR Nurse.name like concat('%', #{searchKey}, '%')
)
</if>
</where>
ORDER BY T9.location_id ASC
</select>
<!-- 科室空床查询-->
<select id="getEmptyBedList" parameterType="java.util.List"
resultType="com.openhis.web.inpatientmanage.dto.PatientHomeEmptyBedDto">
SELECT id as locationId
FROM adm_location
WHERE organization_id = #{organizationId}
AND operational_enum = 4
AND form_enum = 8
AND delete_flag = '0'
ORDER BY id ASC
</select>
</mapper>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.inpatientmanage.mapper.VitalSignsAppMapper">
<!-- 三测单患者信息查询-->
<select id="getVitalSignsInfo" parameterType="java.util.Map"
resultType="com.openhis.web.inpatientmanage.dto.VitalSignsDto">
SELECT T1.id,
T1.patient_id,
T1.encounter_id,
T1.recording_date,
T1.time_point,
T1.vital_signs_code,
T1.vital_signs_values,
T1.units,
T1.baby_no,
T1.location_id,
T1.recorder,
T1.remake,
T2."name", -- 患者姓名
T3.bus_no AS hospitalNo, -- 住院号
T3.class_enum, -- 就诊类别
T3.organization_id, -- 科室ID
T3.start_time AS admissionDate, -- 入院日期
T3.end_time AS dischargeDate, -- 出院日期
T4.location_id AS bedLocationId, -- 床位号
T5.status_enum AS surgeryStatusEnum, -- 手术状态
T6.start_time AS surgeryStartTime, -- 手术开始时间
T6.end_time AS surgeryEndTime -- 手术结束时间
FROM doc_vital_signs T1
LEFT JOIN adm_patient T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_encounter T3
ON T1.encounter_id = T3.id
AND T3.delete_flag = '0'
LEFT JOIN adm_encounter_location T4
ON T1.encounter_id = T4.encounter_id -- 就诊ID
AND T4.form_enum = 8
AND T4.delete_flag = '0'
LEFT JOIN cli_procedure T5
ON T1.patient_id = T5.patient_id -- 患者ID
AND T5.delete_flag = '0'
LEFT JOIN cli_procedure_performer T6
ON T5.id = T6.procedure_id -- 手术ID
AND T6.delete_flag = '0'
LEFT JOIN wor_service_request T7
ON T1.encounter_id = T7.encounter_id
AND T5.base_service_req_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN wor_service_request_detail T8
ON T7.id = T8.service_req_id
AND T8.type_code = '3'
AND T8.delete_flag = '0'
<where>
-- 患者ID
T1.patient_id = #{patientId}
AND T1.delete_flag = '0'
</where>
ORDER BY recording_date, time_point ASC
</select>
<!-- 三测单患者信息查询-->
<select id="searchVitalSigns" parameterType="java.util.Map"
resultType="com.openhis.document.domain.VitalSigns">
SELECT T1.id,
T1.patient_id,
T1.encounter_id,
T1.recording_date,
T1.time_point,
T1.vital_signs_code,
T1.vital_signs_values,
T1.units,
T1.baby_no,
T1.location_id,
T1.recorder,
T1.remake
FROM doc_vital_signs T1
<where>
-- 记录日期
T1.recording_date &gt;= #{startTime}::date
AND T1.recording_date &lt;= #{endTime}::date
AND T1.delete_flag = '0'
</where>
ORDER BY T1.recording_date, T1.time_point, T1.vital_signs_code ASC
</select>
<!-- 三测单患者信息删除-->
<delete id="deleteVitalSigns">
DELETE FROM doc_vital_signs
<where>
-- 患者ID
patient_id = #{patientId}
-- 就诊ID
AND encounter_id = #{encounterId}
-- 记录日期
AND recording_date = #{recordingDate}
-- 记录时间
AND time_point = #{timePoint}
-- 删除状态
AND delete_flag = '0'
</where>
</delete>
</mapper>

View File

@@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialCommonMapper">
<select id="getDeviceInfo"
resultType="com.openhis.web.materialmanage.dto.MaterialDeviceInfoDto">
SELECT T6.id,--物品id
T6.bus_no,-- 药品编号
T6.name,-- 物品名称
T6.py_str,-- 拼音码
T6.total_volume,--规格
T6.unit_code,-- 包装单位
T6.min_unit_code,--最小单位
T6.part_percent,--拆零比
T6.price,--进货单价
T6.retailPrice,--零售价
T6.manufacturer_text,-- 厂家/产地
T6.approval_number,--批准文号
T6.item_min_quantity, --库存最小警戒线
T6.specification_inventory,--规格库存
T6.batch_inventory,--批次库存
T6.lot_number,
T6.production_date,--生产日期
T6.expiration_date,--失效日期
<if test="locationId != null">
T6.location_id,
</if>
T6.supplier_id,
T6.tenant_id
FROM (SELECT T1.id,--物品id
T1.bus_no,-- 药品编号
T1.name,-- 物品名称
T1.py_str,-- 拼音码
T1.size AS total_volume,--规格
T1.unit_code,-- 包装单位
T1.min_unit_code,--最小单位
T1.part_percent,--拆零比
CASE
WHEN T9.lot_number IS NULL THEN
CASE T4.condition_value
WHEN T1.min_unit_code THEN T4.amount * T1.part_percent
ELSE T4.amount END
ELSE CASE T4.condition_value
WHEN T1.min_unit_code THEN T10.amount * T1.part_percent
ELSE T10.amount END
END AS price,--进货单价(大单位)
CASE
WHEN T9.lot_number IS NULL THEN
CASE T5.condition_value
WHEN T1.min_unit_code THEN T5.amount * T1.part_percent
ELSE T5.amount END
ELSE CASE T5.condition_value
WHEN T1.min_unit_code THEN T11.amount * T1.part_percent
ELSE T11.amount END
END AS retailPrice,--零售价(大单位)
T1.manufacturer_text,-- 厂家/产地
T1.approval_number,--批准文号
T1.item_min_quantity * T1.part_percent AS item_min_quantity, --库存最小警戒线(小单位)
COALESCE(CAST(T8.specification_inventory AS DECIMAL(18, 6)), 0.00) AS specification_inventory,--规格库存(小单位)
COALESCE(CAST(T9.batch_inventory AS DECIMAL(18, 6)), 0.00) AS batch_inventory,--批次库存(小单位)
T9.lot_number,
T7.production_date,--生产日期
T7.expiration_date,--失效日期
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T1.tenant_id
FROM adm_device_definition AS T1
LEFT JOIN adm_device AS T2
ON T1.id = T2.device_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3
ON T3.instance_id = T1.id
AND T3.instance_table = 'adm_device_definition'
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T4
ON T4.definition_id = T3.id
AND T4.condition_code = '2'--2:采购价
AND T4.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T5
ON T5.definition_id = T3.id
AND T5.condition_code = '3'--2:单位
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item T7
ON T7.item_table = 'adm_device_definition'
AND T7.item_id = T1.id
AND T7.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
<if test="locationId != null">
i1.location_id,
</if>
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_inventory
FROM wor_inventory_item i1
LEFT JOIN adm_device_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'adm_device_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id
<if test="locationId != null">
,i1.location_id
</if>) T8
ON T8.item_table = 'adm_device_definition'
AND T8.item_id = T1.ID
<if test="locationId != null">
AND T8.location_id = T7.location_id
</if>
LEFT JOIN (SELECT i3.item_table,
i3.item_id,
i3.lot_number,
<if test="locationId != null">
i3.location_id,
</if>
COALESCE(CAST(SUM(i3.quantity) AS DECIMAL(18, 6)), 0.00) AS batch_inventory
FROM wor_inventory_item i3
LEFT JOIN adm_device_definition i4 ON i3.item_id = i4.ID
AND i4.delete_flag = '0'
WHERE i3.item_table = 'adm_device_definition'
AND i3.delete_flag = '0'
GROUP BY i3.item_table,
i3.item_id,
i3.lot_number
<if test="locationId != null">
,i3.location_id
</if>) T9
ON T9.item_table = 'adm_device_definition'
AND T9.item_id = T1.ID
AND T9.lot_number = T7.lot_number
<if test="locationId != null">
AND T9.location_id = T7.location_id
</if>
LEFT JOIN adm_charge_item_def_detail T10
ON T10.definition_id = T3.id
AND T10.condition_code = '1'--1:批号进价
AND T10.condition_value = T9.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail T11
ON T11.definition_id = T3.id
AND T11.condition_code = '5'--1:批号售价
AND T11.condition_value = T9.lot_number
AND T11.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="locationId != null">
AND T7.location_id = #{locationId}
</if>
GROUP BY T1.id,
T1.size,
T4.condition_value,
T5.condition_value,
T4.amount,
T5.amount,
T10.amount,
T11.amount,
T8.specification_inventory,
T9.batch_inventory,
T9.lot_number,
<if test="locationId != null">
T7.location_id,
</if>
T7.supplier_id,
T7.production_date,
T7.expiration_date
<if test="supplierId != null">
HAVING
T8.specification_inventory <![CDATA[ <= ]]> (T1.item_min_quantity * T1.part_percent)
</if>
ORDER BY T1.bus_no) AS T6
${ew.customSqlSegment}
</select>
<select id="getPage"
resultType="com.openhis.web.materialmanage.dto.MaterialDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.supplier_id, --供应商
T4.location_type_enum, --仓库类型
T4.location_id, --仓库
T4.applicant_id, --开单人
T4.applicant_name, --开单人
T4.approver_id, --审批人
T4.apply_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum AS location_type_enum,
T1.source_location_id AS location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum AS location_type_enum,
T1.purpose_location_id AS location_id,
</if>
T1.applicant_id,
T2.name AS applicant_name,
T1.approver_id,
T1.apply_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN adm_practitioner AS T2
ON T2.id = T1.applicant_id
AND T2.delete_flag = '0'
WHERE T1.delete_flag = '0'
<if test="originalBusNoFlg != null">
and original_bus_no = ''
</if>
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.supplier_id,
<if test="locationFlg != null">
T1.source_type_enum,
T1.source_location_id,
</if>
<if test="locationFlg == null">
T1.purpose_type_enum,
T1.purpose_location_id,
</if>
T1.applicant_id,
T2.name,
T1.approver_id,
T1.apply_time,
T1.approval_time
) AS T4
${ew.customSqlSegment}
</select>
<select id="getDetailPage"
resultType="com.openhis.web.materialmanage.dto.MaterialDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T2.bus_no AS item_bus_no, --药品编码
T1.item_id, --药品id
T2.name AS item_name, --名称
T2.size AS total_volume, --规格
T1.unit_code, --选择单位
T2.unit_code AS max_unit_code, --常规单位
T2.min_unit_code AS min_unit_code, --最小单位
T2.part_percent, --拆零比
T1.item_quantity, --数量
T1.total_quantity, --合计数量
T1.price, --采购单价
T1.total_price, --采购总价
T1.retail_price, --零售价
T1.total_retail_price, --零价金额
T2.manufacturer_text, --生产厂商文本
T2.approval_number, --批准文号
T1.remake, --备注
T1.reason, --摘要(理由)
T1.reason_code, --理由类型
T1.batch_inventory, --批次库存
T1.specification_inventory, --规格库存
T1.applicant_id,--申请人
T1.apply_time,--申请时间
T1.approver_id,--审批人
T1.approval_time,--审批时间
T1.supplier_id,--供应商
T4.phone,--供应商联系人
T1.status_enum,
T1.type_enum,
T1.category_enum,--单据类型
T1.source_type_enum, --源仓库类型
T1.source_location_id, --源仓库
T1.purpose_type_enum, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.practitioner_id,--仓库员
T1.invoice_no,--发票号
T1.lot_number,--产品批号
T1.start_time,--开始时间
T1.end_time,--结束时间
T1.packaging_condition_enum,--包装情况
T1.acceptance_result_enum,--验收结果
T1.trace_no,--追溯码
T1.trace_no_unit_code,--追溯码包装
T1.occurrence_time,--禁用日期
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN adm_device_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_device AS T3
ON T2.id = T3.device_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier AS T4
ON T4.id = T1.supplier_id
AND T4.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
GROUP BY T1.id,
T2.bus_no,
T2.name,
T2.unit_code,
T2.min_unit_code,
T2.size,
T2.part_percent,
T2.manufacturer_text,
T2.approval_number,
T4.phone
</select>
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialProfitLossOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialPurchaseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialReturnOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialReturnToWarehouseOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialStockInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialStockOutOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialStocktakingOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialTransferInOrderMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.materialmanage.mapper.MaterialTransferOutOrderMapper">
</mapper>

View File

@@ -0,0 +1,316 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.outpatientmanage.mapper.OutpatientInfusionAppMapper">
<!-- 门诊皮试记录相关查询-->
<select id="getSkinTestRecords"
parameterType="com.openhis.web.outpatientmanage.dto.OutpatientSkinTestRecordSearchParam"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientSkinTestRecordDto">
SELECT
T1.tenant_id,
T1.id,
T1.prescription_no,
T1.encounter_bus_no,
T1.patient_name,
T1.patient_bus_no,
T1.patient_id,
T1.phone,
T1.medication_information,
T1.medication_detail,
T1.medication_lot_number,
T1.medication_status_enum,
T1.performer_id,
T1.performer_check_id,
T1.occurrence_start_time,
T1.occurrence_end_time,
T1.clinical_status_enum,
T1.verification_status_enum,
T1.doctor_id,
T1.recorded_date,
T1.note
FROM
(
SELECT
sr.tenant_id,
sr.id, --服务申请管理ID
mr.prescription_no, --处方号
e.bus_no as encounter_bus_no, --就诊号
pt.name AS patient_name, --病人姓名
pt.bus_no AS patient_bus_no, --病人ID前台显示用
pt.phone,
sr.patient_id, --病人ID
ad.name AS medication_information, --药品信息
md.bus_no || ' ' || md.name || ' 规格:' || COALESCE(m.total_volume, '') AS medication_detail,--药品
m.lot_number AS medication_lot_number, --药品批次号
mmd.status_enum AS medication_status_enum, --药品发放状态
sr.performer_id, --执行护士
sr.performer_check_id,--核对人
to_char(sr.occurrence_start_time, 'YYYY-MM-DD HH24:MI:SS') AS occurrence_start_time, --预计执行时间
to_char(sr.occurrence_end_time, 'YYYY-MM-DD HH24:MI:SS') AS occurrence_end_time, --预计结束时间
ai.clinical_status_enum, --皮试结果
ai.verification_status_enum, --皮试检查项目状态
mr.practitioner_id as doctor_id, --开单医生
ai.recorded_date,
ai.note --备注
FROM
wor_service_request sr
LEFT JOIN (
SELECT DISTINCT ON (request_id)
ai.id,
ai.request_id,
ai.clinical_status_enum,
ai.verification_status_enum,
ai.recorded_date,
ai.note
FROM
cli_allergy_intolerance ai
WHERE
ai.delete_flag = '0'
ORDER BY
ai.request_id,
ai.create_time DESC
) ai ON ai.request_id = sr.id
-- LEFT JOIN cli_allergy_intolerance ai ON ai.request_id = sr.id
-- AND ai.delete_flag = '0'
LEFT JOIN adm_encounter e ON e.id = sr.encounter_id
AND e.delete_flag = '0'
LEFT JOIN adm_patient pt ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_request mr ON mr.encounter_id = sr.encounter_id
AND mr.delete_flag = '0'
LEFT JOIN med_medication_definition md ON md.id = mr.medication_id
AND md.delete_flag = '0'
LEFT JOIN med_medication m ON md.id = m.medication_def_id
AND m.delete_flag = '0'
LEFT JOIN med_medication_dispense mmd ON mr.id = mmd.med_req_id
AND mmd.delete_flag = '0'
<where>
ad.name = '皮试检查'
AND mr.skin_test_flag = 1
AND mmd.status_enum IN (2,3,4,14)--药品发放状态:(DispenseStatus枚举类)
AND md.skin_test_flag = 1
AND sr.status_enum IN (2,3,10) --服务状态待执行(RequestStatus枚举类)
</where>
ORDER BY sr.prescription_no,e.bus_no,md.bus_no
) AS T1
${ew.customSqlSegment}
</select>
<!-- 门诊输液记录患者列表信息查询-->
<select id="getOutpatientInfusionPatient"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionPatientDto">
SELECT T1.service_status,
T1.encounter_id,
T1.encounter_bus_no,
T1.birth_date,
T1.patient_bus_no,
T1.patient_id,
T1.patient_name,
T1.patient_py_str,
T1.patient_wb_str,
T1.gender_enum,
T1.create_time
FROM (
SELECT sr.status_enum AS service_status,
sr.encounter_id,
e.bus_no as encounter_bus_no,
pt.birth_date,
pt.bus_no AS patient_bus_no,
sr.patient_id,
pt."name" AS patient_name,
pt.py_str AS patient_py_str,
pt.wb_str AS patient_wb_str,
sr.tenant_id,
pt.gender_enum,
e.reception_time AS create_time
FROM adm_encounter e
LEFT JOIN wor_service_request sr
ON e.id = sr.encounter_id
AND sr.refund_service_id IS NULL
AND sr.delete_flag = '0'
LEFT JOIN adm_patient pt
ON pt.id = sr.patient_id
AND pt.delete_flag = '0'
LEFT JOIN wor_activity_definition ad
ON ad.id = sr.activity_id
AND ad.delete_flag = '0'
WHERE e.delete_flag = '0'
AND sr.status_enum IN (#{inProgress},#{completed},#{cancelled})
GROUP BY sr.status_enum,
sr.encounter_id,
e.bus_no,
pt.birth_date,
pt.bus_no,
sr.patient_id,
pt."name",
pt.py_str,
pt.wb_str,
sr.tenant_id,
pt.gender_enum,
e.reception_time
ORDER BY create_time DESC
) AS T1
${ew.customSqlSegment}
</select>
<select id="selectInfusionPendingRecord"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT pr.encounter_id,
pr.service_status,
pr.authored_time ,
pr.service_id ,
pr.bus_no ,
pr.print_count ,
pr.group_id ,
pr.execute_num,
pr.speed ,
pr.quantity ,
pr.skin_test_flag ,
pr.unit_code ,
pr.dose ,
pr.dose_unit_code ,
pr.method_code ,
pr.rate_code ,
pr.performer_id ,
pr.preparer_id ,
pr.dispense_status,
pr.medication_name,
pr.service_name,
pr.practitioner_name,
pr.perform_count,
pr.dept_name
FROM (
SELECT ae.id AS encounter_id,
ae.tenant_id,
wsr.status_enum AS service_status,
wsr.authored_time ,
wsr.id AS service_id,
wsr.bus_no ,
wsr.print_count,
mmr.group_id ,
mmr.execute_num,
mmr.speed ,
mmr.quantity ,
mmr.skin_test_flag ,
mmr.unit_code ,
mmr.dose ,
mmr.dose_unit_code ,
mmr.method_code ,
mmr.rate_code ,
mmr.performer_id ,
dis.status_enum AS dispense_status,
mmd."name" AS medication_name,
ad."name" AS service_name,
ap."name" AS practitioner_name,
o."name" AS dept_name,
-- 新增子查询:查询配药人
(SELECT DISTINCT mmdis.preparer_id
FROM med_medication_dispense mmdis
WHERE mmdis.med_req_id = mmr.id
AND mmdis.delete_flag = '0'
) AS preparer_id ,
-- 新增子查询:统计已执行次数
(SELECT COUNT(sub_wsr.id)
FROM wor_service_request sub_wsr
WHERE sub_wsr.based_on_id = wsr.id
AND sub_wsr.status_enum = #{completed}
AND sub_wsr.delete_flag = '0'
) AS perform_count
FROM adm_encounter ae
LEFT JOIN wor_service_request wsr
ON ae.id = wsr.encounter_id
AND wsr.delete_flag = '0'
AND wsr.refund_service_id IS NULL
LEFT JOIN med_medication_request mmr
ON mmr.group_id = wsr.group_id
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
LEFT JOIN wor_activity_definition ad
ON ad.id = wsr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN med_medication_definition mmd
ON mmr.medication_id = mmd.id
AND mmd.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON mmr.practitioner_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization o
ON o.id = wsr.org_id
AND o.delete_flag = '0'
WHERE ae.id = #{encounterId}
AND ad.category_code = '21'
AND wsr.based_on_table = #{medMedicationRequest}
AND ae.delete_flag = '0') AS pr
${ew.customSqlSegment}
ORDER BY pr.authored_time DESC
</select>
<select id="selectInfusionPerformRecord"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT pr.service_status,
pr.bus_no ,
pr.based_on_id ,
pr.group_id ,
pr.occurrence_end_time ,
pr.service_id,
pr.tenant_id,
pr.service_name,
pr.performer_name,
pr.org_name
FROM (
SELECT wsr.status_enum AS service_status,
wsr.bus_no ,
wsr.based_on_id ,
wsr.group_id ,
wsr.occurrence_end_time ,
wsr.id AS service_id,
wsr.tenant_id,
ad."name" AS service_name,
ap."name" AS performer_name,
al."name" AS org_name
FROM wor_service_request wsr
LEFT JOIN wor_activity_definition ad
ON ad.id = wsr.activity_id
AND ad.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON wsr.performer_id = ap.id
AND ap.delete_flag = '0'
LEFT JOIN adm_organization al
ON al.id = wsr.org_id
WHERE wsr.based_on_id = #{serviceReqId}
AND wsr.delete_flag = '0'
) AS pr
${ew.customSqlSegment}
ORDER BY pr.occurrence_end_time DESC
</select>
<select id="selectPerformInfo"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientInfusionRecordDto">
SELECT wsr.id AS service_id,
wsr.status_enum AS service_status,
mmr.execute_num ,
dis.status_enum AS dispense_status,
-- 新增子查询:统计已执行次数
(SELECT COUNT(sub_wsr.id)
FROM wor_service_request sub_wsr
WHERE sub_wsr.based_on_id = wsr.id
AND sub_wsr.status_enum = #{completed}
AND sub_wsr.delete_flag = '0'
) AS perform_count
FROM wor_service_request wsr
LEFT JOIN med_medication_request mmr
ON wsr.based_on_id = mmr.id
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
WHERE wsr.delete_flag = '0'
AND wsr.id IN
<foreach item="serviceReqId" collection="serviceReqIdList" open="(" separator="," close=")">
#{serviceReqId}
</foreach>
</select>
</mapper>

View File

@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.outpatientmanage.mapper.OutpatientTreatmentAppMapper">
<select id="selectEncounterInfoListPage" resultType="com.openhis.web.outpatientmanage.dto.OutpatientTreatmentEncounterDto">
SELECT ii.encounter_id,
ii.reception_time,
ii.encounter_no,
ii.gender_enum,
ii.patient_name,
ii.patient_py_str,
ii.patient_wb_str,
ii.birth_date,
ii.status_enum
FROM (
SELECT T1.tenant_id,
T1.id AS encounter_id,
T1.reception_time,
T1.bus_no AS encounter_no,
T2.gender_enum,
T2."name" AS patient_name,
T2.py_str AS patient_py_str,
T2.wb_str AS patient_wb_str,
T2.birth_date,
T3.status_enum
FROM adm_encounter AS T1
INNER JOIN adm_patient AS T2
ON T1.patient_id = T2.id
AND T2.delete_flag = '0'
INNER JOIN wor_service_request AS T3
ON T1.id = T3.encounter_id
AND T3.refund_service_id IS NULL
AND T3.delete_flag = '0'
WHERE T1.class_enum = #{amb}
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.id,
T1.reception_time,
T1.bus_no,
T2.gender_enum,
T2.name,
T2.py_str,
T2.wb_str,
T2.birth_date,
T3.status_enum
ORDER BY T1.bus_no DESC
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectTreatmentInfoPage"
resultType="com.openhis.web.outpatientmanage.dto.OutpatientTreatmentInfoDto">
SELECT ii.encounter_id ,
ii.request_id ,
ii.service_status,
ii.dispense_id,
ii.dispense_status,
ii.execute_num,
ii.quantity ,
ii.unit_code ,
ii.bus_no,
ii.charge_status,
ii.unit_price ,
ii.total_price ,
ii.request_table ,
ii.service_category ,
ii.device_category ,
ii.med_category ,
ii.item_name,
ii.py_str,
ii.wb_str,
ii.size,
ii.group_id ,
ii.sort_number
FROM (SELECT ae.id AS encounter_id ,
ae.tenant_id,
wsr.id AS request_id ,
wsr.status_enum AS service_status,
NULL AS dispense_id,
NULL AS dispense_status,
wsr.quantity AS execute_num,
NULL AS quantity,
wsr.unit_code ,
wsr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{worServiceRequest} AS request_table ,
wad.category_code AS service_category,
NULL AS device_category,
NULL AS med_category,
wad."name" AS item_name,
wad.py_str,
wad.wb_str,
NULL AS "size",
wsr.group_id ,
NULL AS sort_number
FROM adm_encounter ae
INNER JOIN wor_service_request wsr
ON wsr.encounter_id = ae.id
AND wsr.delete_flag = '0'
AND wsr.refund_service_id IS NULL
LEFT JOIN adm_charge_item aci
ON aci.service_id = wsr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
INNER JOIN wor_activity_definition wad
ON wsr.activity_id = wad.id
AND wad.delete_flag = '0'
WHERE wsr.status_enum = #{reqCompleted}
AND ae.delete_flag = '0'
UNION ALL
SELECT ae.id AS encounter_id ,
ae.tenant_id,
mmr.id AS request_id ,
NULL AS service_status,
dis.id AS dispense_id ,
dis.status_enum AS dispense_status,
mmr.execute_num ,
mmr.quantity ,
mmr.unit_code ,
mmr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{medMedicationRequest} AS request_table ,
NULL AS service_category,
NULL AS device_category,
mmd.category_code AS med_category,
mmd."name" AS item_name,
mmd.py_str ,
mmd.wb_str,
mm.total_volume AS "size",
mmr.group_id ,
mmr.sort_number
FROM adm_encounter ae
LEFT JOIN med_medication_request mmr
ON ae.id = mmr.encounter_id
AND mmr.refund_medicine_id IS NULL
AND mmr.delete_flag = '0'
LEFT JOIN med_medication_dispense dis
ON dis.med_req_id = mmr.id
AND dis.delete_flag = '0'
INNER JOIN med_medication_definition mmd
ON mmr.medication_id = mmd.id
AND (mmd.skin_test_flag = 1 OR mmd.inject_flag = 1)
AND mmd.delete_flag = '0'
INNER JOIN med_medication mm
ON mm.medication_def_id = mmd.id
AND mm.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = mmr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
WHERE dis.status_enum != #{draft}
AND ae.delete_flag = '0'
UNION ALL
SELECT ae.id AS encounter_id ,
ae.tenant_id,
wdr.id AS request_id ,
NULL AS service_status,
wdd.id AS dispense_id ,
wdd.status_enum AS dispense_status,
NULL AS execute_num,
wdr.quantity ,
wdr.unit_code ,
wdr.bus_no,
aci.status_enum AS charge_status,
aci.unit_price ,
aci.total_price ,
#{worDeviceRequest} AS request_table ,
NULL AS service_category,
dev.category_code AS device_category,
NULL AS med_category,
dev."name" AS item_name,
dev.py_str ,
dev.wb_str,
dev.size,
NULL AS group_id ,
NULL AS sort_number
FROM adm_encounter ae
INNER JOIN wor_device_request wdr
ON wdr.encounter_id = ae.id
AND wdr.delete_flag = '0'
AND wdr.refund_device_id IS NULL
LEFT JOIN wor_device_dispense wdd
ON wdd.device_req_id = wdr.id
AND wdd.delete_flag = '0'
LEFT JOIN adm_charge_item aci
ON aci.service_id = wdr.id
AND aci.delete_flag = '0'
AND aci.refund_id IS NULL
INNER JOIN adm_device_definition dev
ON dev.id = wdr.device_def_id
AND dev.delete_flag = '0'
WHERE wdd.status_enum != #{draft}
AND ae.delete_flag = '0'
) AS ii
${ew.customSqlSegment}
ORDER BY ii.sort_number
</select>
<select id="selectPerformRecordList" resultType="com.openhis.web.common.dto.PerformRecordDto">
SELECT cp.id AS procedure_id,
cp.status_enum,
cp.occurrence_time,
cp.create_time,
al."name" AS location_name,
ao."name" AS org_name,
cp.request_id,
cp.refund_id,
cpp.start_time,
cpp.end_time,
ap."name" AS practitioner_name
FROM cli_procedure cp
LEFT JOIN cli_procedure_performer cpp
ON cpp.procedure_id = cp.id
AND cpp.delete_flag = '0'
LEFT JOIN adm_organization ao
ON ao.id = cp.org_id
AND ao.delete_flag = '0'
LEFT JOIN adm_location al
ON al.id = cp.location_id
AND al.delete_flag = '0'
LEFT JOIN adm_practitioner ap
ON ap.id = cpp.practitioner_id
AND ap.delete_flag = '0'
WHERE cp.delete_flag = '0'
<if test="reqIds!=null and !reqIds.isEmpty()">
AND cp.request_id IN
<foreach collection="reqIds" item="reqId" open="(" separator="," close=")">
#{reqId}
</foreach>
</if>
</select>
</mapper>

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.patientmanage.mapper.PatientManageMapper">
<!-- 病人信息相关查询-->
<select id="getPatientPage" resultType="com.openhis.web.patientmanage.dto.PatientInformationDto">
SELECT
T1.tenant_id,
T1.id,
T1.active_flag,
T1.temp_flag,
T1.name,
T1.name_json,
T1.bus_no,
T1.gender_enum,
T1.birth_date,
T1.deceased_date,
T1.marital_status_enum,
T1.prfs_enum,
T1.phone,
T1.address,
T1.address_province,
T1.address_city,
T1.address_district,
T1.address_street,
T1.address_json,
T1.nationality_code,
T1.id_card,
T1.py_str,
T1.wb_str,
T1.blood_abo,
T1.blood_rh,
T1.work_company,
T1.native_place,
T1.country_code,
T1.link_name,
T1.link_relation_code,
T1.link_telcom,
T1.link_jsons,
T1.organization_id,
T1.create_time,
T1.type_code,
T1.organization_name
FROM
(
SELECT
pt.tenant_id,
pt.id,
pt.active_flag,
pt.temp_flag,
pt.name,
pt.name_json,
pt.bus_no,
pt.gender_enum,
pt.birth_date,
pt.deceased_date,
pt.marital_status_enum,
pt.prfs_enum,
pt.phone,
pt.address,
pt.address_province,
pt.address_city,
pt.address_district,
pt.address_street,
pt.address_json,
pt.nationality_code,
pt.id_card,
pt.py_str,
pt.wb_str,
pt.blood_abo,
pt.blood_rh,
pt.work_company,
pt.native_place,
pt.country_code,
pt.link_name,
pt.link_relation_code,
pt.link_telcom,
pt.link_jsons,
pt.organization_id,
pt.create_time,
api.type_code,
ogt.name as organization_name
FROM adm_patient pt
LEFT JOIN adm_organization ogt ON pt.organization_id = ogt.id
LEFT JOIN adm_patient_identifier api ON pt.id = api.patient_id
ORDER BY pt.bus_no DESC
) AS T1
${ew.customSqlSegment}
</select>
<!-- 查询医生名字列表-->
<select id="getDoctorNames" resultType ="java.lang.String">
SELECT MIN(p.name) AS practitioner_name
FROM adm_encounter_participant ep
LEFT JOIN adm_practitioner p ON ep.practitioner_id = p.id
WHERE ep.type_code = '1'
GROUP BY ep.practitioner_id
HAVING MIN(p.name) IS NOT NULL;
</select>
<!-- 门诊记录相关查询-->
<select id="getOutpatientRecord" parameterType="com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam"
resultType="com.openhis.web.patientmanage.dto.OutpatientRecordDto">
SELECT
T1.tenant_id,
T1.name,
T1.id_card,
T1.description,
T1.patient_bus_no,
T1.encounter_bus_no,
T1.gender_enum,
T1.encounter_time,
T1.subject_status_enum,
T1.organization_name,
T1.doctor_name,
T1.phone,
T1.start_time
FROM
(
SELECT
e.tenant_id,
pt.name,
pt.id_card,
ccd.name AS description,
pt.bus_no as patient_bus_no,
e.bus_no as encounter_bus_no,
pt.gender_enum,
e.reception_time as encounter_time,
e.subject_status_enum,
ogt.name as organization_name,
pt.phone,
e.start_time,
(SELECT pra.name
FROM adm_encounter_participant ep
LEFT JOIN adm_practitioner pra ON ep.practitioner_id = pra.id
WHERE ep.encounter_id = e.id
AND ep.type_code = #{typeCode} --就诊参与者身份类型是1:接诊医生
ORDER BY ep.create_time DESC
LIMIT 1
) AS doctor_name--门诊医生
FROM
adm_encounter e
LEFT JOIN
adm_organization ogt ON e.organization_id = ogt.id
LEFT JOIN
adm_patient pt ON e.patient_id = pt.id
LEFT JOIN adm_encounter_diagnosis ed ON e.id = ed.encounter_id
LEFT JOIN cli_condition c ON ed.condition_id = c.id
LEFT JOIN cli_condition_definition ccd ON c.definition_id = ccd.id
) AS T1
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.web.paymentmanage.mapper.ChargeBillMapper">
<select id="selectChargeItemExtendInfoList" resultType="com.openhis.web.paymentmanage.dto.ChargeItemExtendInfoDto">
SELECT
T1.total_price,
T1.org_id,
T1.yb_type
FROM(
SELECT
a.total_price,
COALESCE(b1.org_id, b2.org_id, b3.org_id, b4.offered_org_id, b5.org_id) AS org_id,
--COALESCE(b1.yb_class_enum, b2.yb_class_enum, b3.yb_class_enum) AS yb_class_enum,
b5.yb_type
-- 添加更多需要的字段
FROM
adm_charge_item a
LEFT JOIN
med_medication_request b1 ON a.service_id = b1.id AND a.service_table = 'med_medication_request'
LEFT JOIN
wor_device_request b2 ON a.service_id = b2.id AND a.service_table = 'wor_device_request'
LEFT JOIN
wor_service_request b3 ON a.service_id = b3.id AND a.service_table = 'wor_service_request'
LEFT JOIN
adm_healthcare_service b4 ON a.service_id = b4.id AND a.service_table = 'adm_healthcare_service'
LEFT JOIN
adm_charge_item_definition b5 ON a.definition_id = b5.id
WHERE
a.delete_flag = '0'
AND
a.id IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item}
</foreach>
) AS T1
<if test="orgIdList!=null and !orgIdList.isEmpty()">
WHERE T1.org_id IN
<foreach collection="orgIdList" item="orgId" open="(" separator="," close=")">
#{orgId}
</foreach>
</if>
</select>
</mapper>

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