diff --git a/src/main/java/com/peanut/modules/common/controller/MedicalRecordsController.java b/src/main/java/com/peanut/modules/common/controller/MedicalRecordsController.java index 8249e559..79954fde 100644 --- a/src/main/java/com/peanut/modules/common/controller/MedicalRecordsController.java +++ b/src/main/java/com/peanut/modules/common/controller/MedicalRecordsController.java @@ -7,9 +7,11 @@ import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.entity.MedicalRecords; import com.peanut.modules.common.entity.MedicalRecordsLabel; import com.peanut.modules.common.entity.MedicalRecordsToLabel; +import com.peanut.modules.common.entity.TaihuTalent; import com.peanut.modules.common.service.MedicalRecordsLabelService; import com.peanut.modules.common.service.MedicalRecordsService; import com.peanut.modules.common.service.MedicalRecordsToLabelService; +import com.peanut.modules.common.service.TaihuTalentService; import com.vladsch.flexmark.html.HtmlRenderer; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.util.data.MutableDataSet; @@ -38,6 +40,15 @@ public class MedicalRecordsController { private MedicalRecordsLabelService medicalRecordsLabelService; @Autowired private MedicalRecordsToLabelService medicalRecordsToLabelService; + @Autowired + private TaihuTalentService taihuTalentService; + + //当前用户是否拥有医案模块 + @RequestMapping("/getMedicalRecordsRoleByUser") + public R getMedicalRecordsRoleByUser(){ + return R.ok().put("roleFlag", taihuTalentService.count(new LambdaQueryWrapper() + .eq(TaihuTalent::getUserId,ShiroUtils.getUId()))); + } //获取医案标签列表 @RequestMapping("/getMedicalRecordsLabelList") @@ -64,8 +75,13 @@ public class MedicalRecordsController { @RequestMapping(value = "/medicalRecordsSplit") public R medicalRecordsSplit(@RequestBody Map parmas) { MedicalRecords mr = new MedicalRecords(); - mr.setUserId(ShiroUtils.getUId()); + if (parmas.containsKey("userId")&& StringUtils.isNotEmpty(parmas.get("userId").toString())) { + mr.setUserId(Integer.parseInt(parmas.get("userId").toString())); + }else { + mr.setUserId(ShiroUtils.getUId()); + } String uuid = UUID.randomUUID().toString(); + mr.setOriginalData(parmas.get("message").toString()); medicalRecordsService.save(mr); StringBuffer sb = new StringBuffer(); Date date = new Date(); @@ -73,29 +89,60 @@ public class MedicalRecordsController { Parser parser = Parser.builder(options).build(); HtmlRenderer renderer = HtmlRenderer.builder(options).build(); chatClient.prompt() - .user("你是一名编辑,给你一份资料,必须按照1.一般信息,2.主诉,3.现病史,4.既往史,5.家族史,6.体格检查,7.诊断,8.治疗和后续治疗;" + - "这8方面进行拆分,如果没有内容只显示标题,内容为无。内容开头必须为一般信息,不要增删内容,个人信息必须脱敏处理,结果必须是markdown格式;内容如下:"+ - parmas.get("message").toString()) + .user(""" + 不要增删内容得情况下拆分一下内容,个人信息要进行脱敏处理,如果有标题放到一般信息中,开头必须是1.一般信息,1.一般信息这种要h1样式, + 结果必须是markdown格式,按照以下模板: + 1.一般信息 + ... + end + 2.主诉 + ... + end + 3.现病史 + ... + end + 4.既往史 + ... + end + 5.家族史 + ... + end + 6.体格检查 + ... + end + 7.诊断 + ... + end + 8.治疗和后续诊断 + ... + end + 9.其他 + ... + """+ + "内容如下:"+parmas.get("message").toString()) .stream() .content() - .doOnNext(data -> { - sb.append(data); - }) + .doOnNext(sb::append) .doFinally(data -> { - System.out.println(sb); - String res = sb.toString().replace("```markdown\n","").replace("```",""); - String[] datas = res.split("\n\n"); - mr.setInformation(renderer.render(parser.parse(datas[0]))); - mr.setChiefComplaint(renderer.render(parser.parse(datas[1]))); - mr.setHistoryOfPresentIllness(renderer.render(parser.parse(datas[2]))); - mr.setPastHistory(renderer.render(parser.parse(datas[3]))); - mr.setPersonalAndFamilyHistory(renderer.render(parser.parse(datas[4]))); - mr.setPhysicaExamination(renderer.render(parser.parse(datas[5]))); - mr.setDiagnosis(renderer.render(parser.parse(datas[6]))); - mr.setTreatmentPlan(renderer.render(parser.parse(datas[7]))); - mr.setData(uuid+"->"); - medicalRecordsService.saveOrUpdate(mr); - System.out.println(new Date().getTime()-date.getTime()); + try { + System.out.println(sb); + String res = sb.toString().replace("```markdown\n","").replace("```",""); + String[] datas = res.split("end"); + mr.setInformation(renderer.render(parser.parse(datas[0]))); + mr.setChiefComplaint(renderer.render(parser.parse(datas[1]))); + mr.setHistoryOfPresentIllness(renderer.render(parser.parse(datas[2]))); + mr.setPastHistory(renderer.render(parser.parse(datas[3]))); + mr.setPersonalAndFamilyHistory(renderer.render(parser.parse(datas[4]))); + mr.setPhysicaExamination(renderer.render(parser.parse(datas[5]))); + mr.setDiagnosis(renderer.render(parser.parse(datas[6]))); + mr.setTreatmentPlan(renderer.render(parser.parse(datas[7]))); + mr.setOther(renderer.render(parser.parse(datas[8]))); + mr.setData(uuid+"->"); + medicalRecordsService.saveOrUpdate(mr); + System.out.println(new Date().getTime()-date.getTime()); + } catch (Exception e) { + medicalRecordsService.removeById(mr.getId()); + } }) .doOnError(error -> { medicalRecordsService.removeById(mr.getId()); diff --git a/src/main/java/com/peanut/modules/common/entity/MedicalRecords.java b/src/main/java/com/peanut/modules/common/entity/MedicalRecords.java index 6c1e7d4f..d453db4d 100644 --- a/src/main/java/com/peanut/modules/common/entity/MedicalRecords.java +++ b/src/main/java/com/peanut/modules/common/entity/MedicalRecords.java @@ -41,10 +41,14 @@ public class MedicalRecords { private String diagnosis; //治疗方案 private String treatmentPlan=""; + //其他 + private String other=""; //图片 private String img=""; - //原始数据 + //总结数据 private String data=""; + //原始数据 + private String originalData=""; private Date createTime; diff --git a/src/main/java/com/peanut/modules/master/controller/MedicalRecordsController.java b/src/main/java/com/peanut/modules/master/controller/MedicalRecordsController.java index d682c230..81b437ce 100644 --- a/src/main/java/com/peanut/modules/master/controller/MedicalRecordsController.java +++ b/src/main/java/com/peanut/modules/master/controller/MedicalRecordsController.java @@ -39,16 +39,25 @@ public class MedicalRecordsController { @RequestMapping("/getMedicalRecordsListCheck") public R getMedicalRecordsListCheck(@RequestBody Map params){ MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); - wrapper.leftJoin(MedicalRecordsToLabel.class,MedicalRecordsToLabel::getRecordId,MedicalRecords::getId); - wrapper.leftJoin(MedicalRecordsLabel.class,MedicalRecordsLabel::getId,MedicalRecordsToLabel::getLabelId); + if ("3".equals(params.get("state"))){ + wrapper.leftJoin(MedicalRecordsToLabel.class,MedicalRecordsToLabel::getRecordId,MedicalRecords::getId); + wrapper.leftJoin(MedicalRecordsLabel.class,MedicalRecordsLabel::getId,MedicalRecordsToLabel::getLabelId); + wrapper.selectAs(MedicalRecordsLabel::getTitle,"labelTitle"); + } wrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,MedicalRecords::getUserId); wrapper.selectAll(MedicalRecords.class); - wrapper.selectAs(MedicalRecordsLabel::getTitle,"labelTitle"); wrapper.eq(MedicalRecords::getState,params.get("state")); Page page = medicalRecordsService.page(new Page<>( Long.parseLong(params.get("current").toString()),Long.parseLong(params.get("limit").toString())),wrapper); for (MedicalRecords mr:page.getRecords()){ mr.setUser(userService.getById(mr.getUserId())); + MedicalRecordsToLabel toLabel = toLabelService.getOne(new LambdaQueryWrapper() + .eq(MedicalRecordsToLabel::getRecordId,mr.getId())); + if (toLabel!=null){ + MedicalRecordsLabel label = medicalRecordsLabelService.getById(toLabel.getLabelId()); + mr.setLabelId(label.getId()); + mr.setLabelTitle(label.getTitle()); + } } return R.ok().put("page",page); } @@ -86,7 +95,14 @@ public class MedicalRecordsController { } @RequestMapping("/editMedicalRecords") + @Transactional public R editMedicalRecords(@RequestBody MedicalRecords medicalRecords){ + MedicalRecordsToLabel toLabel = toLabelService.getOne(new LambdaQueryWrapper() + .eq(MedicalRecordsToLabel::getRecordId,medicalRecords.getId())); + if (toLabel!=null){ + toLabel.setLabelId(medicalRecords.getLabelId()); + toLabelService.updateById(toLabel); + } medicalRecordsService.updateById(medicalRecords); return R.ok(); }