量表管理
量表列表: /questionnaires GET
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
page | 1 | number | 否 | 当前页数 |
pageSize | 10 | number | 否 | 每页条数 |
title | xxx | string | 否 | 标题 |
sourceId | 1 | number | 否 | 来源组织id, 0=云医后台 |
categoryId | 1 | number | 否 | 量表分类id |
type | 0 | number | 否 | 量表类型 |
isSingle | 1 | number | 否 | 是否单一量表 |
scoreType | 1 | number | 否 | 计分类型 |
status | 1 | numbe | 否 | 量表状态 |
sort | -createdAt | string | 否 | 排序。多个排序字段用,号隔开。sort=-a,b |
expand | 'source' | string | 否 | 获取指定子资源数据 'stats,source,creator,category,organizations,questionnaireSets,questionnaireSets.category,questionnaireSets.questionCount,questionnaireSets.questions,questionnaireSets.dimensions.comments,questionnaireSets.assessments' |
attributes | "id,name" | string | 否 | 本资源的字段。不定义该字段时返回所有字段;空数组不返回字段 |
返回参数
参数名 | 示列值 | 说明 |
---|---|---|
page | 1 | 当前页数 |
pageSize | 10 | 每页条数 |
limit | 10 | 同 pageSize |
offset | 2 | 起始条数 |
total | 3231 | 符合条件的总数量 |
items | [{ "id": 4, "name": "test2"] | 返回数据项 |
- items: 量表信息
参数名 | 示列值 | 类型 | 说明 |
---|---|---|---|
id | 1 | number | id |
sourceId | 1 | number | 来源组织id,0=云医后台 |
categoryId | 1 | number | 量表分类id |
title | "测试" | string | 标题 |
description | "xx" | string | 描述 |
guide | "xxx" | string | 指导语 |
endRemark | "xxx" | string | 结束语 |
type | 0 | number | 问卷类型,0=普通问卷, 1=测试问卷, 2=草稿问卷 |
isSingle | 1 | number | 是否单一问卷, 1=单一问卷, 0=合并问卷 |
scoreType | 0 | number | 计分类型,0=不计分,1=计分(单因子),2=维度(多因子) |
status | 0 | number | 量表状态, 0=编辑中, 1=收集中(已发布) |
coverUrl | "" | string | 封面url |
lastResultOnly | 0 | number | 是否仅展示最后一个结果, 0=否, 1=是 |
viewReport | 1 | number | 是否可以查看报告, 0=否, 1=是 |
showIntro | 0 | number | 是否显示封面, 0=否, 1=是 |
dataComparisonType | 0 | number | 数据对比类型,0=减分率类型,1=增分率类型 |
creatorId | 0 | number | 创建者id |
creatorType | "console" | string | 创建者类型, console=云医超管, organization=机构端 |
submitCount | 1 | number | 测评次数,expand传stats才返回 |
userCount | 1 | numbe | 测评人数, expand传stats才返回 |
stats | { submitCount: 1, userCount: 26 } | object | 统计数据, submitCount: 测评次数, userCount: 测评人数 |
source | {"id": 1, "name": "test" } | object | 来源组织信息 |
creator | {"id": 1, "name": "张三" } | object | 创建者信息 |
category | {"id": 1, "name": "分类1" } | object | 量表分类信息 |
organizations | [{"id": 1, "name": "组织1"}] | array | 入库组织列表 |
questionnaireSets | [{ "id": 1, "title": "" }] | array | 量表集列表 |
createdAt | 1650160322 | number | 创建时间 |
updatedAt | 1650160322 | number | 更新时间 |
- questionnaireSets: 量表集信息
单一量表才会创建量表集, 合并量表复用单一量表集
参数名 | 示列值 | 类型 | 说明 |
---|---|---|---|
id | 1 | number | id |
questionnaireId | 1 | number | 单一量表id |
code | 'PSQI' | string | 量表代号 |
serialNumber | 'N500' | string | 量表编号 |
title | "测试" | string | 标题 |
scoreType | 0 | number | 计分类型,0=不计分,1=计分(单因子),2=维度(多因子) |
categoryId | 1 | number | 量表分类id |
description | "xx" | string | 描述 |
guide | "xxx" | string | 指导语 |
referenceState | 1 | number | 引用状态,0=未引用,1=已引用 |
config | {} | object | 配置信息 |
category | {"id": 1, "name": "分类1" } | object | 子量表分类信息 |
questions | [{ "id": 1, "title": "" }] | array | 题目列表 |
questionCount | 1 | number | 题目数量 |
dimensions | [] | array | 维度列表 |
summaries | [] | array | 总结结论列表 |
assessments | [] | array | 维度条件列表 |
pivotControls | [] | array | 结果逻辑设置列表 |
createdAt | 1650160322 | number | 创建时间 |
updatedAt | 1650160322 | number | 更新时间 |
返回示列
HTTP/1.1 200 OK
{
"items": [
{
"id": 1, // 量表id
"title": "量表1",
"type": 0,
"status": 1,
"viewReport": 1,
"sourceId": 1,
"dataComparisonType": 0,
"source": {
"id": 1,
"name": "demo",
},
"creator": {
"id": 1,
"name": "张三"
},
"category": {
"id": 1,
"name": "分类1"
},
"organizations": [
{
"id": 1,
"name": "组织一"
}
],
"questionnaireSets": [
{
"id": 1,
"questionnaireId": 1, // 量表id,
"index": 1, // 序号
"code": "PSQI",
"serialNumber": "N500",
"title": "量表一",
"scoreType": 1, // 计分类型,0=不计分,1=计分(单因子),2=维度(多因子)
"referenceState": 1, // 引用状态,0=未引用,1=已引用
"description": "", // 描述
"categoryId": 1, // 分类id
"guide": "" , // 指导语
"category": {
"id": 1,
"name": "分类1"
},
"config": {
"minScore": 0, // 分值范围,最小值
"maxScore": 100, // 分值范围, 最大值
"autoNext": 1, // 是否自动下一题, 0=否, 1=是
"standardRange": { // 参考范围
"minScore": 40,
"maxScore": 60,
},
"tableCfg": { // 表格设置
"showTotal": 0, // 显示总分, 0=否, 1=是
"showDimension": 0, // 显示各维度分, 0=否, 1=是
},
"graphCfg": { // 图表设置
"totalGraphType": 1, // 总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"dimensionGraphCfg": [
{
"type": 6, // 各维度总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"wnos": ["W1", "W2"], // 显示维度数组
}
],
}
},
"questionCount": 1, // 题目数量
"questions": [
{
"defaultValue": null,
"id": 7788,
"index": 1,
"qno": "Q1",
"partition": "Q", // 分区
"title": "单选一",
"rftTitle": "",
"questionnaireSetId": 372,
"type": 1,
"isMustAnswer": 1, // 是否必答题,0=否,1=是
"optionStyleType": 1, // 选项样式,1=勾选,2=下拉
"isCalcScore": 1, // 是否计算得分, 0=不计算, 1=计算
"data": {
"options":[ // 选项
{
"value":"A",
"text":"选项一",
},
],
"scorer": { // 分值设置
"type": "map",
"mapping": [
{
"value": "A",
"score": "1"
},
{
"value": "B",
"score": "2"
}
]
},
}
},
{
"id": 7789,
"questionnaireSetId": 372,
"index": 2,
"qno": "Q2",
"type": 2,
"title": "多选1",
"rftTitle": "",
"defaultValue": null,
"isMustAnswer": 1, // 是否必答题,0=否,1=是
"optionStyleType": 1, // 选项样式,1=勾选,2=下拉
"isCalcScore": 1, // 是否计算得分, 0=不计算, 1=计算
"data": {
"options": [
{
"value": "A",
"text": "选项一",
},
{
"value": "B",
"text": "选项二",
},
{
"value": "C",
"text": "选项三",
}
],
"scorer": {
"type": "map_and_sum",
"mapping": [
{
"value": "A",
"score": "1"
},
{
"value": "B",
"score": "2"
},
{
"value": "C",
"score": "3"
}
]
}
},
},
{
"id": 7790,
"questionnaireSetId": 372,
"index": 3,
"qno": "Q3",
"type": 3,
"title": "填空题一",
"rftTitle": "",
"defaultValue": null,
"data": {
},
},
{
"id": 7791,
"questionnaireSetId": 372,
"index": 4,
"qno": "Q4",
"type": 4,
"title": "日期题一",
"rftTitle": "",
"defaultValue": "2000-01-01",
"data": {
},
},
{
"id": 7792,
"questionnaireSetId": 372,
"index": 5,
"qno": "Q5",
"type": 5,
"title": "时间题一",
"rftTitle": "",
"defaultValue": "00:00",
"data": {
},
},
{
"id": 7794,
"questionnaireSetId": 372,
"index": 7,
"qno": "Q7",
"type": 6,
"title": "数值题目一",
"rftTitle": "",
"defaultValue": "11",
"data": {
"decimals": 0,
"min": "0",
"max": "200",
"scorer": {
"type": "answer_value"
}
},
},
{
"id": 7795,
"questionnaireSetId": 372,
"index": 8,
"qno": "Q8",
"type": 7,
"title": "地区题一",
"rftTitle": "",
"defaultValue": null,
"data": {
},
}
],
"dimensions": [ // 结果设置
{
"id": 588,
"questionnaireSetId": 372,
"index": 1,
"wno": "W1",
"name": "",
"minScore": null,
"maxScore": null,
"factor": { // 计分因子
"type": "sum_score"
},
"comments": [ // 维度结果
{
"id": 676,
"dimensionId": 588,
"index": 1,
"matcher": {
"type": "range",
"min": "2",
"max": "10"
},
"result": "评估结果一",
"comment": "<p>XXXX</p>",
"alarmLevel": 1, // 预警等级,1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"createdAt": 1654676817,
"updatedAt": 1654676817
},
{
"id": 677,
"dimensionId": 588,
"index": 2,
"matcher": {
"type": "range",
"min": "11",
"max": "50"
},
"result": "评估结果二",
"comment": "<p>嘻嘻嘻</p>",
"alarmLevel": 1, // 预警等级,1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"createdAt": 1654676817,
"updatedAt": 1654676817
}
]
}
],
"pivotControls": [ // 结果关联逻辑
{
"condition": {
"type": "comment", // 条件类型, comment=维度结果, dimension=维度
"commentId": 1, // 维度结果id
},
"action": { // action 结果跳转, type类型: finish=跳转结束, jump=跳转题目, toQno: 跳转题目编号, toIndex: 调到量表对应index
"type": "jump",
"toId": 1, // 量表id
}
},
{
"condition": {
"type": "comment",
"commentId": 4
},
"action": {
"type": "jump",
"toIndex": 1,
}
}
]
}
],
"createdAt": 1647846587,
"updatedAt": 1647846587,
}],
"total": 4070,
"offset": 1,
"limit": 2,
"page": 1,
"pageSize": 2
}
检查维度表达式: /checkExpression/questionnaires POST
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
expression | "SUM(Q1,Q2,Q3)" | string | 是 | 维度表达式 |
questions | [] | array | 否 | 题目数组 |
请求示例:
{
"expression": "SUM(Q1,Q2,Q3)",
"questions": [
{
"type": 1, // 题型, 1=单选,2=多选,3=简答,4=日期,5=时钟,6=矩阵单选,7=数值,8=地区,9=时长
"index": 1, // 序号
"qno": "Q1", // 编号
"title": "维度计分-单选1", // 问题
"data": { // 问题数据
"options": [ // 选项
{
"value": "A", // 值
"text": "维度计分-单选-选项1", // 选项名
},
{
"value": "B",
"text": "维度计分-单选-选项2",
}
],
},
"scorer": { // 得分设置
"type": "map",
"mapping": [
{
"value": "A",
"score": "0"
},
{
"value": "B",
"score": "5"
}
]
},
"minScore": 0, // 最小值
"maxScore": 5, // 最大值
},
{
"type": 2,
"index": 2,
"qno": 2,
"title": "维度计分-多选1",
"data": {
"options": [
{
"value": "A",
"text": "维度计分-多选-选项1",
},
{
"value": "B",
"text": "维度计分-多选-选项2",
}
]
},
"scorer": {
"type": "map_and_sum",
"mapping": [
{
"value": "A",
"score": "0"
},
{
"value": "B",
"score": "5"
}
]
},
"minScore": 0,
"maxScore": 5
},
{
"type": 3,
"index": 3,
"qno": "Q3",
"title": "维度计分-简答1",
"data": {}
}
]
}
返回参数
参数名 | 示列值 | 说明 |
---|---|---|
ok | 1 | 是否有效 |
返回示列
HTTP/1.1 200 OK
{
"ok": 1, // 0=无效, 1=有效
// "minScore": 1, // 最小值
// "maxScore": 100, // 最大值
}
新建单一量表: /questionnaires POST
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
categoryId | 1 | number | 是 | 量表分类id |
code | 'PSQI' | string | 否 | 量表代号 |
serialNumber | 'N500' | string | 否 | 量表编号 |
title | "测试" | string | 是 | 标题 |
description | "xx" | string | 否 | 描述 |
guide | "xxx" | string | 否 | 指导语 |
endRemark | "xxx" | string | 是 | 结束语 |
isAllPutInQuestion | 0 | number | 是 | 题目是否入库 |
type | 0 | number | 是 | 问卷类型,0=普通问卷, 1=测试问卷, 2=草稿问卷 |
isSingle | 1 | number | 是 | 是否单一问卷, 1=单一问卷, 0=合并问卷 |
scoreType | 0 | number | 是 | 计分类型,0=不计分,1=计分(单因子),2=维度(多因子) |
coverUrl | "" | string | 否 | 封面url |
viewReport | 1 | number | 否 | 是否可以查看报告, 0=否, 1=是 |
dataComparisonType | 0 | number | 否 | 数据对比类型,0=减分率类型,1=增分率类型 |
config | {} | object | 否 | 配置信息 |
questions | [] | array | 是 | 问题集 |
dimensions | [] | array | 是 | 结果维度 |
controls | [] | array | 否 | 逻辑设置 |
assessments | [] | array | 否 | 维度条件 |
summaries | [] | array | 否 | 总结结论 |
请求示例:
{
"isSingle": 0, // 单一量表
"categoryId": 1, // 量表分类id
"code": "PSQI", // 量表代号
"serialNumber": "N500", // 量表编号
"title": "bbb", // 标题
"description": "", // 描述
"guide": "", // 指导语
"endRemark": "", // 结束语
"templateId": 4, // 模板, 量表id
"scoreType": 0, // 计分方式
"showIntro": 0, // 是否显示封面
"coverUrl": "", // 封面URL
"type": 0, // 问卷类型 0=普通问卷,1=测试问卷, 2-草稿问卷
"isAllPutInQuestion": 1, // 题目是否全部入库, 0=不加入, 1=全部加入
"viewReport": 1, // 是否可以查看报告, 0=否, 1=是
"dataComparisonType": 1,
"config": {
"minScore": 0, // 分值范围,最小值
"maxScore": 100, // 分值范围, 最大值
"autoNext": 1, // 是否自动下一题, 0=否, 1=是
"standardRange": { // 参考范围
"minScore": 40,
"maxScore": 60,
},
"tableCfg": {
"showTotal": 0, // 显示总分, 0=否, 1=是
"showDimension": 0, // 显示各维度分, 0=否, 1=是
},
"graphCfg": {
"totalGraphType": 1, // 总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"dimensionGraphCfg": [
{
"type": 6, // 各维度总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"wnos": ["W1", "W2"], // 显示维度数组
}
],
}
},
"questions": [ // 题目列表
{
"type": 1, // 题目类型, 1=单选,2=多选,3=简答,4=日期,5=时钟,6=矩阵单选,7=数值,8=地区,9=时长
"index": 1, // 序号
"id": 1,
"qno": "Q1", // 题目编号
"partition": "Q", // 分区
"isPutInQuestion": 1, // 是否加入题库, 0=不加入, 1=加入
"title": "可悲事的有哪些", // 题目标题
"rftTitle": "", // 题目标题富文本
"isMustAnswer": 1, // 是否必答题, 0=否,1=是
"optionStyleType": 1, // 选项样式, 1=勾选,2=下拉
"isCalcScore": 1, // 是否计算得分, 0=不计算, 1=计算
"data": { // 题目数据
"options": [ // 题目选项
{
"value": "A",
"text": "执意求死",
"score": 0, // scoreType为计分,传score
},
{
"value": "B",
"text": "无力求生",
"score": 3,
}
],
},
"config": { // 配置信息
"stepSize": 15, // 步长
"genderShow": 1, // 性别显示限制, 0=无, 1=男,2=女
"genderDiff": 0, // 性别区分, 0=不区分, 1=区分
"genders": [ // 根据性别设置
{
"gender": 1, // 性别, 1=男, 2=女
"title": "xxx", // 显示标题
},
{
"gender": 2,
"title": "xxx",
}
],
"minText": "", // 最小值描述, 只有数值题型有
"maxText": "", // 最大值描述, 只有数值题型有
},
"minScore": 0, // 最小分值
"maxScore": 0, // 最大分值
// 分值计算, 单选scorer
"scorer": {
"type": "map",
"mapping": [
{
"value": "A",
"score": 0
},
{
"value": "B",
"score": 3
}
]
},
// 分值计算, 矩阵单选scorer
"scorer": {
"type": "map_and_matrix",
"mapping": [
{
"value": "A",
"score": 0
},
{
"value": "B",
"score": 3
}
]
},
// 分值计算, 多选
"scorer": {
"type": "map_and_sum",
"mapping": [
{
"value": "A",
"score": 1
},
{
"value": "B",
"score": 2
}
]
},
// 分值计算, 数值, 按区间计分
"scorer": {
"type": "ranges",
"ranges": [
{
"min": 0,
"max": 10,
"score": 1
},
{
"min": 11,
"max": 50,
"score": 5
},
]
},
// 分值计算, 数值, 按值计分
"scorer": {
"type": "answer_value",
"ranges": []
}
// 分值计算, 填空,时长, 日期, 地区, 不传scorer
}
],
// 逻辑设置
"controls": [
{
"operator": "or", // 关联类型,and=且, or=或, 默认为or
// condition逻辑条件, type类型: choice=选中,unChoice=未选中, answered=已答, unAnswered=未答
"conditions":[
{
"qno": "Q1", // 选择题目编号
"type": "choice", // 选中
"value": ["A"] // 选项值 , type=choice或unChoice才有value,
}
],
// action 结果跳转, type类型: finish=跳转结束, jump=跳转题目, toQno: 跳转题目编号
"action": { // 跳转结束
"type": "finish",
"toQno": "finish",
},
},
{
"operator": "or", // 关联类型,and=且, or=或, 默认为or
"conditions": [
{
"qno": "Q1", // 选择题目编号
"type": "answered", // 已答
},
],
"action": { // 跳转题目, toQno: 跳转题目编号
"type": "jump",
"toQno": "Q1"
}
}
],
// 维度结果,不计分
"dimensions": [
{
"name": "", // 维度名称
"index": 1, // 序号
"wno": "W1", // 维度编号
"comments": [ // 维度结果
{
"index": 1, // 序号
"result": "不计分-评估结果1",
"comment": "不计分描述",
"alarmLevel": 0, // 预警等级,0=无,1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"matcher": { // 结果条件
"type": "choices", // 类型, choices=选中
"operator": "and", // 关联类型,and=且, or=或
"choices": [ // 关联题目
{
"operator": "or", // 选中类型, or=选中其中一项, and=全部选中
"values": [
"A"
],
"qno": "Q1" // 题目编号
},
{
"operator": "and",
"values": [
"A"
],
"qno": 1
}
]
},
},
{
"index": 2,
"result": "不计分2-评估结果2",
"comment": "嘻嘻嘻",
"alarmLevel": 0, // 预警等级,0=无, 1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"matcher": {
"type": "choices",
"operator": "or",
"choices": [
{
"operator": "or",
"values": [
"A",
"B"
],
"qno": "Q1"
},
{
"operator": "and",
"values": [
"A",
"B"
],
"qno": "Q1"
}
]
},
},
{ // 默认空结果
"index": 3,
"matcher": null,
"result": "",
"comment": "",
"alarmLevel": 0,
"suggest": "",
}
]
}
],
// 维度结果, 计分
"dimensions": [
{
"name": "", // 维度名称
"index": 1, // 序号
"wno": "W1", // 维度编号
"factor": {
"type": "sum_score", // 计分
"scorePercent": 100, //分值系数,
},
"comments": [
{
"index": 1, // 序号
"matcher": { // 分值范围
"type": "range",
"min": "0",
"max": "4"
},
"result": "无焦虑", // 结果
"comment": "在您真实填写的情况下,您的量表得分较低", // 结果描述
"alarmLevel": 0, // 预警等级,0=无, 1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
},
{ // 默认空结果
"index": 2,
"matcher": null,
"result": "",
"comment": "",
"alarmLevel": 0,
"suggest": "",
}
]
}
],
// 维度结果, 维度计分
"dimensions": [
{
"name": "维度1", // 维度名称
"minScore": 0, // 最大值
"maxScore": 3, // 最小值
"config": { // 配置信息
"genderDiff": 0, // 性别区分, 0=不区分, 1=区分
"genders": [ // 根据性别设置
{
"gender": 1, // 性别, 1=男, 2=女
"title": "xxx", // 显示标题
},
{
"gender": 2,
"title": "xxx",
}
],
},
"factor": { // 维度分值因子
"type": "expression", // sum=求和, avg=平均, expression=自定义公式
"expression": "SUM(Q1,Q2,Q3)",
"genders": [ // 性别设置
{
"gender": 1, // 性别, 1=男, 2=女
"expression": "SUM(Q1,Q2)",
"qnos":[],
},
{
"gender": 2, // 性别, 1=男, 2=女
"expression": "",
"qnos": [],
}
]
},
"index": 1, // 序号
"wno": "W1", // 维度编号
"qnos": [ // 题目绑定编号数组
"Q1",
"Q2"
],
"comments": [ // 维度结果
{
"index": 1,
"result": "WW", // 结果
"comment": "<p>CCC</p>", // 评语
"alarmLevel": 1, // 预警等级,0=无, 1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"matcher": { // 匹配器
"type": "range", // 分值范围
"min": 0, // 最小值
"max": 3, // 最大值
"minOperator": "<=", // 最小值比较符,默认<=, 可选值: <=, <
"maxOperator": "<=", // 最大值比较符, 默认<=, 可选值: <=, <
"age": { // 年龄设置
"min": 10,
"max": 10
},
"gender": 0, // 性别, 1=男, 2=女,
"scoreType": 0, // 得分计算类型, 0=得分, 1=原始分, 2=T分, 3=K分
},
}
],
}
],
// 维度计分, 维度条件
"assessments": [
{
"id": 1, // 条件id,
"questionnaireSetId": 1, // 问题集id
"index": 1, // 序号
"name": "", //条件名称
"matcher": { // 条件匹配器
"type":"expression",
"expression":"Q1==1",
},
"comment": "条件评语",
"suggest": "建议",
}
],
// 维度计分, 总结结论
"summaries": [
{
"id": 1, // 总结id,
"questionnaireSetId": 1, // 问题集id
"result": "WW", // 结果
"comment": "<p>CCC</p>", // 评语
"alarmLevel": 1, // 预警等级,0=无, 1=轻,2=中,3=重,4=结果无效
"suggest": "xxx", // 建议
"matcher": { // 匹配器
"type": "range", // 分值范围
"min": 0, // 最小值
"max": 3, // 最大值
},
}
],
}
返回结果: 量表信息
编辑单一量表: /questionnaires/:id PUT
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
categoryId | 1 | number | 是 | 量表分类id |
Code | 'PSQI' | string | 否 | 量表代号 |
SerialNumber | 'N500' | string | 否 | 量表编号 |
title | "测试" | string | 是 | 标题 |
description | "xx" | string | 否 | 描述 |
guide | "xxx" | string | 否 | 指导语 |
endRemark | "xxx" | string | 是 | 结束语 |
isAllPutInQuestion | 0 | number | 是 | 题目是否入库 |
type | 0 | number | 是 | 问卷类型,0=普通问卷, 1=测试问卷, 2=草稿问卷 |
scoreType | 0 | number | 是 | 计分类型,0=不计分,1=计分(单因子),2=维度(多因子) |
coverUrl | "" | string | 否 | 封面url |
viewReport | 1 | number | 否 | 是否可以查看报告, 0=否, 1=是 |
dataComparisonType | 0 | number | 否 | 数据对比类型,0=减分率类型,1=增分率类型 |
config | {} | object | 否 | 配置信息 |
questions | [] | array | 是 | 问题集 |
dimensions | [] | array | 是 | 结果维度 |
controls | [] | array | 否 | 逻辑设置 |
assessments | [] | array | 否 | 维度条件 |
summaries | [] | array | 否 | 总结结论 |
请求示例:
{
"code": "PSQI", // 量表代号
"serialNumber": "N500", // 量表编号
"categoryId": 1, // 量表分类id
"title": "bbb", // 标题
"description": "", // 描述
"guide": "", // 指导语
"endRemark": "", // 结束语
"scoreType": 0, // 计分方式
"showIntro": 0, // 是否显示封面
"coverUrl": "", // 封面URL
"type": 0, // 问卷类型 0=普通问卷,1=测试问卷, 2-草稿问卷
"isAllPutInQuestion": 1, // 题目是否全部入库, 0=不加入, 1=全部加入
"viewReport": 1, // 是否可以查看报告, 0=否, 1=是
"dataComparisonType": 1,
"config": {
"minScore": 0, // 分值范围,最小值
"maxScore": 100, // 分值范围, 最大值
"autoNext": 1, // 是否自动下一题, 0=否, 1=是
"standardRange": { // 参考范围
"minScore": 40,
"maxScore": 60,
},
"tableCfg": {
"showTotal": 0, // 显示总分, 0=否, 1=是
"showDimension": 0, // 显示各维度分, 0=否, 1=是
},
"graphCfg": {
"totalGraphType": 1, // 总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"dimensionGraphCfg": [
{
"type": 6, // 各维度总分图表类型, 0=无,1=雷达图,2=柱状图,3=条形图,4=折线图,5=表格, 6=仪表盘
"wnos": ["W1", "W2"], // 显示维度数组
}
],
}
},
"questions": [ // 题目列表
{
"id": 1, // 问题id, 编辑必传
"type": 1, // 题目类型, 1=单选,2=多选,3=简答,4=日期,5=时间,6=矩阵单选,7=数值,8=地区
"index": 1, // 序号
"qno": "Q1", // 题目编号
"partition": "Q", // 分区
"isPutInQuestion": 1, // 是否加入题库, 0=不加入, 1=加入
"title": "可悲事的有哪些", // 题目标题
"rftTitle": "", // 题目标题富文本
"isMustAnswer": 1, // 是否必答题, 0=否,1=是
"optionStyleType": 1, // 选项样式, 1=勾选,2=下拉
"data": { // 题目数据
"options": [ // 题目选项
{
"value": "A",
"text": "执意求死",
},
{
"value": "B",
"text": "无力求生",
}
],
},
"minScore": 0, // 最小分值
"maxScore": 0, // 最大分值
}
],
// 逻辑设置
"controls": [
{
"operator": "or", // 关联类型,and=且, or=或, 默认为or
// condition逻辑条件, type类型: choice=选中,unChoice=未选中, answered=已答, unAnswered=未答
"conditions":[
{
"qno": "Q1", // 选择题目编号
"type": "choice", // 选中
"value": ["A"] // 选项值 , type=choice或unChoice才有value,
}
],
// action 结果跳转, type类型: finish=跳转结束, jump=跳转题目, toQno: 跳转题目编号
"action": { // 跳转结束
"type": "finish",
"toQno": "finish",
},
},
{
"operator": "or", // 关联类型,and=且, or=或, 默认为or
"conditions": [
{
"qno": "Q1", // 选择题目编号
"type": "answered", // 已答
},
],
"action": { // 跳转题目, toQno: 跳转题目编号
"type": "jump",
"toQno": "Q1"
}
}
],
// 维度结果,不计分
"dimensions": [
{
"id": 1, // 维度id,
"name": "", // 维度名称
"index": 1, // 序号
"wno": "W1", // 维度编号
"comments": [ // 维度结果
{
"id": 1, // 维度结果id
"index": 1, // 序号
"matcher": { // 结果条件
"type": "choices", // 类型, choices=选中
"operator": "and", // 关联类型,and=且, or=或
"choices": [ // 关联题目
{
"operator": "or", // 选中类型, or=选中其中一项, and=全部选中
"values": [
"A"
],
"qno": "Q1" // 题目编号
},
{
"operator": "and",
"values": [
"A"
],
"qno": "Q1"
}
]
},
"result": "不计分-评估结果1",
"comment": "不计分描述",
},
{ // 默认空结果
"id": 2,
"index": 2,
"matcher": null,
"result": "",
"comment": "",
}
]
}
],
// 维度结果, 计分
"dimensions": [
{
"id": 1, // 维度id
"name": "", // 维度名称
"index": 1, // 序号
"wno": "W1", // 维度编号
"factor": {
"type": "sum_score", // 计分
"scorePercent": 100, //分值系数
},
"comments": [
{
"id": 1, // 维度结果id
"index": 1, // 序号
"matcher": { // 分值范围
"type": "range",
"min": "0",
"max": "4"
},
"result": "无焦虑", // 结果
"comment": "在您真实填写的情况下,您的量表得分较低", // 结果描述
},
{ // 默认空结果
"id": 2, // 维度结果id
"index": 2,
"matcher": null,
"result": "",
"comment": "",
}
]
}
],
// 维度结果, 维度计分
"dimensions": [
{
"id": 1, // 维度id
"name": "维度1", // 维度名称
"minScore": 0, // 最大值
"maxScore": 3, // 最小值
"factor": { // 维度分值因子
"type": "expression", // sum=求和, avg=平均, expression=自定义公式
"expression": "SUM(Q1,Q2,Q3)",
"index": -1
},
"index": 1, // 序号
"wno": "W1", // 维度编号
"qnos": [ // 题目绑定编号数组
"Q1",
"Q2"
],
"comments": [
{
"id": 1, // 维度结果id
"index": 1, // 序号
"result": "WW",
"comment": "<p>CCC</p>",
"matcher": {
"type": "range",
"min": 0,
"max": 3
},
}
],
}
],
// 维度计分, 维度条件
"assessments": [
{
"id": 1, // 条件id,
"questionnaireSetId": 1, // 问题集id
"index": 1, // 序号
"name": "", //条件名称
"matcher": { // 条件匹配器
"type":"expression",
"expression":"Q1==1",
},
"comment": "条件评语"
}
],
}
返回结果: 量表信息
新建合并量表: merge/questionnaires POST
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
categoryId | 1 | number | 是 | 量表分类id |
title | "测试" | string | 是 | 标题 |
description | "xx" | string | 否 | 描述 |
endRemark | "xxx" | string | 是 | 结束语 |
type | 0 | number | 是 | 问卷类型,0=普通问卷, 1=测试问卷, 2=草稿问卷 |
isSingle | 1 | number | 是 | 是否单一问卷, 1=单一问卷, 0=合并问卷 |
coverUrl | "" | string | 否 | 封面url |
items | [] | array | 是 | 合并量表数组 |
lastResultOnly | 0 | number | 否 | 是否仅展示最后一个结果, 0=否, 1=是 |
viewReport | 1 | number | 否 | 是否可以查看报告, 0=否, 1=是 |
dataComparisonType | 0 | number | 否 | 数据对比类型,0=减分率类型,1=增分率类型 |
mergeConfig | {} | object | 否 | 合并量表配置信息 |
请求示例:
{
"categoryId": 1, // 量表分类id
"isSingle": 0, // 合并量表
"title": "bbb", // 标题
"description": "", // 描述
"guide": "", // 指导语
"endRemark": "", //结束语
"type": 0, // 问卷类型 0=普通问卷,1=测试问卷, 2-草稿问卷
"title": "ddd",
"showIntro": 0, // 是否显示封面
"coverUrl": "", // 封面URL
"dataComparisonType": 1,
"lastResultOnly": 0,
"items": [
{ // 量表1
"questionnaireSetId": 3, // 量表集Id,
"index": 1, // 序号
"pivotControls": [ // 结果关联逻辑
{
"condition": {
"type": "comment", // 条件类型, comment=维度结果, dimension=维度
"commentId": 1, // 维度结果id
},
"action": { // action 结果跳转, type类型: finish=跳转结束, jump=跳转题目, toQno: 跳转题目编号, toIndex: 调到量表对应index
"type": "jump",
"toId": 1, // 量表id
}
},
{
"condition": {
"type": "comment",
"commentId": 4
},
"action": {
"type": "jump",
"toIndex": 1,
}
}
]
},
{ // 量表2
"questionSetId": 4, // 量表集Id,
"index": 2, // 序号
"pivotControls": [
{
"condition": {
"type": "comment",
"commentId": 5
},
"action": {
"type": "finish",
"toQno": "finish"
}
},
{
"condition": {
"type": "comment",
"commentId": 6
},
"action": {
"type": "finish",
"toQno": "finish"
}
}
]
}
],
}
返回结果: 量表信息
编辑合并量表: /merge/questionnaires/:id PUT
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
categoryId | 1 | number | 是 | 量表分类id |
title | "测试" | string | 是 | 标题 |
description | "xx" | string | 否 | 描述 |
endRemark | "xxx" | string | 是 | 结束语 |
type | 0 | number | 是 | 问卷类型,0=普通问卷, 1=测试问卷, 2=草稿问卷 |
isSingle | 1 | number | 是 | 是否单一问卷, 1=单一问卷, 0=合并问卷 |
coverUrl | "" | string | 否 | 封面url |
items | [] | array | 是 | 合并量表数组 |
lastResultOnly | 0 | number | 否 | 是否仅展示最后一个结果, 0=否, 1=是 |
viewReport | 1 | number | 否 | 是否可以查看报告, 0=否, 1=是 |
dataComparisonType | 0 | number | 否 | 数据对比类型,0=减分率类型,1=增分率类型 |
mergeConfig | {} | object | 否 | 合并量表配置信息 |
返回结果: 量表信息
量表详情: /questionnaires/:id GET
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
id | 1 | number | 是 | 资源id |
expand | 'source' | string | 否 | 获取指定子资源数据 'source,creator,category,organizations,questionnaireSets.questionCount,questionnaireSets.questions,questionnaireSets.dimensions.comments,questionnaireSets.assessments' |
attributes | ["id", "name"] | array | 否 | 本资源的字段。不定义该字段时返回所有字段 |
返回结果: 量表信息
删除量表: /questionnaires/:id DELETE
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
id | 1 | number | 是 | 资源id |
返回示列
HTTP/1.1 204 NO CONTENT
所有量表: /listAll/questionnaires GET
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 | 默认值 |
---|---|---|---|---|---|
title | xxx | string | 否 | 标题 | |
sourceId | 1 | number | 否 | 来源组织id, 0=云医后台 | |
categoryId | 1 | number | 否 | 量表分类id | |
type | 0 | number | 否 | 量表类型 | |
isSingle | 1 | number | 否 | 是否单一量表 | |
scoreType | 1 | number | 否 | 计分类型 | |
status | 1 | numbe | 否 | 量表状态 | |
expand | 'source' | string | 否 | 获取指定子资源数据 'source,creator,category,organizations,questionnaireSets.questionCount,questionnaireSets.questions,questionnaireSets.dimensions.comments,questionnaireSets.assessments' | |
attributes | "id,name" | string | 否 | 本资源的字段。不定义该字段时返回所有字段;空数组不返回字段 |
返回结果: 量表信息
返回示列
HTTP/1.1 200 OK
[
{}
]
量表入库组织: /putOrganization/questionnaires POST
请求参数
参数名 | 示列值 | 类型 | 必须 | 说明 |
---|---|---|---|---|
itemIds | [1] | array | Y | 资源 id 数组 |
orgIds | [1,2] | array | Y | 组织 id 数组 |
isBatch | 0 | number | Y | 是否批量入库组织, 0=否, 1=是 |
返回示列
HTTP/1.1 200