This commit is contained in:
wuchunlei
2025-07-25 14:18:07 +08:00
parent 707a01f96d
commit 8ad2fc2475
3 changed files with 92 additions and 25 deletions

View File

@@ -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<TaihuTalent>()
.eq(TaihuTalent::getUserId,ShiroUtils.getUId())));
}
//获取医案标签列表
@RequestMapping("/getMedicalRecordsLabelList")
@@ -64,8 +75,13 @@ public class MedicalRecordsController {
@RequestMapping(value = "/medicalRecordsSplit")
public R medicalRecordsSplit(@RequestBody Map<String,Object> 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());

View File

@@ -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;