import { ruleLengthValue, ruleEmailValue, ruleMaxLength, ruleNotValue, ruleDateValue, ruleOptionalFields, } from "@/shared/utils/rulesInputs"; export const baseDataForm = [ { dataLabel: "Личные данные", dataKey: "personalData", fields: [ { key: "last_name", label: "Фамилия", type: "text", }, { key: "first_name", label: "Имя", type: "text", }, { key: "patronymic", label: "Отчество", type: "text", }, { key: "gender", label: "Пол", type: "select", }, { key: "birth_date", label: "Дата рождения", type: "date", }, { key: "photo", label: "Фото", type: "avatar", }, ], }, { dataLabel: "Адрес регистрации", dataKey: "registrationAddress", fields: [ { key: "region", label: "Регион", type: "text", }, { key: "city", label: "Город", type: "text", }, { key: "street", label: "Улица", type: "text", }, { key: "house_number", label: "Дом", type: "text", rules: [(val) => !/^[\W0]/.test(val)], error: "Номер дома должен начинатся не с нуля и только с цифробуквенного символа", }, { key: "apartment_number", label: "Квартира", type: "text", rules: [(val) => !/^[\W0]/.test(val)], error: "Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа", }, ], }, { dataLabel: "Адрес проживания", dataKey: "residenceAddress", fields: [ { key: "region", label: "Регион", type: "text", }, { key: "city", label: "Город", type: "text", }, { key: "street", label: "Улица", type: "text", }, { key: "house_number", label: "Дом", type: "text", rules: [(val) => !/^[\W0]/.test(val)], error: "Номер дома должен начинатся не с нуля и только с цифробуквенного символа", }, { key: "apartment_number", label: "Квартира", type: "text", rules: [(val) => !/^[\W0]/.test(val)], error: "Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа", }, ], }, ]; export const errorMap = { house_number: { title: "Дом", error: "Номер дома должен начинатся не с нуля и только с цифробуквенного символа", }, apartment_number: { title: "Квартира", error: "Номер квартиры должен начинатся не с нуля и только с цифробуквенного символа", }, }; export const mapNetworks = { VK: { title: "VK", icon: "app:icon-vk", network: "VK", }, TELEGRAM: { title: "Telegram", icon: "app:icon-tg", network: "TELEGRAM", }, GMAIL: { title: "Gmail", icon: "app:icon-google", network: "GMAIL", }, SLACK: { title: "Slack", icon: "app:icon-slack", network: "SLACK", markerLink: "slack", }, DISCORD: { title: "Discord", icon: "app:icon-discord", network: "DISCORD", }, VIBER: { title: "Viber", icon: "wifi_calling_3", network: "VIBER", }, WHATS_APP: { title: "WhatsApp", icon: "call", network: "WHATS_APP", }, }; export const contactsDataForm = { phones: { title: "Телефон", fieldName: "Телефон", error: "Не корректно введен номер телефона. Номер телефона должен состоять из 10 цифр (без учета +7)", kind: "PHONE", rules: [(val) => ruleLengthValue(val, 18)], inputMask: "+7 (###) ###-##-##", }, emails: { title: "Почта", fieldName: "Email", error: "Не корректно введен адрес почты. Почта должна содержать локальное имя, знак @ и имя домена", rules: [(val) => ruleEmailValue(val)], kind: "EMAIL", }, networks: { title: "Социальные сети", fieldName: "Соцсеть", error: "Отсутсвует ссылка соцсети", rules: [(val) => ruleNotValue(val)], kind: "TELEGRAM", }, }; export const allergiesConfig = { name: { title: "Аллерген", rules: [(val) => ruleMaxLength(val, 100)], error: "Некорректно введен аллерген. Значение должно быть больше 1 и меньше 50 символов", }, title: { title: "Проявление аллергии", rules: [(val) => ruleMaxLength(val, 100)], error: "Некорректно введено проявление аллергии. Значение должно быть больше 1 и меньше 100 символов", }, }; export const genderOptions = [ { id: "MALE", label: "Мужской", }, { id: "WOMEN", label: "Женский", }, ]; export const headerMenuItem = [ { title: "Общая информация", id: "basic", component: "MedicalBaseInfo", }, { title: "Журнал посещений", id: "session-log", component: "SessionLog", }, { title: "Планы лечения", id: "treatment-plans", component: "TreatmentPlans", }, { title: "Статистика", id: "statistics", component: "Statistics", }, { title: "История контактов", id: "contact-history", component: "ContactHistory", }, ]; export const baseInfoMenu = [ { title: "Основные данные", id: "basic-data", component: "MedicalBasicDataWrapper", }, { title: "Протоколы первичного осмотра", id: "protocols", component: "Protocols", }, { title: "Доверенное лицо", id: "trusted-person", component: "TrustedPerson", }, { title: "Аллергии", id: "allergies", component: "MedicalAllergiesWrapper", }, { title: "Состояние здоровья", id: "health-status", component: "HealthStatus", }, { title: "История болезней", id: "medical-history", component: "MedicalHistory", }, { title: "Зубная формула", id: "dental-formula", component: "DentalFormula", }, ]; export const baseInsuranceForm = [ { insuranceLabel: "ОМС", insuranceKey: "insuranceOMS", fields: [ { key: "series", label: "Серия", type: "text", inputMask: "####", }, { key: "number", label: "Номер", type: "text", inputMask: "####-####-####", }, { key: "photo", label: "Фото ОМС", type: "avatar", }, ], }, { insuranceLabel: "ДМС", insuranceKey: "insuranceDMS", fields: [ { key: "series", label: "Серия", type: "text", inputMask: "####", }, { key: "number", label: "Номер", type: "text", inputMask: "####-####-####", }, { key: "photo", label: "Фото ДМС", type: "avatar", }, ], }, { insuranceLabel: "Категория льготы", insuranceKey: "benefit", discount: "discount", fields: [ { key: "name", label: "Категория", type: "select", }, { key: "photo", label: "Документы", type: "avatar", }, ], }, ]; export const routesDictionary = { "/clients": "Клиенты", "/calendar": "Календарь", "/medical-card": "Медкарта", }; export const documentForm = [ { dataLabel: "Паспорт", dataKey: "passport", fields: [ { key: "series", label: "Серия", type: "text", inputMask: "####", errorMessage: { title: "Ошибка валидации", message: "Серия паспорта менее 4 цифр или не заполнена", }, rules: (val) => ruleLengthValue(val, 4), }, { key: "number", label: "Номер", type: "text", inputMask: "######", errorMessage: { title: "Ошибка валидации", message: "Номер паспорта менее 6 цифр или не заполнен", }, rules: (val) => ruleLengthValue(val, 6), }, { key: "issued_by_org", label: "Кем выдан", type: "text", errorMessage: { title: "Ошибка валидации", message: "Поле 'Кем выдан' не заполнено", }, rules: (val) => ruleNotValue(val), }, { key: "issued_by_org_code", label: "Код подраздел.", type: "text", inputMask: "###-###", errorMessage: { title: "Ошибка валидации", message: "Код подразделения менее 6 цифр или не заполнен", }, rules: (val) => ruleLengthValue(val, 7), }, { key: "issued_by_date", label: "Дата выдачи", type: "date", rules: (val) => ruleDateValue(val), errorMessage: { title: "Ошибка валидации", message: "Дата выдачи паспорта позднее текущего дня", }, }, { key: "photo", label: "Фото паспорта", type: "photo", }, ], }, { dataLabel: "СНИЛС", dataKey: "insurance_number", fields: [ { key: "insurance_number", label: "Номер СНИЛС", type: "text", inputMask: "###-###-### ##", errorMessage: { title: "Ошибка валидации", message: "СНИЛС содержит менее 11 цифр", }, rules: (val) => ruleOptionalFields(val, 14), }, { key: "photo_insurance_number", label: "Фото СНИЛС", type: "photo", }, ], }, { dataLabel: "ИНН", dataKey: "tax_identification_number", fields: [ { key: "tax_identification_number", label: "Номер ИНН", type: "text", inputMask: "############", errorMessage: { title: "Ошибка валидации", message: "ИНН содержит менее 12 цифр", }, rules: (val) => ruleOptionalFields(val, 12), }, { key: "photo_tax_identification_number", label: "Фото ИНН", type: "photo", }, ], }, ];