diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/IDeathDiscussionAppService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/IDeathDiscussionAppService.java new file mode 100644 index 000000000..bc733943f --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/IDeathDiscussionAppService.java @@ -0,0 +1,14 @@ +package com.healthlink.his.web.mrhomepage.appservice; + +import com.healthlink.his.mrhomepage.domain.MrDeathDiscussion; + +import java.util.List; + +public interface IDeathDiscussionAppService { + + MrDeathDiscussion saveDiscussion(MrDeathDiscussion discussion); + + List getDiscussions(Long homepageId); + + List checkDeadline(); +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/impl/DeathDiscussionAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/impl/DeathDiscussionAppServiceImpl.java new file mode 100644 index 000000000..3173cb0fb --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/appservice/impl/DeathDiscussionAppServiceImpl.java @@ -0,0 +1,64 @@ +package com.healthlink.his.web.mrhomepage.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.healthlink.his.mrhomepage.domain.MrDeathDiscussion; +import com.healthlink.his.mrhomepage.service.IMrDeathDiscussionService; +import com.healthlink.his.web.mrhomepage.appservice.IDeathDiscussionAppService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +@Service +public class DeathDiscussionAppServiceImpl implements IDeathDiscussionAppService { + + @Resource + private IMrDeathDiscussionService mrDeathDiscussionService; + + @Override + @Transactional + public MrDeathDiscussion saveDiscussion(MrDeathDiscussion discussion) { + if (discussion.getId() == null) { + if (discussion.getDeathDate() != null) { + Calendar cal = Calendar.getInstance(); + cal.setTime(discussion.getDeathDate()); + cal.add(Calendar.DAY_OF_MONTH, 7); + discussion.setDeadlineDate(cal.getTime()); + } + discussion.setIsOverdue(false); + discussion.setStatus(0); + } + mrDeathDiscussionService.saveOrUpdate(discussion); + return discussion; + } + + @Override + public List getDiscussions(Long homepageId) { + return mrDeathDiscussionService.list( + new LambdaQueryWrapper() + .eq(MrDeathDiscussion::getEncounterId, homepageId) + .orderByDesc(MrDeathDiscussion::getDiscussionDate) + ); + } + + @Override + public List checkDeadline() { + Date now = new Date(); + List overdue = mrDeathDiscussionService.list( + new LambdaQueryWrapper() + .le(MrDeathDiscussion::getDeadlineDate, now) + .eq(MrDeathDiscussion::getIsOverdue, false) + .eq(MrDeathDiscussion::getStatus, 0) + ); + for (MrDeathDiscussion d : overdue) { + d.setIsOverdue(true); + } + if (!overdue.isEmpty()) { + mrDeathDiscussionService.updateBatchById(overdue); + } + return overdue; + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/controller/DeathDiscussionController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/controller/DeathDiscussionController.java new file mode 100644 index 000000000..365fc297d --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/mrhomepage/controller/DeathDiscussionController.java @@ -0,0 +1,42 @@ +package com.healthlink.his.web.mrhomepage.controller; + +import com.core.common.core.domain.R; +import com.healthlink.his.mrhomepage.domain.MrDeathDiscussion; +import com.healthlink.his.web.mrhomepage.appservice.IDeathDiscussionAppService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/v1/mr-homepage/death-discussion") +@Tag(name = "死亡病例讨论记录") +public class DeathDiscussionController { + + @Resource + private IDeathDiscussionAppService deathDiscussionAppService; + + @PostMapping("/save") + @PreAuthorize("hasAuthority('inpatient:mrhomepage:edit')") + @Operation(summary = "保存死亡病例讨论记录") + public R saveDiscussion(@RequestBody MrDeathDiscussion discussion) { + return R.ok(deathDiscussionAppService.saveDiscussion(discussion)); + } + + @GetMapping("/list/{homepageId}") + @PreAuthorize("hasAuthority('inpatient:mrhomepage:list')") + @Operation(summary = "查询死亡病例讨论记录列表") + public R> getDiscussions(@PathVariable Long homepageId) { + return R.ok(deathDiscussionAppService.getDiscussions(homepageId)); + } + + @GetMapping("/pending-deadline") + @PreAuthorize("hasAuthority('inpatient:mrhomepage:list')") + @Operation(summary = "查询7日到期未讨论记录") + public R> checkDeadline() { + return R.ok(deathDiscussionAppService.checkDeadline()); + } +} diff --git a/healthlink-his-ui/src/api/mrhomepage/index.js b/healthlink-his-ui/src/api/mrhomepage/index.js index 7ed3eab61..1d3f5ecd4 100644 --- a/healthlink-his-ui/src/api/mrhomepage/index.js +++ b/healthlink-his-ui/src/api/mrhomepage/index.js @@ -11,3 +11,6 @@ export function getQualityResults(homepageId) { return request({ url: '/api/v1/m export function submitHqmsReport(homepageId, reportType) { return request({ url: '/api/v1/mr-homepage/hqms/report', method: 'post', params: { homepageId, reportType } }) } export function getHqmsReportStatus(homepageId) { return request({ url: '/api/v1/mr-homepage/hqms/status/' + homepageId, method: 'get' }) } export function listHqmsReports(homepageId) { return request({ url: '/api/v1/mr-homepage/hqms/list/' + homepageId, method: 'get' }) } +export function saveDeathDiscussion(data) { return request({ url: '/api/v1/mr-homepage/death-discussion/save', method: 'post', data }) } +export function listDeathDiscussions(homepageId) { return request({ url: '/api/v1/mr-homepage/death-discussion/list/' + homepageId, method: 'get' }) } +export function getPendingDeadline() { return request({ url: '/api/v1/mr-homepage/death-discussion/pending-deadline', method: 'get' }) } diff --git a/healthlink-his-ui/src/views/mrhomepage/death-discussion/index.vue b/healthlink-his-ui/src/views/mrhomepage/death-discussion/index.vue new file mode 100644 index 000000000..ca372a3ea --- /dev/null +++ b/healthlink-his-ui/src/views/mrhomepage/death-discussion/index.vue @@ -0,0 +1,265 @@ + + + + +