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 974d50886..8dae6c404 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,5 +1,6 @@ package com.healthlink.his.web.anesthesia.appservice; +import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; import com.healthlink.his.anesthesia.domain.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -31,4 +32,8 @@ public interface IAnesthesiaAppService { AnesthesiaIoSummaryDto getIoSummary(Long recordId); void completeRecord(Long recordId); + + AnesAsaAssessment saveAsaAssessment(AnesAsaAssessment assessment); + + List getAsaAssessments(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 8c6bf041b..acfe00102 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,5 +1,6 @@ package com.healthlink.his.web.anesthesia.appservice.impl; +import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; import com.healthlink.his.anesthesia.domain.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -7,6 +8,7 @@ import com.healthlink.his.anesthesia.domain.AnesthesiaRecord; 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.IAnesthesiaFollowupService; import com.healthlink.his.anesthesia.service.IAnesthesiaIoRecordService; import com.healthlink.his.anesthesia.service.IAnesthesiaMedicationService; @@ -39,6 +41,9 @@ public class AnesthesiaAppServiceImpl implements IAnesthesiaAppService { @Resource private IAnesthesiaFollowupService anesthesiaFollowupService; + @Resource + private IAnesAsaAssessmentService anesAsaAssessmentService; + @Override @Transactional public AnesthesiaRecord createRecord(AnesthesiaRecord record) { @@ -125,4 +130,20 @@ public class AnesthesiaAppServiceImpl implements IAnesthesiaAppService { record.setEndTime(new Date()); anesthesiaRecordService.updateById(record); } + + @Override + @Transactional + public AnesAsaAssessment saveAsaAssessment(AnesAsaAssessment assessment) { + if (assessment.getId() != null) { + anesAsaAssessmentService.updateById(assessment); + } else { + anesAsaAssessmentService.save(assessment); + } + return assessment; + } + + @Override + public List getAsaAssessments(Long recordId) { + return anesAsaAssessmentService.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 163c84e3a..540f03f06 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 @@ -1,6 +1,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.AnesthesiaFollowup; import com.healthlink.his.anesthesia.domain.AnesthesiaIoRecord; import com.healthlink.his.anesthesia.domain.AnesthesiaMedication; @@ -17,6 +18,7 @@ import com.healthlink.his.web.anesthesia.appservice.IAnesthesiaAppService; 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; @@ -134,4 +136,18 @@ public class AnesthesiaController { anesthesiaAppService.completeRecord(id); return R.ok(); } + + @PostMapping("/asa-assessment") + @Operation(summary = "保存ASA评估") + @PreAuthorize("@ss.hasPermi('inpatient:anesthesia:edit')") + public R saveAsaAssessment(@RequestBody AnesAsaAssessment assessment) { + return R.ok(anesthesiaAppService.saveAsaAssessment(assessment)); + } + + @GetMapping("/asa-assessment/{recordId}") + @Operation(summary = "查询ASA评估列表") + @PreAuthorize("@ss.hasPermi('inpatient:anesthesia:list')") + public R> getAsaAssessments(@PathVariable Long recordId) { + return R.ok(anesthesiaAppService.getAsaAssessments(recordId)); + } } diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V62__anes_asa_assessment.sql b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V62__anes_asa_assessment.sql new file mode 100644 index 000000000..3360a66c9 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/db/migration/V62__anes_asa_assessment.sql @@ -0,0 +1,26 @@ +CREATE TABLE anes_asa_assessment ( + id BIGSERIAL PRIMARY KEY, + record_id BIGINT NOT NULL, + encounter_id BIGINT NOT NULL, + patient_id BIGINT NOT NULL, + asa_grade VARCHAR(5) NOT NULL, + assessment_time TIMESTAMP NOT NULL, + assessor_id BIGINT NOT NULL, + assessor_name VARCHAR(50), + airway_assessment TEXT, + mallampati_grade VARCHAR(5), + neck_mobility VARCHAR(50), + mouth_opening_cm DECIMAL(4,1), + weight_kg DECIMAL(6,2), + height_cm DECIMAL(5,1), + bmi DECIMAL(5,1), + npo_hours INTEGER, + asa_factors TEXT, + risk_level VARCHAR(20), + 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/AnesAsaAssessment.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/domain/AnesAsaAssessment.java new file mode 100644 index 000000000..55c903d88 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/domain/AnesAsaAssessment.java @@ -0,0 +1,58 @@ +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.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("anes_asa_assessment") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class AnesAsaAssessment extends HisBaseEntity { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + private Long recordId; + + private Long encounterId; + + private Long patientId; + + private String asaGrade; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date assessmentTime; + + private Long assessorId; + + private String assessorName; + + private String airwayAssessment; + + private String mallampatiGrade; + + private String neckMobility; + + private BigDecimal mouthOpeningCm; + + private BigDecimal weightKg; + + private BigDecimal heightCm; + + private BigDecimal bmi; + + private Integer npoHours; + + private String asaFactors; + + private String riskLevel; +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesAsaAssessmentMapper.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesAsaAssessmentMapper.java new file mode 100644 index 000000000..e8b4beff6 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/mapper/AnesAsaAssessmentMapper.java @@ -0,0 +1,14 @@ +package com.healthlink.his.anesthesia.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface AnesAsaAssessmentMapper extends BaseMapper { + + List selectByRecordId(@Param("recordId") Long recordId); +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesAsaAssessmentService.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesAsaAssessmentService.java new file mode 100644 index 000000000..939ca097e --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/IAnesAsaAssessmentService.java @@ -0,0 +1,11 @@ +package com.healthlink.his.anesthesia.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; + +import java.util.List; + +public interface IAnesAsaAssessmentService extends IService { + + List selectByRecordId(Long recordId); +} diff --git a/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesAsaAssessmentServiceImpl.java b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesAsaAssessmentServiceImpl.java new file mode 100644 index 000000000..8d13a74f2 --- /dev/null +++ b/healthlink-his-server/healthlink-his-domain/src/main/java/com/healthlink/his/anesthesia/service/impl/AnesAsaAssessmentServiceImpl.java @@ -0,0 +1,20 @@ +package com.healthlink.his.anesthesia.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.healthlink.his.anesthesia.domain.AnesAsaAssessment; +import com.healthlink.his.anesthesia.mapper.AnesAsaAssessmentMapper; +import com.healthlink.his.anesthesia.service.IAnesAsaAssessmentService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AnesAsaAssessmentServiceImpl + extends ServiceImpl + implements IAnesAsaAssessmentService { + + @Override + public List selectByRecordId(Long recordId) { + return baseMapper.selectByRecordId(recordId); + } +} diff --git a/healthlink-his-ui/src/api/anesthesia.js b/healthlink-his-ui/src/api/anesthesia.js index 0a6b9e24c..3662dc0ef 100644 --- a/healthlink-his-ui/src/api/anesthesia.js +++ b/healthlink-his-ui/src/api/anesthesia.js @@ -69,3 +69,11 @@ export function getFollowup(recordId) { export function addFollowup(data) { return request({ url: '/api/v1/anesthesia/followup', method: 'post', data }) } + +export function saveAsaAssessment(data) { + return request({ url: '/api/v1/anesthesia/asa-assessment', method: 'post', data }) +} + +export function getAsaAssessments(recordId) { + return request({ url: '/api/v1/anesthesia/asa-assessment/' + recordId, method: 'get' }) +} diff --git a/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaAssessment.vue b/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaAssessment.vue new file mode 100644 index 000000000..1c98e65ab --- /dev/null +++ b/healthlink-his-ui/src/views/inpatientDoctor/AnesthesiaAssessment.vue @@ -0,0 +1,340 @@ + + + + +