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;

View File

@@ -39,16 +39,25 @@ public class MedicalRecordsController {
@RequestMapping("/getMedicalRecordsListCheck")
public R getMedicalRecordsListCheck(@RequestBody Map<String,Object> params){
MPJLambdaWrapper<MedicalRecords> 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<MedicalRecords> 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<MedicalRecordsToLabel>()
.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<MedicalRecordsToLabel>()
.eq(MedicalRecordsToLabel::getRecordId,medicalRecords.getId()));
if (toLabel!=null){
toLabel.setLabelId(medicalRecords.getLabelId());
toLabelService.updateById(toLabel);
}
medicalRecordsService.updateById(medicalRecords);
return R.ok();
}