В ходе выполнения задачи
API-821
-
Получение подробных данных проблемы...
СТАТУС
была добавлена возможность настройки анкеты диспансеризации через конфиг.
Анкета диспансеризации различается для лиц возраста до 75 и после 75, в конфигурационном файле анкеты хранятся в поле anketB75 и anketA75 соответственно.
Каждое поле представляет собой массив объектов QuestionLocal, который состоит из следующих полей:
Название поля | Тип данных | Описание |
---|
TicketCode | string | Код маркировки вопроса анкеты (из таблицы oms_Param) |
Question | Question | Модель вопроса |
Описание модели Question
Название | Тип данных | Описание | Комментарий |
---|
QuestionID | int | Идентификатор вопроса | является устаревшим. оставлен для обратной совместимости |
QuestionNumber | string | Номер вопроса в анкете | номер вопроса в анкете (устанавливается шаблоном анкеты) |
QuestionName | string | Текст вопроса |
|
Answers | Answer | Список вариантов ответа | Массив моделей вариантов ответа на вопрос |
{
"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