Files
astra-frontend/src/pages/newMedicalCard/utils/medicalConfig.js

475 lines
11 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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",
},
],
},
];