|
|
@@ -329,9 +329,9 @@ public class MedicalRecordQc123Service {
|
|
|
sb.append("如果存在不符合规则:逐条输出 JSON 对象,数组形式,每个对象包含以下字段:\n");
|
|
|
sb.append("- result: 固定为 \"fail\"\n");
|
|
|
sb.append("- detail: 违规位置及内容(如“首次病程记录-主诉”)\n");
|
|
|
- sb.append("- 从病历原文中提取 违规内容所在的一句话或一小段(约10–20字),保持完整语义,便于定位。\n");
|
|
|
+ sb.append("- 从病历原文中提取 违规内容所在的一小段(约10字左右),保持完整病历内容,便于定位。\n");
|
|
|
sb.append("- ruleCode: 对应规则编号(如 \"BCJL001\")\n");
|
|
|
- sb.append("- ruleContent: 对应规则详情,必须与质控规则完全一致,不要显示()里面的内容\n");
|
|
|
+ sb.append("- ruleContent: 对应规则详情,必须与质控规则完全一致,不要显示()里面的内容,如XXX(YYYYYYYYYY) 只显示XXX\n");
|
|
|
sb.append("- qcResult: 结论,给出违反规则的原因,简要描述。\n\n");
|
|
|
|
|
|
sb.append("示例:\n");
|
|
|
@@ -342,14 +342,11 @@ public class MedicalRecordQc123Service {
|
|
|
|
|
|
sb.append("2.违规情况:\n");
|
|
|
sb.append("每条违规单独输出一个 JSON 对象 \n");
|
|
|
- sb.append("必须严格匹配质控规则,不得编造额外规则 \n");
|
|
|
sb.append("字段必须取自病历原文,且保持完整语义(不必限制为固定字数) \n");
|
|
|
sb.append("3.禁止事项:\n");
|
|
|
sb.append("禁止输出 Markdown 代码块符号(如 ```json)\n");
|
|
|
sb.append("禁止生成与质控规则不一致的规则编号\n");
|
|
|
|
|
|
-
|
|
|
-
|
|
|
return sb.toString();
|
|
|
}
|
|
|
|
|
|
@@ -361,7 +358,7 @@ public class MedicalRecordQc123Service {
|
|
|
|
|
|
|
|
|
List<Map<String, String>> messages = new ArrayList<>();
|
|
|
- messages.add(Map.of("role", "system", "content", "严格按照【质控规则】逐条判断,仅检查病历中是否记录相关内容。有则通过,无则违规。禁止推断适应症、合理性或处理依据,不得增加规则中未写明的要求。输出必须与【规则内容】完全对应,不得扩展或改写。"));
|
|
|
+ messages.add(Map.of("role", "system", "content", "你扮演的角色是一名病历质控员,严格按照【规则详情】逐条判断,禁止推断适应症、合理性或处理依据,不得增加规则中未写明的要求;只要有提及的内容,就通过,不准其他原因给不通过。"));
|
|
|
messages.add(Map.of("role", "user", "content", prompt));
|
|
|
|
|
|
String jsonBody = JSON.toJSONString(
|