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