693 lines
19 KiB
Markdown
693 lines
19 KiB
Markdown
|
|
# 量表导入JSON标准格式说明
|
|||
|
|
|
|||
|
|
## 📋 概述
|
|||
|
|
|
|||
|
|
本文档详细说明如何使用JSON格式导入量表数据到系统中。JSON格式适用于批量导入完整的量表数据,包括量表基本信息、题目、选项、因子、计分规则等。
|
|||
|
|
|
|||
|
|
## 🎯 导入方式
|
|||
|
|
|
|||
|
|
系统支持三种导入方式:
|
|||
|
|
|
|||
|
|
1. **JSON文本导入**:在导入界面直接粘贴JSON文本
|
|||
|
|
2. **JSON文件导入**:上传.json格式的文件
|
|||
|
|
3. **PDF/DOCX文档导入**:系统自动解析文档并转换为JSON格式(自动识别)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 JSON数据结构
|
|||
|
|
|
|||
|
|
### 完整JSON结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"scale": {
|
|||
|
|
// 量表基本信息
|
|||
|
|
},
|
|||
|
|
"items": [
|
|||
|
|
// 题目列表(包含选项)
|
|||
|
|
],
|
|||
|
|
"factors": [
|
|||
|
|
// 因子列表(包含计分规则)
|
|||
|
|
],
|
|||
|
|
"interpretations": [
|
|||
|
|
// 结果解释配置(可选)
|
|||
|
|
],
|
|||
|
|
"warningRules": [
|
|||
|
|
// 预警规则配置(可选)
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 详细字段说明
|
|||
|
|
|
|||
|
|
### 1. 量表基本信息 (scale)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"scaleCode": "SCL_90", // 量表编码(必填,唯一)
|
|||
|
|
"scaleName": "症状自评量表SCL-90", // 量表名称(必填)
|
|||
|
|
"scaleEnName": "Symptom Checklist 90", // 量表英文名称(可选)
|
|||
|
|
"scaleType": "symptom", // 量表类型(可选)
|
|||
|
|
"scaleVersion": "1.0", // 量表版本(可选)
|
|||
|
|
"scaleIntro": "SCL-90量表简介", // 量表简介(可选)
|
|||
|
|
"scaleDescription": "SCL-90详细描述", // 量表描述(可选)
|
|||
|
|
"itemCount": 90, // 题目数量(可选,系统自动计算)
|
|||
|
|
"estimatedTime": 30, // 预计完成时间(分钟)(可选)
|
|||
|
|
"targetPopulation": "一般人群", // 适用人群(可选)
|
|||
|
|
"author": "Derogatis", // 作者(可选)
|
|||
|
|
"source": "心理卫生评定量表手册", // 来源(可选)
|
|||
|
|
"reference": "参考文献", // 参考文献(可选)
|
|||
|
|
"status": "0", // 状态:0-正常,1-停用(必填,默认"0")
|
|||
|
|
"sortOrder": 0 // 排序顺序(可选,默认0)
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `scaleCode`:必须唯一,建议使用英文大写字母和下划线,如 `SCL_90`、`EPQ_001`
|
|||
|
|
- `scaleName`:量表的完整中文名称
|
|||
|
|
- `scaleType`:量表类型,如 `symptom`(症状)、`personality`(人格)、`emotion`(情绪)等
|
|||
|
|
- `status`:`"0"` 表示正常(启用),`"1"` 表示停用
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 题目列表 (items)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"item": {
|
|||
|
|
"itemNumber": 1, // 题目序号(必填)
|
|||
|
|
"itemContent": "头痛", // 题目内容(必填)
|
|||
|
|
"itemType": "single", // 题目类型:single-单选,multiple-多选(必填)
|
|||
|
|
"required": "1", // 是否必答:0-否,1-是(必填,默认"1")
|
|||
|
|
"reverseScore": "0", // 是否反向计分:0-否,1-是(必填,默认"0")
|
|||
|
|
"sortOrder": 1 // 排序顺序(可选)
|
|||
|
|
},
|
|||
|
|
"options": [
|
|||
|
|
// 选项列表
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `itemNumber`:题目序号,从1开始,建议连续
|
|||
|
|
- `itemContent`:题目的完整文字内容
|
|||
|
|
- `itemType`:`"single"` 表示单选题,`"multiple"` 表示多选题
|
|||
|
|
- `required`:`"1"` 表示必答,`"0"` 表示可选
|
|||
|
|
- `reverseScore`:`"1"` 表示反向计分(得分越高表示程度越低),`"0"` 表示正常计分
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 选项列表 (options)
|
|||
|
|
|
|||
|
|
每个题目包含一个选项数组:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"optionCode": "A", // 选项编码(必填)
|
|||
|
|
"optionContent": "没有", // 选项内容(必填)
|
|||
|
|
"optionScore": 0, // 选项分数(必填)
|
|||
|
|
"sortOrder": 1 // 排序顺序(可选)
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "B",
|
|||
|
|
"optionContent": "很轻",
|
|||
|
|
"optionScore": 1,
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "C",
|
|||
|
|
"optionContent": "中等",
|
|||
|
|
"optionScore": 2,
|
|||
|
|
"sortOrder": 3
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "D",
|
|||
|
|
"optionContent": "偏重",
|
|||
|
|
"optionScore": 3,
|
|||
|
|
"sortOrder": 4
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "E",
|
|||
|
|
"optionContent": "严重",
|
|||
|
|
"optionScore": 4,
|
|||
|
|
"sortOrder": 5
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `optionCode`:选项编码,通常使用 A、B、C、D、E 或 1、2、3、4、5
|
|||
|
|
- `optionContent`:选项的文字描述
|
|||
|
|
- `optionScore`:该选项对应的分数(数字类型)
|
|||
|
|
- `sortOrder`:选项的显示顺序,数字越小越靠前
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4. 因子列表 (factors)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"factors": [
|
|||
|
|
{
|
|||
|
|
"factor": {
|
|||
|
|
"factorCode": "F1", // 因子编码(必填)
|
|||
|
|
"factorName": "躯体化", // 因子名称(必填)
|
|||
|
|
"factorEnName": "Somatization", // 因子英文名称(可选)
|
|||
|
|
"factorDescription": "躯体化因子描述", // 因子描述(可选)
|
|||
|
|
"factorOrder": 1 // 因子排序(可选)
|
|||
|
|
},
|
|||
|
|
"rules": [
|
|||
|
|
// 计分规则列表
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `factorCode`:因子编码,建议使用 F1、F2、F3 等格式
|
|||
|
|
- `factorName`:因子的中文名称
|
|||
|
|
- `factorOrder`:因子的排序顺序
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5. 计分规则 (rules)
|
|||
|
|
|
|||
|
|
每个因子包含一个计分规则数组:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"rules": [
|
|||
|
|
{
|
|||
|
|
"itemNumber": 1, // 题目序号(必填,用于映射)
|
|||
|
|
"rule": {
|
|||
|
|
"optionIds": "1,2,3,4,5", // 选项ID列表,逗号分隔(可选,留空表示所有选项)
|
|||
|
|
"weight": 1.0, // 权重(必填,默认1.0)
|
|||
|
|
"calculationType": "sum" // 计算方式:sum-求和,avg-平均,max-最大,min-最小(必填)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"itemNumber": 4,
|
|||
|
|
"rule": {
|
|||
|
|
"optionIds": "",
|
|||
|
|
"weight": 1.0,
|
|||
|
|
"calculationType": "sum"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `itemNumber`:题目序号,用于将规则映射到对应的题目
|
|||
|
|
- `optionIds`:选项ID列表,逗号分隔。如果为空字符串,表示使用该题目的所有选项
|
|||
|
|
- `weight`:权重,用于加权计算(默认1.0)
|
|||
|
|
- `calculationType`:
|
|||
|
|
- `"sum"`:求和(所有选中选项的分数之和 × 权重)
|
|||
|
|
- `"avg"`:平均(所有选中选项的分数平均值 × 权重)
|
|||
|
|
- `"max"`:最大(所有选中选项的分数最大值 × 权重)
|
|||
|
|
- `"min"`:最小(所有选中选项的分数最小值 × 权重)
|
|||
|
|
|
|||
|
|
**注意**:`itemNumber` 必须与 `items` 数组中的题目序号对应。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 6. 结果解释 (interpretations) - 可选
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"interpretations": [
|
|||
|
|
{
|
|||
|
|
"scaleId": null, // 量表ID(导入时自动设置,无需填写)
|
|||
|
|
"factorId": null, // 因子ID(导入时自动设置,可选)
|
|||
|
|
"scoreMin": 0, // 分数下限(必填)
|
|||
|
|
"scoreMax": 10, // 分数上限(必填)
|
|||
|
|
"level": "低", // 等级(可选)
|
|||
|
|
"levelName": "正常范围", // 等级名称(可选)
|
|||
|
|
"interpretationTitle": "正常范围", // 解释标题(必填)
|
|||
|
|
"interpretationContent": "您的得分在正常范围内", // 解释内容(可选)
|
|||
|
|
"suggestions": "继续保持良好的心理状态", // 建议指导(可选)
|
|||
|
|
"sortOrder": 1 // 排序顺序(可选)
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**字段说明**:
|
|||
|
|
- `scoreMin` 和 `scoreMax`:定义分数范围,系统会根据实际得分匹配对应的解释
|
|||
|
|
- `factorId`:如果留空(null),表示针对量表总体;如果填写,表示针对特定因子
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 7. 预警规则 (warningRules) - 可选
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"warningRules": [
|
|||
|
|
{
|
|||
|
|
"scaleId": null, // 量表ID(导入时自动设置,无需填写)
|
|||
|
|
"factorId": null, // 因子ID(导入时自动设置,可选)
|
|||
|
|
"ruleName": "重度抑郁预警", // 规则名称(必填)
|
|||
|
|
"warningLevel": "高", // 预警等级:低、中、高、紧急(必填)
|
|||
|
|
"scoreMin": 30, // 分数下限(可选)
|
|||
|
|
"scoreMax": 40, // 分数上限(可选)
|
|||
|
|
"percentileMin": 90, // 百分位下限(可选)
|
|||
|
|
"percentileMax": 100, // 百分位上限(可选)
|
|||
|
|
"autoResolve": "0", // 是否自动解除:0-否,1-是(可选)
|
|||
|
|
"resolveCondition": "", // 解除条件(可选)
|
|||
|
|
"status": "0" // 状态:0-正常,1-停用(必填)
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📄 完整JSON示例
|
|||
|
|
|
|||
|
|
### 示例1:简单的5题量表(无因子)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"scale": {
|
|||
|
|
"scaleCode": "TEST_001",
|
|||
|
|
"scaleName": "测试量表",
|
|||
|
|
"scaleType": "general",
|
|||
|
|
"status": "0",
|
|||
|
|
"itemCount": 5
|
|||
|
|
},
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"item": {
|
|||
|
|
"itemNumber": 1,
|
|||
|
|
"itemContent": "您是否经常感到焦虑?",
|
|||
|
|
"itemType": "single",
|
|||
|
|
"required": "1",
|
|||
|
|
"reverseScore": "0",
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"optionCode": "A",
|
|||
|
|
"optionContent": "从不",
|
|||
|
|
"optionScore": 0,
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "B",
|
|||
|
|
"optionContent": "偶尔",
|
|||
|
|
"optionScore": 1,
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "C",
|
|||
|
|
"optionContent": "经常",
|
|||
|
|
"optionScore": 2,
|
|||
|
|
"sortOrder": 3
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "D",
|
|||
|
|
"optionContent": "总是",
|
|||
|
|
"optionScore": 3,
|
|||
|
|
"sortOrder": 4
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"item": {
|
|||
|
|
"itemNumber": 2,
|
|||
|
|
"itemContent": "您是否容易紧张?",
|
|||
|
|
"itemType": "single",
|
|||
|
|
"required": "1",
|
|||
|
|
"reverseScore": "0",
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"optionCode": "A",
|
|||
|
|
"optionContent": "从不",
|
|||
|
|
"optionScore": 0,
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "B",
|
|||
|
|
"optionContent": "偶尔",
|
|||
|
|
"optionScore": 1,
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "C",
|
|||
|
|
"optionContent": "经常",
|
|||
|
|
"optionScore": 2,
|
|||
|
|
"sortOrder": 3
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "D",
|
|||
|
|
"optionContent": "总是",
|
|||
|
|
"optionScore": 3,
|
|||
|
|
"sortOrder": 4
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"factors": [],
|
|||
|
|
"interpretations": [
|
|||
|
|
{
|
|||
|
|
"scoreMin": 0,
|
|||
|
|
"scoreMax": 5,
|
|||
|
|
"level": "低",
|
|||
|
|
"levelName": "正常",
|
|||
|
|
"interpretationTitle": "正常范围",
|
|||
|
|
"interpretationContent": "您的焦虑水平在正常范围内"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"scoreMin": 6,
|
|||
|
|
"scoreMax": 10,
|
|||
|
|
"level": "中",
|
|||
|
|
"levelName": "轻度",
|
|||
|
|
"interpretationTitle": "轻度焦虑",
|
|||
|
|
"interpretationContent": "您可能存在轻度焦虑,建议适当放松"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"scoreMin": 11,
|
|||
|
|
"scoreMax": 15,
|
|||
|
|
"level": "高",
|
|||
|
|
"levelName": "中度",
|
|||
|
|
"interpretationTitle": "中度焦虑",
|
|||
|
|
"interpretationContent": "您可能存在中度焦虑,建议寻求专业帮助"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"warningRules": []
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 示例2:SCL-90量表(含因子和计分规则)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"scale": {
|
|||
|
|
"scaleCode": "SCL_90",
|
|||
|
|
"scaleName": "症状自评量表SCL-90",
|
|||
|
|
"scaleEnName": "Symptom Checklist 90",
|
|||
|
|
"scaleType": "symptom",
|
|||
|
|
"scaleVersion": "1.0",
|
|||
|
|
"scaleIntro": "SCL-90是一个包含90个项目的症状自评量表",
|
|||
|
|
"scaleDescription": "详细描述...",
|
|||
|
|
"itemCount": 90,
|
|||
|
|
"estimatedTime": 30,
|
|||
|
|
"targetPopulation": "一般人群",
|
|||
|
|
"author": "Derogatis",
|
|||
|
|
"source": "心理卫生评定量表手册",
|
|||
|
|
"status": "0"
|
|||
|
|
},
|
|||
|
|
"items": [
|
|||
|
|
{
|
|||
|
|
"item": {
|
|||
|
|
"itemNumber": 1,
|
|||
|
|
"itemContent": "头痛",
|
|||
|
|
"itemType": "single",
|
|||
|
|
"required": "1",
|
|||
|
|
"reverseScore": "0",
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"optionCode": "A",
|
|||
|
|
"optionContent": "没有",
|
|||
|
|
"optionScore": 0,
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "B",
|
|||
|
|
"optionContent": "很轻",
|
|||
|
|
"optionScore": 1,
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "C",
|
|||
|
|
"optionContent": "中等",
|
|||
|
|
"optionScore": 2,
|
|||
|
|
"sortOrder": 3
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "D",
|
|||
|
|
"optionContent": "偏重",
|
|||
|
|
"optionScore": 3,
|
|||
|
|
"sortOrder": 4
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "E",
|
|||
|
|
"optionContent": "严重",
|
|||
|
|
"optionScore": 4,
|
|||
|
|
"sortOrder": 5
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"item": {
|
|||
|
|
"itemNumber": 2,
|
|||
|
|
"itemContent": "神经过敏,心中不踏实",
|
|||
|
|
"itemType": "single",
|
|||
|
|
"required": "1",
|
|||
|
|
"reverseScore": "0",
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"optionCode": "A",
|
|||
|
|
"optionContent": "没有",
|
|||
|
|
"optionScore": 0,
|
|||
|
|
"sortOrder": 1
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "B",
|
|||
|
|
"optionContent": "很轻",
|
|||
|
|
"optionScore": 1,
|
|||
|
|
"sortOrder": 2
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "C",
|
|||
|
|
"optionContent": "中等",
|
|||
|
|
"optionScore": 2,
|
|||
|
|
"sortOrder": 3
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "D",
|
|||
|
|
"optionContent": "偏重",
|
|||
|
|
"optionScore": 3,
|
|||
|
|
"sortOrder": 4
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"optionCode": "E",
|
|||
|
|
"optionContent": "严重",
|
|||
|
|
"optionScore": 4,
|
|||
|
|
"sortOrder": 5
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"factors": [
|
|||
|
|
{
|
|||
|
|
"factor": {
|
|||
|
|
"factorCode": "F1",
|
|||
|
|
"factorName": "躯体化",
|
|||
|
|
"factorDescription": "躯体化因子",
|
|||
|
|
"factorOrder": 1
|
|||
|
|
},
|
|||
|
|
"rules": [
|
|||
|
|
{
|
|||
|
|
"itemNumber": 1,
|
|||
|
|
"rule": {
|
|||
|
|
"optionIds": "",
|
|||
|
|
"weight": 1.0,
|
|||
|
|
"calculationType": "sum"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"itemNumber": 4,
|
|||
|
|
"rule": {
|
|||
|
|
"optionIds": "",
|
|||
|
|
"weight": 1.0,
|
|||
|
|
"calculationType": "sum"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"factor": {
|
|||
|
|
"factorCode": "F5",
|
|||
|
|
"factorName": "焦虑",
|
|||
|
|
"factorDescription": "焦虑因子",
|
|||
|
|
"factorOrder": 5
|
|||
|
|
},
|
|||
|
|
"rules": [
|
|||
|
|
{
|
|||
|
|
"itemNumber": 2,
|
|||
|
|
"rule": {
|
|||
|
|
"optionIds": "",
|
|||
|
|
"weight": 1.0,
|
|||
|
|
"calculationType": "sum"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"interpretations": [
|
|||
|
|
{
|
|||
|
|
"factorId": null,
|
|||
|
|
"scoreMin": 0,
|
|||
|
|
"scoreMax": 160,
|
|||
|
|
"level": "低",
|
|||
|
|
"levelName": "正常",
|
|||
|
|
"interpretationTitle": "正常范围",
|
|||
|
|
"interpretationContent": "您的总体得分在正常范围内"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"factorId": null,
|
|||
|
|
"scoreMin": 161,
|
|||
|
|
"scoreMax": 250,
|
|||
|
|
"level": "中",
|
|||
|
|
"levelName": "轻度",
|
|||
|
|
"interpretationTitle": "轻度症状",
|
|||
|
|
"interpretationContent": "您可能存在轻度心理症状"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"warningRules": [
|
|||
|
|
{
|
|||
|
|
"factorId": null,
|
|||
|
|
"ruleName": "重度症状预警",
|
|||
|
|
"warningLevel": "高",
|
|||
|
|
"scoreMin": 250,
|
|||
|
|
"scoreMax": 360,
|
|||
|
|
"status": "0"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 使用步骤
|
|||
|
|
|
|||
|
|
### 方式1:JSON文本导入
|
|||
|
|
|
|||
|
|
1. 进入 `心理测评管理` → `量表管理`
|
|||
|
|
2. 点击 **"导入"** 按钮
|
|||
|
|
3. 在弹出对话框中,切换到 **"JSON文本"** 标签页
|
|||
|
|
4. 将JSON文本粘贴到文本框中
|
|||
|
|
5. 点击 **"确定"** 按钮导入
|
|||
|
|
|
|||
|
|
### 方式2:JSON文件导入
|
|||
|
|
|
|||
|
|
1. 将JSON数据保存为 `.json` 文件
|
|||
|
|
2. 进入 `心理测评管理` → `量表管理`
|
|||
|
|
3. 点击 **"导入"** 按钮
|
|||
|
|
4. 在弹出对话框中,切换到 **"文件上传"** 标签页
|
|||
|
|
5. 选择JSON文件并上传
|
|||
|
|
6. 点击 **"确定"** 按钮导入
|
|||
|
|
|
|||
|
|
### 方式3:PDF/DOCX文档导入(自动解析)
|
|||
|
|
|
|||
|
|
1. 准备PDF或DOCX格式的量表文档
|
|||
|
|
2. 进入 `心理测评管理` → `量表管理`
|
|||
|
|
3. 点击 **"导入"** 按钮
|
|||
|
|
4. 在弹出对话框中,切换到 **"文件上传"** 标签页
|
|||
|
|
5. 选择PDF/DOCX文件并上传
|
|||
|
|
6. 点击 **"预览解析结果"** 查看系统自动识别的结果
|
|||
|
|
7. 根据需要调整JSON数据
|
|||
|
|
8. 点击 **"确定"** 按钮导入
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 注意事项
|
|||
|
|
|
|||
|
|
### 1. 数据完整性
|
|||
|
|
- `scale` 对象必须包含 `scaleCode` 和 `scaleName`
|
|||
|
|
- 每个题目必须至少包含1个选项
|
|||
|
|
- 如果配置了因子,必须为每个因子配置至少1条计分规则
|
|||
|
|
|
|||
|
|
### 2. 数据唯一性
|
|||
|
|
- `scaleCode` 必须在系统中唯一
|
|||
|
|
- 同一量表内的 `factorCode` 必须唯一
|
|||
|
|
- 同一题目内的 `optionCode` 必须唯一
|
|||
|
|
|
|||
|
|
### 3. 数据映射
|
|||
|
|
- 计分规则中的 `itemNumber` 必须与 `items` 数组中的题目序号对应
|
|||
|
|
- 如果配置了 `interpretations` 或 `warningRules`,其中的 `factorId` 会在导入时自动映射
|
|||
|
|
|
|||
|
|
### 4. 字段类型
|
|||
|
|
- 数字字段(`itemNumber`、`optionScore`、`weight`等)使用数字类型,不要加引号
|
|||
|
|
- 字符串字段(`scaleCode`、`scaleName`等)使用双引号
|
|||
|
|
- 布尔值字段(`status`、`required`等)使用字符串 `"0"` 或 `"1"`
|
|||
|
|
|
|||
|
|
### 5. 可选字段
|
|||
|
|
- `interpretations` 和 `warningRules` 是可选的,可以省略或设置为空数组 `[]`
|
|||
|
|
- 如果量表没有因子,`factors` 可以设置为空数组 `[]`
|
|||
|
|
- 大部分字段都有默认值,可以省略
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 常见错误
|
|||
|
|
|
|||
|
|
### 错误1:JSON格式错误
|
|||
|
|
**错误信息**:`JSON格式错误:...`
|
|||
|
|
**解决方法**:
|
|||
|
|
- 检查JSON语法,确保所有括号、引号匹配
|
|||
|
|
- 使用JSON验证工具(如 jsonlint.com)验证JSON格式
|
|||
|
|
- 确保没有多余的逗号
|
|||
|
|
|
|||
|
|
### 错误2:量表编码已存在
|
|||
|
|
**错误信息**:`量表编码已存在:XXX`
|
|||
|
|
**解决方法**:
|
|||
|
|
- 修改 `scaleCode` 为唯一值
|
|||
|
|
- 或先删除系统中已存在的量表
|
|||
|
|
|
|||
|
|
### 错误3:题目序号映射失败
|
|||
|
|
**错误信息**:`找不到题目序号 X 对应的题目ID`
|
|||
|
|
**解决方法**:
|
|||
|
|
- 检查 `factors[].rules[].itemNumber` 是否与 `items[].item.itemNumber` 对应
|
|||
|
|
- 确保题目序号从1开始,连续编号
|
|||
|
|
|
|||
|
|
### 错误4:必填字段缺失
|
|||
|
|
**错误信息**:`XXX不能为空`
|
|||
|
|
**解决方法**:
|
|||
|
|
- 检查必填字段是否都已填写
|
|||
|
|
- 参考本文档的字段说明,补充缺失的字段
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 相关文档
|
|||
|
|
|
|||
|
|
- [新量表导入完整操作指南](./15-新量表导入完整操作指南.md) - 手动操作步骤
|
|||
|
|
- [ScaleImportVO.java](../../ry-news-system/src/main/java/com/ddnai/system/domain/psychology/vo/ScaleImportVO.java) - 数据结构定义
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ✅ 验证清单
|
|||
|
|
|
|||
|
|
导入前请检查:
|
|||
|
|
|
|||
|
|
- [ ] JSON格式正确(可以使用JSON验证工具验证)
|
|||
|
|
- [ ] `scaleCode` 唯一且符合命名规范
|
|||
|
|
- [ ] `scaleName` 已填写
|
|||
|
|
- [ ] 所有题目都有 `itemNumber` 和 `itemContent`
|
|||
|
|
- [ ] 所有题目都至少包含1个选项
|
|||
|
|
- [ ] 所有选项都有 `optionCode`、`optionContent` 和 `optionScore`
|
|||
|
|
- [ ] 如果有因子,所有因子都有 `factorCode` 和 `factorName`
|
|||
|
|
- [ ] 如果有因子,所有计分规则的 `itemNumber` 都能在题目列表中找到
|
|||
|
|
- [ ] `status` 字段设置为 `"0"`(正常)或 `"1"`(停用)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**最后更新**:2025-01-XX
|
|||
|
|
|