diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java
new file mode 100644
index 0000000..cdd29ad
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2201.java
@@ -0,0 +1,40 @@
+package com.syjiaer.clinic.server.common.api.input;
+
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class IM2201 extends BaseInputModel{
+ @IMField(key = "psn_no", name = "人员编号", required = true)
+ private String psnNo;
+ @IMField(key = "insutype", name = "险种类型", required = true)
+ private String insutype;
+ @IMField(key = "begntime", name = "开始时间", required = true)
+ private LocalDateTime begntime;
+ @IMField(key = "mdtrt_cert_type", name = "就诊凭证类型", required = true)
+ private String mdtrtCertType;
+ @IMField(key = "mdtrt_cert_no", name = "就诊凭证编号", required = true)
+ private String mdtrtCertNo;
+ @IMField(key = "ipt_otp_no", name = "住院/门诊号", required = true)
+ private String iptOtpNo;
+ @IMField(key = "atddr_no", name = "医师编码", required = true)
+ private String atddrNo;
+ @IMField(key = "dr_name", name = "医师姓名", required = true)
+ private String drName;
+ @IMField(key = "dept_code", name = "科室编码", required = true)
+ private String deptCode;
+ @IMField(key = "dept_name", name = "科室名称", required = true)
+ private String deptName;
+ @IMField(key = "caty", name = "科别", required = true)
+ private String caty;
+ @IMField(key = "exp_content", name = "字段扩展")
+ private String expContent;
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java
new file mode 100644
index 0000000..cf3cb0b
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM2203A.java
@@ -0,0 +1,76 @@
+package com.syjiaer.clinic.server.common.api.input;
+
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class IM2203A extends BaseInputModel{
+ @IMField(key = "mdtrtinfo", name = "就诊信息", required = true)
+ private Mdtrtinfo mdtrtinfo;
+ @IMField(key = "diseinfo", name = "诊断信息", required = true)
+ private List diseinfo;
+
+ @Getter
+ @Setter
+ public static class Mdtrtinfo{
+ @IMField(key = "mdtrt_id", name = "就诊ID", required = true)
+ private String mdtrt_id;
+ @IMField(key = "psn_no", name = "人员编号", required = true)
+ private String psn_no;
+ @IMField(key = "med_type", name = "医疗类别", required = true)
+ private String med_type;
+ @IMField(key = "begntime", name = "开始时间", required = true)
+ private LocalDateTime begntime;
+ @IMField(key = "main_cond_dscr", name = "主要病情描述")
+ private String main_cond_dscr;
+ @IMField(key = "dise_codg", name = "病种编码")
+ private String dise_codg;
+ @IMField(key = "dise_name", name = "病种名称")
+ private String dise_name;
+ @IMField(key = "birctrl_type", name = "计划生育手术类别", required = true)
+ private String birctrl_type;
+ @IMField(key = "birctrl_matn_date", name = "计划生育手术或生育日期")
+ private LocalDate birctrl_matn_date;
+ @IMField(key = "matn_type", name = "生育类别")
+ private String matn_type;
+ @IMField(key = "geso_val", name = "孕周数")
+ private BigDecimal geso_val;
+ @IMField(key = "exp_content", name = "字段扩展")
+ private String exp_content;
+ }
+ @Getter
+ @Setter
+ public static class Diseinfo{
+ @IMField(key = "diag_type", name = "诊断类别", required = true)
+ private String diag_type;
+ @IMField(key = "diag_srt_no", name = "诊断排序号", required = true)
+ private BigDecimal diag_srt_no;
+ @IMField(key = "diag_code", name = "诊断代码", required = true)
+ private String diag_code;
+ @IMField(key = "diag_name", name = "诊断名称", required = true)
+ private String diag_name;
+ @IMField(key = "diag_dept", name = "诊断科室", required = true)
+ private String diag_dept;
+ @IMField(key = "dise_dor_no", name = "诊断医生编码", required = true)
+ private String dise_dor_no;
+ @IMField(key = "dise_dor_name", name = "诊断医生姓名", required = true)
+ private String dise_dor_name;
+ @IMField(key = "diag_time", name = "诊断时间", required = true)
+ private LocalDateTime diag_time;
+ @IMField(key = "vali_flag", name = "有效标志", required = true)
+ private String vali_flag;
+ }
+
+
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java
new file mode 100644
index 0000000..d9e8e5f
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3401.java
@@ -0,0 +1,52 @@
+package com.syjiaer.clinic.server.common.api.input;
+
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDate;
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class IM3401 extends BaseInputModel{
+ @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true)
+ private String hospDeptCodg;
+ @IMField(key="caty",name = "科别",required = true)
+ private String caty;
+ @IMField(key="hosp_dept_name",name = "医院科室名称",required = true)
+ private String hospDeptName;
+ @IMField(key="begntime",name = "开始时间",required = true)
+ private LocalDate begntime;
+ @IMField(key="endtime",name = "结束时间",required = false)
+ private LocalDate endtime;
+ @IMField(key="itro",name = "简介",required = true)
+ private String itro;
+ @IMField(key="dept_resper_name",name = "科室负责人姓名",required = true)
+ private String deptResperName;
+ @IMField(key="dept_resper_tel",name = "科室负责人电话",required = true)
+ private String deptResperTel;
+ @IMField(key="dept_med_serv_scp",name = "科室医疗服务范围",required = false)
+ private String deptMedServScp;
+ @IMField(key="dept_estbdat",name = "科室成立日期",required = true)
+ private LocalDate deptEstbdat;
+ @IMField(key="aprv_bed_cnt",name = "批准床位数量",required = true)
+ private Integer aprvBedCnt;
+ @IMField(key="hi_crtf_bed_cnt",name = "医保认可床位数",required = false)
+ private Integer hiCrtfBedCnt;
+ @IMField(key="poolarea_no",name = "统筹区编号",required = true)
+ private String poolareaNo;
+ @IMField(key="dr_psncnt",name = "医师人数",required = true)
+ private Integer drPsncnt;
+ @IMField(key="phar_psncnt",name = "药师人数",required = true)
+ private Integer pharPsncnt;
+ @IMField(key="nurs_psncnt",name = "护士人数",required = true)
+ private Integer nursPsncnt;
+ @IMField(key="tecn_psncnt",name = "技师人数",required = true)
+ private Integer tecnPsncnt;
+ @IMField(key="memo",name = "备注",required = false)
+ private String memo;
+}
\ No newline at end of file
diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java
new file mode 100644
index 0000000..835cad2
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3402.java
@@ -0,0 +1,52 @@
+package com.syjiaer.clinic.server.common.api.input;
+
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDate;
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class IM3402 extends BaseInputModel{
+ @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true)
+ private String hospDeptCodg;
+ @IMField(key="hosp_dept_name",name = "医院科室名称",required = true)
+ private String hospDeptName;
+ @IMField(key="begntime",name = "开始时间",required = true)
+ private LocalDate begntime;
+ @IMField(key="endtime",name = "结束时间")
+ private LocalDate endtime;
+ @IMField(key="itro",name = "简介",required = true)
+ private String itro;
+ @IMField(key="dept_resper_name",name = "科室负责人姓名",required = true)
+ private String deptResperName;
+ @IMField(key="dept_resper_tel",name = "科室负责人电话",required = true)
+ private String deptResperTel;
+ @IMField(key="dept_med_serv_scp",name = "科室医疗服务范围")
+ private String deptMedServScp;
+ @IMField(key="caty",name = "科别",required = true)
+ private String caty;
+ @IMField(key="dept_estbdat",name = "科室成立日期",required = true)
+ private LocalDate deptEstbdat;
+ @IMField(key="aprv_bed_cnt",name = "批准床位数量",required = true)
+ private Integer aprvBedCnt;
+ @IMField(key="hi_crtf_bed_cnt",name = "医保认可床位数")
+ private Integer hiCrtfBedCnt;
+ @IMField(key="poolarea_no",name = "统筹区编号",required = true)
+ private String poolareaNo;
+ @IMField(key="dr_psncnt",name = "医师人数",required = true)
+ private Integer drPsncnt;
+ @IMField(key="phar_psncnt",name = "药师人数",required = true)
+ private Integer pharPsncnt;
+ @IMField(key="nurs_psncnt",name = "护士人数",required = true)
+ private Integer nursPsncnt;
+ @IMField(key="tecn_psncnt",name = "技师人数",required = true)
+ private Integer tecnPsncnt;
+ @IMField(key="memo",name = "备注")
+ private String memo;
+}
\ No newline at end of file
diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java
new file mode 100644
index 0000000..309df0b
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/input/IM3403.java
@@ -0,0 +1,22 @@
+package com.syjiaer.clinic.server.common.api.input;
+
+import com.syjiaer.clinic.server.common.api.annotations.IMField;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDate;
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class IM3403 extends BaseInputModel{
+ @IMField(key="hosp_dept_codg",name = "医院科室编码",required = true)
+ private String hospDeptCodg;
+ @IMField(key="hosp_dept_name",name = "医院科室名称",required = true)
+ private String hospDeptName;
+ @IMField(key="begntime",name = "开始时间",required = true)
+ private LocalDate begntime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java
index b8489fd..ff2bd01 100644
--- a/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java
+++ b/src/main/java/com/syjiaer/clinic/server/common/api/request/SocialRequest.java
@@ -151,4 +151,22 @@ public class SocialRequest {
JSONObject jsonObject = httpUtil.call("3202", im3202.buildToMap());
return JSONObject.parseObject(jsonObject.get("fileinfo").toString(), OM3202.class);
}
+
+ public void call3401(IM3401 im3401) {
+ httpUtil.callWithOutLog("3401", "deptinfo", im3401.buildToMap());
+ }
+ public void call3402(IM3402 im3402) {
+ httpUtil.callWithOutLog("3402", "deptinfo", im3402.buildToMap());
+ }
+ public void call3403(IM3403 im3403) {
+ httpUtil.callWithOutLog("3403", "data", im3403.buildToMap());
+ }
+
+ public JSONObject call2201(IM2201 im2201) {
+ return httpUtil.call("2201", "data", im2201.buildToMap());
+ }
+
+ public void call2203A(IM2203A im2203A) {
+ httpUtil.call("2203A", im2203A.buildToMap());
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java
index 7b342bc..bf0eb8a 100644
--- a/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java
+++ b/src/main/java/com/syjiaer/clinic/server/controller/charge/ChargeController.java
@@ -1,9 +1,9 @@
package com.syjiaer.clinic.server.controller.charge;
-import com.syjiaer.clinic.server.common.exception.MessageException;
-import com.syjiaer.clinic.server.common.util.CacheUtil;
import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController;
+import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
+import com.syjiaer.clinic.server.entity.charge.dto.ChargeOrderDto;
import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
import com.syjiaer.clinic.server.service.charge.ChargeService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,7 +17,9 @@ public class ChargeController extends BaseController {
private ChargeService chargeService;
@RequestMapping("/save")
public Result
*
* @author NiuZiYuan
- * @since 2025-04-22
+ * @since 2025-04-23
*/
@Getter
@Setter
@@ -63,7 +63,7 @@ public class ChargeGoodsList implements Serializable {
private String unit;
@ApiModelProperty("商品名称 冗余字段")
- private String goodsName;
+ private String name;
@ApiModelProperty("流水号")
private String feedetlSn;
@@ -72,7 +72,7 @@ public class ChargeGoodsList implements Serializable {
private LocalDateTime createTime;
@ApiModelProperty("商品类型")
- private Integer goodsType;
+ private Integer type;
@ApiModelProperty("成本")
private BigDecimal cost;
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java
new file mode 100644
index 0000000..0b20fbf
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/dto/ChargeOrderDto.java
@@ -0,0 +1,33 @@
+package com.syjiaer.clinic.server.entity.charge.dto;
+
+import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
+import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
+import com.syjiaer.clinic.server.entity.medical.MedicalRecord;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+public class ChargeOrderDto {
+
+ private Long id;
+ private String code;
+ private Long managerUserId;
+ private Double preTotalPrice;
+ private Double totalPrice;
+ private LocalDateTime createDatetime;
+ private Integer status;
+ private String payType;
+ private LocalDateTime payTime;
+ private Long socialUserId;
+ private Long salePersonId;
+ private Long medicalRecordId;
+ private PatientInfo patientInfo;
+ private MedicalRecord medicalRecord;
+ private List serviceDetail;
+ private List goodsDetail;
+
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java
index 6b89189..f6fb8d0 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeDetailVo.java
@@ -2,6 +2,9 @@ package com.syjiaer.clinic.server.entity.charge.vo;
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
+import com.syjiaer.clinic.server.entity.medical.MedicalRecord;
+import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -51,10 +54,14 @@ public class ChargeDetailVo {
@ApiModelProperty("患者姓名")
private String patientName;
+ @ApiModelProperty
+ private MedicalRecord medicalRecord;
+ @ApiModelProperty("患者信息")
+ private PatientInfo patientInfo;
@ApiModelProperty("诊疗服务")
private List serviceDetail;
@ApiModelProperty("药品耗材")
- private List goodsDetail;
+ private List goodsDetail;
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java
new file mode 100644
index 0000000..ee026ba
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/entity/charge/vo/ChargeGoodsListVo.java
@@ -0,0 +1,118 @@
+package com.syjiaer.clinic.server.entity.charge.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ChargeGoodsListVo {
+
+ @ApiModelProperty("自增主键")
+ private Integer id;
+
+ @ApiModelProperty("商品名称")
+ private String name;
+
+ @ApiModelProperty("商品类型")
+ private Integer type;
+
+ @ApiModelProperty("通用名")
+ private String commonName;
+
+ @ApiModelProperty("医保目录编码")
+ private String hilistCode;
+
+ @ApiModelProperty("单价")
+ private BigDecimal unitPrice;
+
+ @ApiModelProperty("进货价")
+ private BigDecimal purchaseUnitPrice;
+
+ @ApiModelProperty("生厂商")
+ private String producer;
+
+ @ApiModelProperty("条形码")
+ private String barcode;
+
+ @ApiModelProperty("最小制剂单位")
+ private String medicineDosageUnit;
+
+ @ApiModelProperty("最小包装数量")
+ private Integer minPackagingNumber;
+
+ @ApiModelProperty("最小包装单位")
+ private String minPackagingUnit;
+
+ @ApiModelProperty("保质期")
+ private Integer expiryTime;
+
+ @ApiModelProperty("国药准字")
+ private String approvalCode;
+
+ @ApiModelProperty("拓展字段")
+ private String extra;
+
+ @ApiModelProperty("分类ID")
+ private Integer cateId;
+
+ @ApiModelProperty("软删除 1为删除")
+ private Integer deleted;
+
+ @ApiModelProperty("利润分类")
+ private String profitCate;
+
+ @ApiModelProperty("标签")
+ private String tags;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+ @ApiModelProperty("利率")
+ private Double interestRate;
+
+ @ApiModelProperty("库存整数量 ")
+ private Integer inventoryWholeNumber;
+
+ @ApiModelProperty("标识码 由追溯码生成")
+ private String idCode;
+
+ @ApiModelProperty("库存分数量")
+ private Integer inventoryFragmentNumber;
+
+ @ApiModelProperty("0不允许拆零 1允许拆零")
+ private Boolean trdnFlag;
+
+ @ApiModelProperty("拆零价格")
+ private BigDecimal disassemblyPrice;
+
+ @ApiModelProperty("最小制剂数量")
+ private String medicineDosageNum;
+
+ @ApiModelProperty("包装单位")
+ private String packagingUnit;
+
+ @ApiModelProperty("售卖模式")
+ private Integer pricingModel;
+
+ @ApiModelProperty("加成率 30=30%")
+ private Integer makeUp;
+
+ @ApiModelProperty("0禁售 1可售")
+ private Boolean status;
+
+ @ApiModelProperty("库存预警数量")
+ private Integer inventoryWarnNumber;
+
+ @ApiModelProperty("到期预警天数")
+ private Integer expiryWarnDays;
+ @ApiModelProperty("选择的单价")
+ private BigDecimal selectedPrice;
+ @ApiModelProperty("选择的数量")
+ private Integer selectedNum;
+ @ApiModelProperty("选择的单位")
+ private String selectedUnit;
+
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java
similarity index 52%
rename from src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java
rename to src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java
index f0cfe4f..2e9cbea 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecordDetail.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalGoodsList.java
@@ -5,28 +5,27 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
/**
*
*
*
*
* @author NiuZiYuan
- * @since 2025-04-17
+ * @since 2025-04-23
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
-@TableName("medical_record_detail")
-@ApiModel(value = "MedicalRecordDetail对象", description = "")
-public class MedicalRecordDetail implements Serializable {
+@TableName("medical_goods_list")
+@ApiModel(value = "MedicalGoodsList对象", description = "")
+public class MedicalGoodsList implements Serializable {
private static final long serialVersionUID = 1L;
@@ -34,27 +33,24 @@ public class MedicalRecordDetail implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
- @ApiModelProperty("项目id(项目包含 goods表 item 表)")
- private Integer projectId;
+ @ApiModelProperty("商品id")
+ private Integer goodsId;
- @ApiModelProperty("项目名称")
- private String projectName;
+ @ApiModelProperty("商品名称")
+ private String name;
- @ApiModelProperty("项目医保码")
- private String projectSocialCode;
+ @ApiModelProperty("商品医保码")
+ private String socialCode;
- @ApiModelProperty("项目单位")
- private String projectUnit;
+ @ApiModelProperty("商品单位")
+ private String unit;
- @ApiModelProperty("项目单价")
- private BigDecimal projectUnitPrice;
+ @ApiModelProperty("商品单价")
+ private BigDecimal unitPrice;
@ApiModelProperty("病例id")
private Integer medicalRecordId;
- @ApiModelProperty("1 服务项目(item表) 2药品(goods表)")
- private Integer type;
-
- @ApiModelProperty("药品数量(type=2时不能为空)")
+ @ApiModelProperty("药品数量")
private Integer number;
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java
new file mode 100644
index 0000000..6db5520
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalItemList.java
@@ -0,0 +1,56 @@
+package com.syjiaer.clinic.server.entity.medical;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+/**
+ *
+ *
+ *
+ *
+ * @author NiuZiYuan
+ * @since 2025-04-23
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+@TableName("medical_item_list")
+@ApiModel(value = "MedicalItemList对象", description = "")
+public class MedicalItemList implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("自增主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty("服务id")
+ private Integer itemId;
+
+ @ApiModelProperty("服务名称")
+ private String name;
+
+ @ApiModelProperty("服务医保码")
+ private String socialCode;
+
+ @ApiModelProperty("服务单位")
+ private String unit;
+
+ @ApiModelProperty("服务单价")
+ private BigDecimal unitPrice;
+
+ @ApiModelProperty("病例id")
+ private Integer medicalRecordId;
+
+ @ApiModelProperty("药品数量")
+ private Integer number;
+}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java
index 9345e43..feeeab7 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/MedicalRecord.java
@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
*
*
* @author NiuZiYuan
- * @since 2025-04-22
+ * @since 2025-04-23
*/
@Getter
@Setter
@@ -71,4 +71,7 @@ public class MedicalRecord implements Serializable {
@ApiModelProperty("挂单id")
private Integer registrationId;
+
+ @ApiModelProperty("诊断类别")
+ private String diagType;
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java
index 89efadf..c474389 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/medical/dto/MedicalRecordVo.java
@@ -2,7 +2,8 @@ package com.syjiaer.clinic.server.entity.medical.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
-import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail;
+import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList;
+import com.syjiaer.clinic.server.entity.medical.MedicalItemList;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@@ -55,7 +56,7 @@ public class MedicalRecordVo {
@ApiModelProperty("挂单id")
private Integer registrationId;
@ApiModelProperty("诊疗服务")
- private List serviceDetail;
+ private List serviceDetail;
@ApiModelProperty("药品耗材")
- private List goodsDetail;
+ private List goodsDetail;
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java
index 111209c..f9a3bbc 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/patient/PatientRegistration.java
@@ -5,29 +5,27 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
/**
*
* 挂号表
*
*
* @author NiuZiYuan
- * @since 2025-04-10
+ * @since 2025-04-23
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("patient_registration")
-@ApiModel(value = "Registration对象", description = "挂号表")
+@ApiModel(value = "PatientRegistration对象", description = "挂号表")
public class PatientRegistration implements Serializable {
private static final long serialVersionUID = 1L;
@@ -82,4 +80,16 @@ public class PatientRegistration implements Serializable {
@ApiModelProperty("挂号状态 1候诊 2在诊 3已诊 0取消")
private Integer status;
+
+ @ApiModelProperty("人员编号")
+ private String psnNo;
+
+ @ApiModelProperty("险种类型")
+ private String insutype;
+
+ @ApiModelProperty("就诊id 挂号后医保返会")
+ private String mdtrtId;
+
+ @ApiModelProperty("流水号")
+ private String fstNo;
}
diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java
index b9b390f..d7aa3fe 100644
--- a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java
+++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialDiagnose.java
@@ -3,41 +3,46 @@ package com.syjiaer.clinic.server.entity.social;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
+import java.io.Serializable;
+import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
/**
*
- * 医保目录
+ * 疾病与诊断目录1307
*
*
* @author NiuZiYuan
- * @since 2025-04-02
+ * @since 2025-04-23
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("social_diagnose")
-@ApiModel(value = "SocialIDiagnose对象", description = "医疗服务项目1305,1321")
+@ApiModel(value = "SocialDiagnose对象", description = "疾病与诊断目录1307")
public class SocialDiagnose implements Serializable {
private static final long serialVersionUID = 1L;
- @ApiModelProperty("主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
- @ApiModelProperty("医保目录编码")
- private String socialCode;
+ @ApiModelProperty("诊断名称")
+ private String name;
+
+ @ApiModelProperty("诊断代码")
+ private String code;
+
+ @ApiModelProperty("类目名称")
+ private String categoryName;
+
+ @ApiModelProperty("亚目名称")
+ private String suborderName;
@ApiModelProperty("数据创建时间")
private LocalDateTime createDatetime;
@@ -47,20 +52,4 @@ public class SocialDiagnose implements Serializable {
@ApiModelProperty("版本名称")
private String versionName;
-
- @ApiModelProperty("章名称")
- private String chapterName;
-
- @ApiModelProperty("节名称")
- private String secondaryName;
-
- @ApiModelProperty("类目名称")
- private String categoryName;
-
- @ApiModelProperty("亚目名称")
- private String suborderName;
-
- @ApiModelProperty("诊断名称")
- private String diagnosisName;
-
}
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java
index 7e1be2b..8488d40 100644
--- a/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/charge/ChargeGoodsListMapper.java
@@ -2,6 +2,11 @@ package com.syjiaer.clinic.server.mapper.charge;
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
/**
@@ -13,6 +18,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @since 2025-04-22
*/
public interface ChargeGoodsListMapper extends BaseMapper {
+ @Select("select cg.unit as selected_unit ,cg.unit_price as selected_price,cg.\"number\" as selected_num,goods.* " +
+ "from charge_goods_list as cg LEFT JOIN goods ON cg.goods_id = goods.\"id\" WHERE cg.charge_order_code = #{code} ")
+ List selectDetailByCode(@Param("code")String code);
}
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java
new file mode 100644
index 0000000..3b799b3
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalGoodsListMapper.java
@@ -0,0 +1,24 @@
+package com.syjiaer.clinic.server.mapper.medical;
+
+import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import lombok.Setter;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author NiuZiYuan
+ * @since 2025-04-23
+ */
+public interface MedicalGoodsListMapper extends BaseMapper {
+
+ @Select("select * from medical_goods_list where medical_record_id = #{medicalRecordId}")
+ List listByMedicalRecordId(Integer medicalRecordId);
+}
+
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java
new file mode 100644
index 0000000..c2a3c25
--- /dev/null
+++ b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalItemListMapper.java
@@ -0,0 +1,22 @@
+package com.syjiaer.clinic.server.mapper.medical;
+
+import com.syjiaer.clinic.server.entity.medical.MedicalItemList;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author NiuZiYuan
+ * @since 2025-04-23
+ */
+public interface MedicalItemListMapper extends BaseMapper {
+ @Select("select * from medical_item_list where medical_record_id = #{medicalRecordId}")
+ List listByMedicalRecordId(Integer medicalRecordId);
+}
+
diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java
deleted file mode 100644
index b43c6f6..0000000
--- a/src/main/java/com/syjiaer/clinic/server/mapper/medical/MedicalRecordDetailMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.syjiaer.clinic.server.mapper.medical;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail;
-
-
-/**
- *
- * Mapper 接口
- *
- *
- * @author NiuZiYuan
- * @since 2025-04-17
- */
-public interface MedicalRecordDetailMapper extends BaseMapper {
-
-}
-
diff --git a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java
index 2bc9d9d..a52d755 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/BaseService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/BaseService.java
@@ -71,7 +71,7 @@ public abstract class BaseService {
protected Page pageHelper(int pageNum, int pageSize, QueryWrapper queryWrapper, BaseMapper mapper,String orderByStr ,boolean isAsc){
Long totalCount = mapper.selectCount(queryWrapper);
- if (orderByStr == null || orderByStr.isEmpty()){
+ if (orderByStr != null && !orderByStr.isEmpty()){
queryWrapper.orderBy(true,isAsc,orderByStr);
}
queryWrapper.last("LIMIT " + pageSize + " OFFSET " + (pageNum - 1) * pageSize);
diff --git a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java
index ef1d1a9..63e42c1 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/charge/ChargeService.java
@@ -2,26 +2,45 @@ package com.syjiaer.clinic.server.service.charge;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.constants.Constants;
+import com.syjiaer.clinic.server.common.enums.InventorySocialTypeEnum;
+import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum;
import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
+import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.StringUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
+import com.syjiaer.clinic.server.entity.charge.dto.ChargeOrderDto;
import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo;
+import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
import com.syjiaer.clinic.server.entity.goods.Goods;
+import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
+import com.syjiaer.clinic.server.entity.medical.MedicalRecord;
import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto;
import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto;
+import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
+import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeServiceListMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
+import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper;
+import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper;
+import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
+import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
+import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.service.BaseService;
+import com.syjiaer.clinic.server.service.inventory.InventoryService;
+import com.syjiaer.clinic.server.service.patient.PatientInfoService;
+import com.syjiaer.clinic.server.service.patient.PatientRegistrationService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +50,8 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
+import static com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum.goods;
+
@Service
public class ChargeService extends BaseService {
@Autowired
@@ -41,10 +62,26 @@ public class ChargeService extends BaseService {
private ChargeGoodsListMapper chargeGoodsListMapper;
@Autowired
private GoodsMapper goodsMapper;
+ @Autowired
+ private PatientInfoMapper patientInfoMapper;
+ @Autowired
+ private MedicalRecordMapper medicalRecordMapper;
+ @Autowired
+ private OrganizationMemberMapper organizationMemberMapper;
+ @Autowired
+ private PatientRegistrationService patientRegistrationService;
+ @Autowired
+ @Lazy
+ private ChargeService chargeService;
+ @Autowired
+ private InventoryService inventoryService;
+ @Autowired
+ private InventoryLogMapper inventoryLogMapper;
+
@Transactional(rollbackFor = Exception.class)
- public void save(MedicalRecordSaveDto medicalRecordSaveDto){
- ChargeOrder dbOrder = chargeOrderMapper.selectById(medicalRecordSaveDto.getId());
+ public ChargeOrder save(ChargeOrderDto dto){
+ ChargeOrder dbOrder = chargeOrderMapper.selectById(dto.getId());
if (dbOrder != null){
//清除已有的订单
chargeServiceListMapper.delete(new QueryWrapper().eq("charge_order_code", dbOrder.getCode()));
@@ -59,49 +96,49 @@ public class ChargeService extends BaseService {
BigDecimal preTotalPrice = BigDecimal.ZERO;
BigDecimal totalPrice = BigDecimal.ZERO;
List chargeServiceLists = new ArrayList<>();
- for (Item item : medicalRecordSaveDto.getItemList()){
+ for (ChargeServiceList service : dto.getServiceDetail()){
ChargeServiceList itemList = new ChargeServiceList();
String fsn = StringUtil.getCode("FSN");
itemList.setChargeOrderCode(code);
- itemList.setServiceId(item.getId());
+ itemList.setServiceId(service.getId());
- itemList.setPreUnitPrice(item.getUnitPrice());
- itemList.setUnitPrice(item.getUnitPrice());
+ itemList.setPreUnitPrice(service.getUnitPrice());
+ itemList.setUnitPrice(service.getUnitPrice());
itemList.setNumber(1);
- BigDecimal subTotalPrice = item.getUnitPrice();
- itemList.setSubTotalPrice(item.getUnitPrice());
- itemList.setUnit(item.getUnit());
- itemList.setName(item.getItemName());
+ BigDecimal subTotalPrice = service.getUnitPrice();
+ itemList.setSubTotalPrice(service.getUnitPrice());
+ itemList.setUnit(service.getUnit());
+ itemList.setName(service.getName());
itemList.setFeedetlSn(fsn);
itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime);
chargeServiceLists.add(itemList);
- preTotalPrice = preTotalPrice.add(item.getUnitPrice());
- totalPrice = totalPrice.add(item.getUnitPrice());
+ preTotalPrice = preTotalPrice.add(service.getUnitPrice());
+ totalPrice = totalPrice.add(service.getUnitPrice());
}
chargeServiceListMapper.insert(chargeServiceLists);
List chargeGoodsLists = new ArrayList<>();
- for (GoodsRetailDto goodsRetailDto : medicalRecordSaveDto.getGoodsList()){
+ for (ChargeGoodsListVo goods : dto.getGoodsDetail()){
ChargeGoodsList itemList = new ChargeGoodsList();
- Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId());
+ Goods dbGoods = goodsMapper.selectById(goods.getId());
if (dbGoods == null){
throw new RuntimeException("商品不存在");
}
String fsn = StringUtil.getCode("FSN");
itemList.setChargeOrderCode(code);
- itemList.setGoodsId(goodsRetailDto.getId());
- itemList.setPreUnitPrice(goodsRetailDto.getSelectedPrice());
- itemList.setUnitPrice(goodsRetailDto.getSelectedPrice());
- itemList.setNumber(goodsRetailDto.getSelectNum());
- BigDecimal subTotalPrice = goodsRetailDto.getSelectedPrice().multiply(BigDecimal.valueOf(goodsRetailDto.getSelectNum()));
+ itemList.setGoodsId(goods.getId());
+ itemList.setPreUnitPrice(goods.getSelectedPrice());
+ itemList.setUnitPrice(goods.getSelectedPrice());
+ itemList.setNumber(goods.getSelectedNum());
+ BigDecimal subTotalPrice = goods.getSelectedPrice().multiply(BigDecimal.valueOf(goods.getSelectedNum()));
itemList.setSubTotalPrice(subTotalPrice);
itemList.setTrdnFlag(true);
- if (dbGoods.getPackagingUnit().equals(goodsRetailDto.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){
+ if (dbGoods.getPackagingUnit().equals(goods.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){
itemList.setTrdnFlag(false);
}
- itemList.setUnit(goodsRetailDto.getSelectedUnit());
- itemList.setGoodsName(dbGoods.getName());
+ itemList.setUnit(goods.getSelectedUnit());
+ itemList.setName(dbGoods.getName());
itemList.setFeedetlSn(fsn);
itemList.setCreateDate(nowLocalDate);
itemList.setCreateTime(nowLocalDateTime);
@@ -117,10 +154,11 @@ public class ChargeService extends BaseService {
chargeOrder.setTotalPrice(totalPrice);
chargeOrder.setCreateDatetime(nowLocalDateTime);
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
- chargeOrder.setPatientId(medicalRecordSaveDto.getPatientId());
+ chargeOrder.setPatientId(dto.getPatientInfo().getId());
chargeOrder.setSalePersonId(user.getId());
- chargeOrder.setMedicalRecordId(medicalRecordSaveDto.getId());
+ chargeOrder.setMedicalRecordId(dto.getMedicalRecord().getId());
chargeOrderMapper.insert(chargeOrder);
+ return chargeOrder;
}
@@ -141,10 +179,12 @@ public class ChargeService extends BaseService {
for (ChargeOrder chargeOrder : orderPage.getList()){
ChargeDetailVo detailVo = new ChargeDetailVo();
BeanUtils.copyProperties(chargeOrder, detailVo);
+ detailVo.setMedicalRecord(medicalRecordMapper.selectById(chargeOrder.getMedicalRecordId()));
+ detailVo.setPatientInfo(patientInfoMapper.selectById(chargeOrder.getPatientId()));
detailVo.setServiceDetail(chargeServiceListMapper.selectList(new QueryWrapper()
.eq("charge_order_code", chargeOrder.getCode())));
- detailVo.setGoodsDetail(chargeGoodsListMapper.selectList(new QueryWrapper()
- .eq("charge_order_code", chargeOrder.getCode())));
+
+ detailVo.setGoodsDetail(chargeGoodsListMapper.selectDetailByCode(chargeOrder.getCode()));
voList.add(detailVo);
}
Page resultPage = new Page<>();
@@ -154,6 +194,62 @@ public class ChargeService extends BaseService {
return resultPage;
}
+ @Transactional(rollbackFor = Exception.class)
+ public ChargeOrder updateOrCreate(ChargeOrderDto dto) {
+ //创建患者
+ PatientInfo patientInfo = dto.getPatientInfo();
+ if (patientInfo == null){
+ throw new MessageException("患者信息不能为空");
+ }
+ patientInfoMapper.insertOrUpdate(patientInfo);
+ if (dto.getMedicalRecord().getDockerId() == null || dto.getMedicalRecord().getDiagnosisDetail() == null){
+ throw new MessageException("诊断信息和医生不能为空");
+ }
+ //添加挂号信息
+ OrganizationMember docker = organizationMemberMapper.selectById(dto.getMedicalRecord().getDockerId());
+ PatientRegistration registration = patientRegistrationService.regisByDockerAndPatient(docker,patientInfo, (short) 1,1);
+ //todo 添加病例
+ medicalRecordMapper.insertOrUpdate(dto.getMedicalRecord());
+ //添加订单
+ return chargeService.save(dto);
+
+ }
+
+ public void completeOrder (Integer id,Integer payType){
+ ChargeOrder order = chargeOrderMapper.selectById(id);
+ if (order == null){
+ throw new MessageException("订单不存在");
+ }
+ if (!order.getStatus().equals(RetailOrderStatusEnum.UNFINISHED.getCode())){
+ throw new MessageException("订单状态错误");
+ }
+ ChargeOrder updateOrder = new ChargeOrder();
+ updateOrder.setId(id);
+ updateOrder.setStatus(RetailOrderStatusEnum.FINISHED.getCode());
+ updateOrder.setPayType(payType);
+ updateOrder.setPayTime(LocalDateTime.now());
+ chargeOrderMapper.updateById(updateOrder);
+ //扣除商品库存
+ List goodsLists = chargeGoodsListMapper.selectDetailByCode(order.getCode());
+ for (ChargeGoodsListVo goodsList : goodsLists) {
+ Integer wholeNumber = 0;
+ Integer fragmentNumber = 0;
+ if (goodsList.getPackagingUnit().equals(goodsList.getSelectedUnit())){
+ wholeNumber = goodsList.getSelectedNum();
+ }else {
+ fragmentNumber = goodsList.getSelectedNum();
+ }
+ List logs = inventoryService.adjustNumberByGoodsId(goodsList.getId(), wholeNumber, fragmentNumber, "订单完成");
+ for (InventoryLog log : logs) {
+ log.setOperateName(order.getPatientName());
+ log.setOperateId(order.getPatientId());
+ log.setType(InventoryTypeEnum.GRANT_OUT.getType());
+ log.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType());
+ }
+ inventoryLogMapper.insert(logs);
+ }
+
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java
index 9bb89d8..7cca8fa 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/common/CommonConfigService.java
@@ -22,4 +22,14 @@ public class CommonConfigService extends BaseService {
QueryWrapper queryWrapper = new QueryWrapper<>();
return commonConfigMapper.selectList(queryWrapper);
}
+
+ public void saveOrUpdate(CommonConfig commonConfig){
+ commonConfigMapper.insertOrUpdate(commonConfig);
+ }
+
+ public CommonConfig getOne(String key) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("k", key);
+ return commonConfigMapper.selectOne(queryWrapper);
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java
index 7aaabfd..a7a7ae2 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/medical/MedicalRecordService.java
@@ -1,22 +1,34 @@
package com.syjiaer.clinic.server.service.medical;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.syjiaer.clinic.server.common.api.input.IM2201;
+import com.syjiaer.clinic.server.common.api.input.IM2203A;
+import com.syjiaer.clinic.server.common.api.request.SocialRequest;
+import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.enums.MedicalRecordDetailTypeEnum;
import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
+import com.syjiaer.clinic.server.entity.medical.MedicalGoodsList;
+import com.syjiaer.clinic.server.entity.medical.MedicalItemList;
import com.syjiaer.clinic.server.entity.medical.MedicalRecord;
-import com.syjiaer.clinic.server.entity.medical.MedicalRecordDetail;
import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto;
import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto;
import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordVo;
+import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
+import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.item.ItemMapper;
-import com.syjiaer.clinic.server.mapper.medical.MedicalRecordDetailMapper;
+import com.syjiaer.clinic.server.mapper.medical.MedicalGoodsListMapper;
+import com.syjiaer.clinic.server.mapper.medical.MedicalItemListMapper;
import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper;
+import com.syjiaer.clinic.server.mapper.organization.OrganizationMemberMapper;
+import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.charge.ChargeService;
@@ -25,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@@ -33,7 +47,13 @@ public class MedicalRecordService extends BaseService {
@Autowired
private MedicalRecordMapper medicalRecordMapper;
@Autowired
- private MedicalRecordDetailMapper medicalRecordDetailMapper;
+ private MedicalGoodsListMapper medicalGoodsListMapper;
+ @Autowired
+ private MedicalItemListMapper medicalItemListMapper;
+ @Autowired
+ private OrganizationMemberMapper organizationMemberMapper;
+ @Autowired
+ private OrganizationSectionMapper organizationSectionMapper;
@Autowired
private PatientRegistrationMapper patientRegistrationMapper;
@Autowired
@@ -42,6 +62,10 @@ public class MedicalRecordService extends BaseService {
private GoodsMapper goodsMapper;
@Autowired
private ChargeService chargeService;
+ @Autowired
+ private Config config;
+ @Autowired
+ private SocialRequest socialRequest;
/*
* 保存
@@ -68,40 +92,42 @@ public class MedicalRecordService extends BaseService {
medicalRecord.setDockerName(managerUser.getName());
medicalRecordMapper.insertOrUpdate(medicalRecord);
Integer medicalRecordId = medicalRecord.getId();
- List detailList = new ArrayList<>();
+ List itemLists = new ArrayList<>();
for (Item item : saveDto.getItemList()) {
Item dbItem = itemMapper.selectById(item.getId());
- MedicalRecordDetail detail = new MedicalRecordDetail();
- detail.setMedicalRecordId(medicalRecordId);
- detail.setProjectId(item.getId());
- detail.setProjectName(dbItem.getItemName());
- detail.setProjectSocialCode(dbItem.getItemSocialCode());
- detail.setProjectUnit(dbItem.getUnit());
- detail.setProjectUnitPrice(dbItem.getUnitPrice());
- detail.setType(MedicalRecordDetailTypeEnum.item.getType());
- detailList.add(detail);
+ MedicalItemList itemDetail = new MedicalItemList();
+ itemDetail.setItemId(item.getId());
+ itemDetail.setName(dbItem.getItemName());
+ itemDetail.setSocialCode(dbItem.getItemSocialCode());
+ itemDetail.setUnit(dbItem.getUnit());
+ itemDetail.setUnitPrice(dbItem.getUnitPrice());
+ itemDetail.setMedicalRecordId(medicalRecordId);
+ itemDetail.setNumber(1);
+ itemLists.add(itemDetail);
}
+ medicalItemListMapper.insert(itemLists);
+
+ List goodsLists = new ArrayList<>();
for (GoodsRetailDto goodsRetailDto : saveDto.getGoodsList()) {
Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId());
- MedicalRecordDetail detail = new MedicalRecordDetail();
- detail.setMedicalRecordId(medicalRecordId);
- detail.setProjectId(goodsRetailDto.getId());
- detail.setProjectName(dbGoods.getName());
- detail.setProjectSocialCode(dbGoods.getHilistCode());
- detail.setProjectUnit(goodsRetailDto.getSelectedUnit());
- detail.setProjectUnitPrice(goodsRetailDto.getSelectedPrice());
- detail.setType(MedicalRecordDetailTypeEnum.goods.getType());
- detail.setNumber(goodsRetailDto.getSelectNum());
- detailList.add(detail);
+ MedicalGoodsList goodsDetail = new MedicalGoodsList();
+ goodsDetail.setGoodsId(goodsRetailDto.getId());
+ goodsDetail.setName(dbGoods.getName());
+ goodsDetail.setSocialCode(dbGoods.getHilistCode());
+ goodsDetail.setUnit(goodsRetailDto.getSelectedUnit());
+ goodsDetail.setUnitPrice(goodsRetailDto.getSelectedPrice());
+ goodsDetail.setMedicalRecordId(medicalRecordId);
+ goodsDetail.setNumber(goodsRetailDto.getSelectNum());
+ goodsLists.add(goodsDetail);
}
- medicalRecordDetailMapper.insertOrUpdate(detailList);
+ medicalGoodsListMapper.insert(goodsLists);
//添加收费单
- saveDto.setId(medicalRecordId);
- chargeService.save(saveDto);
+// saveDto.setId(medicalRecordId);
+// chargeService.save(saveDto);
@@ -123,17 +149,15 @@ public class MedicalRecordService extends BaseService {
List mrList = medicalRecordMapper.selectList(query);
List mrvList = new ArrayList<>();
for (MedicalRecord medicalRecord : mrList) {
- QueryWrapper severQuery = new QueryWrapper<>();
+ QueryWrapper severQuery = new QueryWrapper<>();
MedicalRecordVo vo = new MedicalRecordVo();
BeanUtils.copyProperties(medicalRecord, vo);
severQuery.eq("medical_record_id", medicalRecord.getId());
- severQuery.eq("type", 1);
- List serverDetail = medicalRecordDetailMapper.selectList(severQuery);
+ List serverDetail = medicalItemListMapper.selectList(severQuery);
vo.setServiceDetail(serverDetail);
- QueryWrapper goodsQuery = new QueryWrapper<>();
+ QueryWrapper goodsQuery = new QueryWrapper<>();
severQuery.eq("medical_record_id", medicalRecord.getId());
- severQuery.eq("type", 2);
- List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery);
+ List goodsDetail = medicalGoodsListMapper.selectList(goodsQuery);
vo.setGoodsDetail(goodsDetail);
mrvList.add(vo);
}
@@ -150,18 +174,62 @@ public class MedicalRecordService extends BaseService {
query.eq("registration_id", regisId);
MedicalRecord mr = medicalRecordMapper.selectOne(query);
- QueryWrapper severQuery = new QueryWrapper<>();
+ QueryWrapper severQuery = new QueryWrapper<>();
MedicalRecordVo vo = new MedicalRecordVo();
BeanUtils.copyProperties(mr, vo);
severQuery.eq("medical_record_id", mr.getId());
- severQuery.eq("type", 1);
- List serverDetail = medicalRecordDetailMapper.selectList(severQuery);
+ List serverDetail = medicalItemListMapper.selectList(severQuery);
vo.setServiceDetail(serverDetail);
- QueryWrapper goodsQuery = new QueryWrapper<>();
+ QueryWrapper goodsQuery = new QueryWrapper<>();
goodsQuery.eq("medical_record_id", mr.getId());
- goodsQuery.eq("type", 2);
- List goodsDetail = medicalRecordDetailMapper.selectList(goodsQuery);
+ List goodsDetail = medicalGoodsListMapper.selectList(goodsQuery);
vo.setGoodsDetail(goodsDetail);
return vo;
}
+
+ public void uploadDiagnosis(Integer medicalRecordId){
+ MedicalRecord medicalRecord = medicalRecordMapper.selectById(medicalRecordId);
+ if (medicalRecord == null){
+ throw new MessageException("病历不存在");
+ }
+ PatientRegistration patientRegistration = patientRegistrationMapper.selectById(medicalRecord.getRegistrationId());
+ if (patientRegistration == null){
+ throw new MessageException("挂号单不存在");
+ }
+ OrganizationSection section = organizationSectionMapper.selectById(patientRegistration.getOrganizationSectionId());
+ OrganizationMember doctor = organizationMemberMapper.selectById(patientRegistration.getOrganizationDoctorId());
+ List goodsLists = medicalGoodsListMapper.listByMedicalRecordId(medicalRecordId);
+ List itemLists = medicalItemListMapper.listByMedicalRecordId(medicalRecordId);
+
+ LocalDateTime curTime = LocalDateTime.now();
+ IM2203A im2203A = new IM2203A();
+ IM2203A.Mdtrtinfo mdtrtinfo = new IM2203A.Mdtrtinfo();
+ mdtrtinfo.setMdtrt_id(patientRegistration.getMdtrtId());
+ mdtrtinfo.setPsn_no(patientRegistration.getPsnNo());
+ mdtrtinfo.setMed_type(config.get("social","medType"));
+ mdtrtinfo.setBegntime(curTime);
+ im2203A.setMdtrtinfo(mdtrtinfo);
+ JSONArray jsonArray = JSONArray.parseArray(medicalRecord.getDiagnosisDetail());
+ int i =0;
+ List diagList = new ArrayList<>();
+ for (Object object : jsonArray){
+ i++;
+ JSONObject json = (JSONObject) object;
+ IM2203A.Diseinfo diag = new IM2203A.Diseinfo();
+ diag.setDiag_type(medicalRecord.getDiagType());
+ diag.setDiag_srt_no(BigDecimal.valueOf(i));
+ diag.setDiag_code(json.getString("code"));
+ diag.setDiag_name(json.getString("name"));
+ diag.setDiag_dept(section.getName());
+ diag.setDise_dor_no(doctor.getSocialMemberCode());
+ diag.setDise_dor_name(doctor.getName());
+ diag.setDiag_time(curTime);
+ diag.setVali_flag("1");
+ diagList.add(diag);
+ }
+ im2203A.setDiseinfo(diagList);
+ socialRequest.call2203A(im2203A);
+
+
+ }
}
diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
index 72d98cb..240c82c 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationMemberService.java
@@ -39,7 +39,7 @@ public class OrganizationMemberService extends BaseService {
queryWrapper.eq("tel", tel);
}
queryWrapper.eq("del_flag", false);
- Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper);
+ Page pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper,"create_datetime",false);
return pageResult;
}
/*
diff --git a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java
index b03443e..781db42 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/organization/OrganizationSectionService.java
@@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.service.organization;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.StringUtil;
@@ -9,6 +10,7 @@ import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
import com.syjiaer.clinic.server.mapper.organization.OrganizationSectionMapper;
import com.syjiaer.clinic.server.service.BaseService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -20,6 +22,7 @@ import java.util.List;
* 组织科室
*/
@Service
+@Slf4j
public class OrganizationSectionService extends BaseService {
@Autowired
private StringUtil stringUtil;
@@ -27,6 +30,8 @@ public class OrganizationSectionService extends BaseService {
private OrganizationSectionMapper organizationSectionMapper;
@Autowired
private Config config;
+ @Autowired
+ private SocialRequest socialRequest;
/**
* 分页查询科室
@@ -73,30 +78,30 @@ public class OrganizationSectionService extends BaseService {
String processing = getString(caty);
organizationSection.setCaty(processing);
organizationSectionMapper.insert(organizationSection);
-// try {
-// socialRequest.call3401(new com.syjiaer.clinic.server.modules.social.api.input.IM3401()
-// .setHospDeptCodg(organizationSection.getCode())
-// .setHospDeptName(organizationSection.getName())
-// .setCaty(organizationSection.getCaty())
-// .setBegntime(organizationSection.getBeginDate())
-// .setEndtime(organizationSection.getEndDate())
-// .setItro(organizationSection.getInfo())
-// .setDeptResperName(organizationSection.getResperName())
-// .setDeptResperTel(organizationSection.getResperTel())
-// .setDeptMedServScp(organizationSection.getMedServScp())
-// .setDeptEstbdat(organizationSection.getCreationDate())
-// .setAprvBedCnt(organizationSection.getBedCnt())
-// .setHiCrtfBedCnt(organizationSection.getSocialBedCnt())
-// .setPoolareaNo(social_insuplcAdmdvs)
-// .setDrPsncnt(organizationSection.getDrPsncnt())
-// .setPharPsncnt(organizationSection.getPharPsncnt())
-// .setNursPsncnt(organizationSection.getNursPsncnt())
-// .setTecnPsncnt(organizationSection.getTecnPsncnt())
-// .setMemo(organizationSection.getMemo()));
-// } catch (MessageException messageException) {
-// log.error("科室添加失败", messageException);
-// throw new MessageException("科室添加失败");
-// }
+ try {
+ socialRequest.call3401(new com.syjiaer.clinic.server.common.api.input.IM3401()
+ .setHospDeptCodg(organizationSection.getCode())
+ .setHospDeptName(organizationSection.getName())
+ .setCaty(organizationSection.getCaty())
+ .setBegntime(organizationSection.getBeginDate())
+ .setEndtime(organizationSection.getEndDate())
+ .setItro(organizationSection.getInfo())
+ .setDeptResperName(organizationSection.getResperName())
+ .setDeptResperTel(organizationSection.getResperTel())
+ .setDeptMedServScp(organizationSection.getMedServScp())
+ .setDeptEstbdat(organizationSection.getCreationDate())
+ .setAprvBedCnt(organizationSection.getBedCnt())
+ .setHiCrtfBedCnt(organizationSection.getSocialBedCnt())
+ .setPoolareaNo(socialInsuplcAdmdvs)
+ .setDrPsncnt(organizationSection.getDrPsncnt())
+ .setPharPsncnt(organizationSection.getPharPsncnt())
+ .setNursPsncnt(organizationSection.getNursPsncnt())
+ .setTecnPsncnt(organizationSection.getTecnPsncnt())
+ .setMemo(organizationSection.getMemo()));
+ } catch (MessageException messageException) {
+ log.error("科室添加失败", messageException);
+ throw new MessageException("科室添加失败");
+ }
}
@Transactional(rollbackFor = Exception.class)
diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
index 3db35e3..d6a0dbb 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientInfoService.java
@@ -1,12 +1,25 @@
package com.syjiaer.clinic.server.service.patient;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.syjiaer.clinic.server.entity.patient.PatientInfo;
+import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.service.BaseService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class PatientInfoService extends BaseService {
+ @Autowired
+ private PatientInfoMapper patientInfoMapper;
-
-
+ public void save(PatientInfo patientInfo){
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("phone", patientInfo.getPhone());
+ PatientInfo dbInfo = patientInfoMapper.selectOne(queryWrapper);
+ if (dbInfo != null){
+ patientInfo.setId(dbInfo.getId());
+ }
+ patientInfoMapper.insertOrUpdate(patientInfo);
+ }
diff --git a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
index 32321e3..1feb9bc 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/patient/PatientRegistrationService.java
@@ -1,10 +1,15 @@
package com.syjiaer.clinic.server.service.patient;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.syjiaer.clinic.server.common.api.input.IM2201;
+import com.syjiaer.clinic.server.common.api.request.SocialRequest;
import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.RegistrationStatusEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.DateUtil;
+import com.syjiaer.clinic.server.common.util.StringUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
@@ -19,6 +24,7 @@ import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +46,11 @@ public class PatientRegistrationService extends BaseService {
private OrganizationMemberMapper organizationMemberMapper;
@Autowired
private OrganizationSectionMapper organizationSectionMapper;
+ @Autowired
+ @Lazy
+ private PatientRegistrationService patientRegistrationService;
+ @Autowired
+ private SocialRequest socialRequest;
/*
@@ -47,38 +58,94 @@ public class PatientRegistrationService extends BaseService {
* @param patientRegistrationParam 挂号信息
*/
@Transactional(rollbackFor = Exception.class)
- public void registration(PatientRegistration registrationParam) {
+ public PatientRegistration registration(PatientRegistration registrationParam,String mdtrtCertType, String mdtrtCertNo) {
//TODO 挂号和患者 记录身份证号非必填
if (registrationParam == null) {
throw new MessageException("data参数为空");
}
+ LocalDateTime now =LocalDateTime.now();
+ String fstNo = StringUtil.getCode("FSN");
+ if (registrationParam.getPatientInfoId() == null){
+ //将患者添加到患者表
+
+ PatientInfo patientInfo = new PatientInfo();
+ patientInfo.setName(registrationParam.getName());
+ patientInfo.setPhone(registrationParam.getPhone());
+ patientInfo.setSex(registrationParam.getGender());
+ patientInfo.setAge(registrationParam.getAge());
+
+ QueryWrapper patientInfoQuery = new QueryWrapper<>();
+ patientInfoQuery.eq("phone", registrationParam.getPhone());
+ List patientInfoList = patientInfoMapper.selectList(patientInfoQuery);
+ if (patientInfoList.isEmpty()) {
+ patientInfoMapper.insert(patientInfo);
+ } else {
+ patientInfo.setId(patientInfoList.get(0).getId());
+ patientInfoMapper.updateById(patientInfo);
+ }
+ registrationParam.setPatientInfoId(patientInfo.getId());
+ }
PatientRegistration registration = new PatientRegistration();
BeanUtils.copyProperties(registrationParam, registration);
+ registration.setFstNo(fstNo);
registration.setRegistrationMoney(new BigDecimal("0"));
- registration.setCreateDatetime(LocalDateTime.now());
+ registration.setCreateDatetime(now);
registration.setType(1);
registration.setStatus(1);
-
- //将患者添加到患者表
-
- PatientInfo patientInfo = new PatientInfo();
- patientInfo.setName(registrationParam.getName());
- patientInfo.setPhone(registrationParam.getPhone());
- patientInfo.setSex(registrationParam.getGender());
- patientInfo.setAge(registrationParam.getAge());
-
- QueryWrapper patientInfoQuery = new QueryWrapper<>();
- patientInfoQuery.eq("phone", registrationParam.getPhone());
- List patientInfoList = patientInfoMapper.selectList(patientInfoQuery);
- if (patientInfoList.isEmpty()) {
- patientInfoMapper.insert(patientInfo);
- } else {
- patientInfo.setId(patientInfoList.get(0).getId());
- patientInfoMapper.updateById(patientInfo);
- }
- registration.setPatientInfoId(patientInfo.getId());
+ OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
+ OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId());
+ registration.setOrganizationDoctorId(docker.getId());
+ registration.setOrganizationSectionId(section.getId());
patientRegistrationMapper.insert(registration);
+ //医保挂号
+ if (mdtrtCertType == null && mdtrtCertNo == null){
+ return registration;
+ }
+
+ IM2201 im2201 = new IM2201();
+ im2201.setPsnNo(registration.getPsnNo());
+ im2201.setInsutype(registration.getInsutype());
+ im2201.setBegntime(now);
+ im2201.setMdtrtCertType(mdtrtCertType);
+ im2201.setMdtrtCertNo(mdtrtCertNo);
+ im2201.setIptOtpNo(fstNo);
+ im2201.setAtddrNo(docker.getSocialMemberCode());
+ im2201.setDrName(docker.getName());
+ im2201.setDeptCode(section.getCode());
+ im2201.setDeptName(section.getName());
+ im2201.setCaty(section.getCaty());
+ JSONObject jsonObject = socialRequest.call2201(im2201);
+ UpdateWrapper regisWrapper = new UpdateWrapper<>();
+ regisWrapper.set("mdtrt_id",((JSONObject)jsonObject.get("data")).get("mdtrt_id"));
+ regisWrapper.set("type",2);
+ regisWrapper.eq("id",registration.getId());
+ patientRegistrationMapper.update(null,regisWrapper);
+
+
+
+ return registration;
+
}
+ public PatientRegistration regisByDockerAndPatient(OrganizationMember docker, PatientInfo patient, Short type, Integer status){
+ PatientRegistration registration = new PatientRegistration();
+ //病人信息
+ registration.setPatientInfoId(patient.getId());
+ registration.setName(patient.getName());
+ registration.setGender(patient.getSex());
+ registration.setAge(patient.getAge());
+ registration.setPhone(patient.getPhone());
+ //医生信息
+ registration.setOrganizationSectionId(docker.getSectionId());
+ registration.setOrganizationDoctorId(docker.getId());
+
+ //挂号信息
+ registration.setVisitType(type);
+ registration.setCreateDatetime(LocalDateTime.now());
+ registration.setRegistrationMoney(BigDecimal.valueOf(0));
+ registration.setDelFlag(0);
+ return patientRegistrationService.registration(registration,null,null);
+ }
+
/*
* 挂号列表
* @param pageNum 页码
diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java
index 967ad17..ebb723c 100644
--- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java
+++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialDiagnoseService.java
@@ -40,21 +40,17 @@ public class SocialDiagnoseService {
continue;
}
SocialDiagnose socialDiagnose = new SocialDiagnose();
- String code = line_array[0];
- socialDiagnose.setSocialCode(code);
+ String code = line_array[10];
+ socialDiagnose.setCode(code);
+ socialDiagnose.setName(line_array[11]);
socialDiagnose.setVersionName(line_array[22]);
- socialDiagnose.setChapterName(line_array[3]);
- socialDiagnose.setSecondaryName(line_array[5]);
- socialDiagnose.setCategoryName(line_array[7]);
- socialDiagnose.setSuborderName(line_array[9]);
- socialDiagnose.setDiagnosisName(line_array[11]);
socialDiagnose.setCreateDatetime(LocalDateTime.parse(line_array[20], dateTimeFormatter));
socialDiagnose.setUpdateDatetime(LocalDateTime.parse(line_array[21], dateTimeFormatter));
list.add(socialDiagnose);
- codeList.add(socialDiagnose.getSocialCode());
+ codeList.add(code);
}
QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.in("social_code", codeList);
+ queryWrapper.in("code", codeList);
socialDiagnoseMapper.delete(queryWrapper);
socialDiagnoseMapper.insert(list, 100);
socialDirectoryVersionService.setSocialDirectoryVersion(type, version_name, list.get(0).getVersionName(), list.size());
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..d14a1e1
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+ ${REQUEST_FILE}
+
+
+ D:/clinic/logs/request/app.%d{yyyy-MM-dd}.log
+
+ 30
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+
+ true
+
+
+
+
+ ${LOG_FILE}
+
+
+ D:/clinic/logs/base/app.%d{yyyy-MM-dd}.log
+
+ 30
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/xml/MedicalRecordDetailMapper.xml b/src/main/resources/xml/MedicalGoodsListMapper.xml
similarity index 90%
rename from src/main/resources/xml/MedicalRecordDetailMapper.xml
rename to src/main/resources/xml/MedicalGoodsListMapper.xml
index ad0993a..8a49a36 100644
--- a/src/main/resources/xml/MedicalRecordDetailMapper.xml
+++ b/src/main/resources/xml/MedicalGoodsListMapper.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/src/main/resources/xml/MedicalItemListMapper.xml b/src/main/resources/xml/MedicalItemListMapper.xml
new file mode 100644
index 0000000..c434a38
--- /dev/null
+++ b/src/main/resources/xml/MedicalItemListMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/resources/xml/SocialDiagnoseMapper.xml b/src/main/resources/xml/SocialDiagnoseMapper.xml
new file mode 100644
index 0000000..aae798d
--- /dev/null
+++ b/src/main/resources/xml/SocialDiagnoseMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java
index db40b8e..52af46d 100644
--- a/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java
+++ b/src/test/java/com/syjiaer/clinic/server/ServerApplicationTests.java
@@ -1,5 +1,8 @@
package com.syjiaer.clinic.server;
+import com.syjiaer.clinic.server.common.api.input.IM2203A;
+import com.syjiaer.clinic.server.service.medical.MedicalRecordService;
+import com.syjiaer.clinic.server.service.social.SocialDiagnoseService;
import com.syjiaer.clinic.server.service.social.SocialDirectoryService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,11 +15,14 @@ import java.util.Map;
class ServerApplicationTests {
@Autowired
- private SocialDirectoryService socialDirectoryService;
+ private MedicalRecordService medicalRecordService;
+ @Autowired
+ private SocialDiagnoseService socialDiagnoseService;
@Test
void contextLoads() {
- Map download = socialDirectoryService.download("0", 1315);
- System.out.println(download);
+ socialDiagnoseService.download(1307,"0");
+
+
}
}