В ходе выполнения задачи  API-821 - Получение подробных данных проблемы... СТАТУС  была добавлена возможность настройки анкеты диспансеризации через конфиг.

Анкета диспансеризации различается для лиц возраста до 75 и после 75, в конфигурационном файле анкеты хранятся в поле anketB75 и anketA75 соответственно.

Каждое поле представляет собой массив объектов QuestionLocal, который состоит из следующих полей:

Название поляТип данныхОписание
TicketCodestringКод маркировки вопроса анкеты (из таблицы oms_Param)
QuestionQuestionМодель вопроса

Описание модели Question

Название

Тип данных

Описание

Комментарий
QuestionIDintИдентификатор вопросаявляется устаревшим. оставлен для обратной совместимости
QuestionNumberstringНомер вопроса в анкетеномер вопроса в анкете (устанавливается шаблоном анкеты)
QuestionNamestringТекст вопроса
AnswersAnswerСписок вариантов ответаМассив моделей вариантов ответа на вопрос

Пример модели в формате JSON
{
    "questionID": 1,
    "questionNumber": "1.1",
    "questionName": "Говорил ли Вам врач когда-либо, что у Вас имеется гипертоническая болезнь (повышенное артериальное давление)?",
    "answers": [
        {
            "answerID": 1,
            "answerType": "Choise",
            "answerName": "нет"
        },
        {
            "answerID": 2,
            "answerType": "Choise",
            "answerName": "да"
        }
    ]
}


Пример модели QuestionLocal в формате JSON:

 {
 	"TicketCode": "HighBloodPressure",
 	"Question": {
 		"QuestionID": 1,
 		"QuestionNumber": "1.1",
 		"QuestionName": "Говорил ли Вам врач когда-либо, что у Вас имеется гипертоническая болезнь (повышенное артериальное давление)?",
 		"Answers": [{
 				"AnswerID": 1,
 				"AnswerType": "Choise",
 				"AnswerName": "нет"
 			},
 			{
 				"AnswerID": 2,
 				"AnswerType": "Choise",
 				"AnswerName": "да"
 			}
 		]
 	}
 }

Создание вопросов

Поиск кодов маркировок (значения поля ticketCode) может быть выполнен в таблице oms_Param по следующему запросу:

select * from oms_Param WHERE Name LIKE '%@0%'

где @0 - полный или частичный (в случае ненахождения полного совпадения) текст вопроса.

Для вопросов, которые подразумевают выбор варианта ответа, необходимо задать в массиве ответов количество объектов равное числу вариантов ответа и для каждого указать AnswerType=Choise и в каждом AnswerName указывать содержимое варианта ответа.

Для вопросов, подразумевающих ввод ответа, необходимо задать в массиве ответов один объект и указать AnswerType=Input и в AnswerName указать пустую строку.


Пример конфигурации

Пример конфигурации анкеты с двумя вопросами в каждой:

{
	"anketA75": [{
			"TicketCode": "HighBloodPressure",
			"Question": {
				"QuestionID": 1,
				"QuestionNumber": "1.1",
				"QuestionName": "Говорил ли Вам врач когда-либо, что у Вас имеется гипертоническая болезнь (повышенное артериальное давление)?",
				"Answers": [{
						"AnswerID": 1,
						"AnswerType": "Choise",
						"AnswerName": "нет"
					},
					{
						"AnswerID": 2,
						"AnswerType": "Choise",
						"AnswerName": "да"
					}
				]
			}
		},
		{
			"TicketCode": "HighBloodPressureIfY",
			"Question": {
				"QuestionID": 2,
				"QuestionNumber": "1.1",
				"QuestionName": "Если «Да», то принимаете ли Вы препараты для снижения давления?",
				"Answers": [{
						"AnswerID": 3,
						"AnswerType": "Choise",
						"AnswerName": "нет"
					},
					{
						"AnswerID": 4,
						"AnswerType": "Choise",
						"AnswerName": "да"
					}
				]
			}
		}
	],
	"anketB75": [{
			"TicketCode": "HighBloodPressure",
			"Question": {
				"QuestionID": 1,
				"QuestionNumber": "1.1",
				"QuestionName": "Говорил ли Вам врач когда-либо, что у Вас имеется гипертоническая болезнь (повышенное артериальное давление)?",
				"Answers": [{
						"AnswerID": 1,
						"AnswerType": "Choise",
						"AnswerName": "нет"
					},
					{
						"AnswerID": 2,
						"AnswerType": "Choise",
						"AnswerName": "да"
					}
				]
			}
		},
		{
			"TicketCode": "HighBloodPressureIfY",
			"Question": {
				"QuestionID": 2,
				"QuestionNumber": "1.1.1",
				"QuestionName": "Если «Да», то принимаете ли Вы препараты для снижения давления?",
				"Answers": [{
						"AnswerID": 3,
						"AnswerType": "Choise",
						"AnswerName": "нет"
					},
					{
						"AnswerID": 4,
						"AnswerType": "Choise",
						"AnswerName": "да"
					}
				]
			}
		}
	]
}

Актуальная на текущий момент конфигурация анкеты: anket.json

  • Нет меток