diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/IAnesthesiaAppService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/IAnesthesiaAppService.java index 366d95a1e..82d18de16 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/IAnesthesiaAppService.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/IAnesthesiaAppService.java @@ -1,6 +1,7 @@ package com.healthlink.his.web.anesthesia.appservice; import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; +import com.healthlink.his.anesthesia.domain.AnesSummary; import com.healthlink.his.anesthesia.domain.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -40,4 +41,8 @@ public interface IAnesthesiaAppService { AnesthesiaVitalSign recordVitalSign(AnesthesiaVitalSign vitalSign); List getVitalSignTimeline(Long recordId); + + AnesSummary saveSummary(AnesSummary summary); + + AnesSummary getSummary(Long recordId); } diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/impl/AnesthesiaAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/impl/AnesthesiaAppServiceImpl.java index cf63c7e10..fc8c23b37 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/impl/AnesthesiaAppServiceImpl.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/appservice/impl/AnesthesiaAppServiceImpl.java @@ -1,6 +1,7 @@ package com.healthlink.his.web.anesthesia.appservice.impl; import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; +import com.healthlink.his.anesthesia.domain.AnesSummary; import com.healthlink.his.anesthesia.domain.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -9,6 +10,7 @@ import com.healthlink.his.anesthesia.domain.AnesthesiaVitalSign; import com.healthlink.his.anesthesia.dto.AnesthesiaIoSummaryDto; import com.healthlink.his.anesthesia.dto.AnesthesiaRecordDetailDto; import com.healthlink.his.anesthesia.service.IAnesAsaAssessmentService; +import com.healthlink.his.anesthesia.service.IAnesSummaryService; import com.healthlink.his.anesthesia.service.IAnesthesiaFollowupService; import com.healthlink.his.anesthesia.service.IAnesthesiaIoRecordService; import com.healthlink.his.anesthesia.service.IAnesthesiaMedicationService; @@ -44,6 +46,9 @@ public class AnesthesiaAppServiceImpl implements IAnesthesiaAppService { @Resource private IAnesAsaAssessmentService anesAsaAssessmentService; + @Resource + private IAnesSummaryService anesSummaryService; + @Override @Transactional public AnesthesiaRecord createRecord(AnesthesiaRecord record) { @@ -158,4 +163,26 @@ public class AnesthesiaAppServiceImpl implements IAnesthesiaAppService { public List getVitalSignTimeline(Long recordId) { return anesthesiaVitalSignService.selectByRecordId(recordId); } + + @Override + @Transactional + public AnesSummary saveSummary(AnesSummary summary) { + if (summary.getId() != null) { + anesSummaryService.updateById(summary); + } else { + AnesSummary existing = anesSummaryService.selectByRecordId(summary.getRecordId()); + if (existing != null) { + summary.setId(existing.getId()); + anesSummaryService.updateById(summary); + } else { + anesSummaryService.save(summary); + } + } + return summary; + } + + @Override + public AnesSummary getSummary(Long recordId) { + return anesSummaryService.selectByRecordId(recordId); + } } diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/controller/AnesthesiaController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/controller/AnesthesiaController.java index fdc4b4dbe..4afe91fd7 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/controller/AnesthesiaController.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/anesthesia/controller/AnesthesiaController.java @@ -2,6 +2,7 @@ package com.healthlink.his.web.anesthesia.controller; import com.core.common.core.domain.R; import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; +import com.healthlink.his.anesthesia.domain.AnesSummary; import com.healthlink.his.anesthesia.domain.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -164,4 +165,18 @@ public class AnesthesiaController { public R> getVitalSignTimeline(@PathVariable Long recordId) { return R.ok(anesthesiaAppService.getVitalSignTimeline(recordId)); } + + @PostMapping("/summary") + @Operation(summary = "保存麻醉小结") + @PreAuthorize("@ss.hasPermi('inpatient:anesthesia:edit')") + public R saveSummary(@RequestBody AnesSummary summary) { + return R.ok(anesthesiaAppService.saveSummary(summary)); + } + + @GetMapping("/summary/{recordId}") + @Operation(summary = "获取麻醉小结") + @PreAuthorize("@ss.hasPermi('inpatient:anesthesia:list')") + public R getSummary(@PathVariable Long recordId) { + return R.ok(anesthesiaAppService.getSummary(recordId)); + } } diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V63__anes_summary.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V63__anes_summary.sql new file mode 100644 index 000000000..319c888ba --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V63__anes_summary.sql @@ -0,0 +1,29 @@ +CREATE TABLE anes_summary ( + id BIGSERIAL PRIMARY KEY, + record_id BIGINT NOT NULL, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + anesthesia_type VARCHAR(32), + anesthesia_start_time TIMESTAMP, + anesthesia_end_time TIMESTAMP, + surgery_start_time TIMESTAMP, + surgery_end_time TIMESTAMP, + intraop_blood_loss_ml INTEGER, + intraop_urine_ml INTEGER, + intraop_fluid_ml INTEGER, + blood_transfusion_ml INTEGER, + complications TEXT, + has_complications BOOLEAN DEFAULT FALSE, + airway_management VARCHAR(50), + extubation_time TIMESTAMP, + patient_condition VARCHAR(50), + summary TEXT, + anesthetist_id BIGINT, + anesthetist_name VARCHAR(50), + tenant_id BIGINT DEFAULT 0, + delete_flag CHAR(1) DEFAULT '0', + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + create_by VARCHAR(64), + update_time TIMESTAMP, + update_by VARCHAR(64) +); diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/domain/AnesSummary.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/domain/AnesSummary.java new file mode 100644 index 000000000..fa13bf608 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/domain/AnesSummary.java @@ -0,0 +1,67 @@ +package com.healthlink.his.anesthesia.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.core.common.core.domain.HisBaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@TableName("anes_summary") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class AnesSummary extends HisBaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + private Long recordId; + + private Long encounterId; + + private Long patientId; + + private String anesthesiaType; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date anesthesiaStartTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date anesthesiaEndTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date surgeryStartTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date surgeryEndTime; + + private Integer intraopBloodLossMl; + + private Integer intraopUrineMl; + + private Integer intraopFluidMl; + + private Integer bloodTransfusionMl; + + private String complications; + + private Boolean hasComplications; + + private String airwayManagement; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date extubationTime; + + private String patientCondition; + + private String summary; + + private Long anesthetistId; + + private String anesthetistName; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesSummaryMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesSummaryMapper.java new file mode 100644 index 000000000..01c31e0bb --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesSummaryMapper.java @@ -0,0 +1,12 @@ +package com.healthlink.his.anesthesia.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.anesthesia.domain.AnesSummary; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface AnesSummaryMapper extends BaseMapper { + + AnesSummary selectByRecordId(@Param("recordId") Long recordId); +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesSummaryService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesSummaryService.java new file mode 100644 index 000000000..81e7d99cf --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesSummaryService.java @@ -0,0 +1,9 @@ +package com.healthlink.his.anesthesia.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.anesthesia.domain.AnesSummary; + +public interface IAnesSummaryService extends IService { + + AnesSummary selectByRecordId(Long recordId); +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesSummaryServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesSummaryServiceImpl.java new file mode 100644 index 000000000..1e80b1434 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesSummaryServiceImpl.java @@ -0,0 +1,18 @@ +package com.healthlink.his.anesthesia.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.anesthesia.domain.AnesSummary; +import com.healthlink.his.anesthesia.mapper.AnesSummaryMapper; +import com.healthlink.his.anesthesia.service.IAnesSummaryService; +import org.springframework.stereotype.Service; + +@Service +public class AnesSummaryServiceImpl + extends ServiceImpl + implements IAnesSummaryService { + + @Override + public AnesSummary selectByRecordId(Long recordId) { + return baseMapper.selectByRecordId(recordId); + } +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/anesthesia/AnesSummaryMapper.xml b/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/anesthesia/AnesSummaryMapper.xml new file mode 100644 index 000000000..6181aacd8 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/resources/mapper/anesthesia/AnesSummaryMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/healthlink-his-ui/src/api/anesthesia.js b/healthlink-his-ui/src/api/anesthesia.js index 1d31de50b..73a3aef09 100644 --- a/healthlink-his-ui/src/api/anesthesia.js +++ b/healthlink-his-ui/src/api/anesthesia.js @@ -85,3 +85,11 @@ export function recordVitalSign(data) { export function getVitalSignTimeline(recordId) { return request({ url: '/api/v1/anesthesia/vital-sign/timeline/' + recordId, method: 'get' }) } + +export function saveAnesSummary(data) { + return request({ url: '/api/v1/anesthesia/summary', method: 'post', data }) +} + +export function getAnesSummary(recordId) { + return request({ url: '/api/v1/anesthesia/summary/' + recordId, method: 'get' }) +} diff --git a/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaSummary.vue b/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaSummary.vue new file mode 100644 index 000000000..62570423e --- /dev/null +++ b/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaSummary.vue @@ -0,0 +1,336 @@ + + + + +