From c00cab2fbfc83b77af2c961f5ae639bac7c88f38 Mon Sep 17 00:00:00 2001 From: Ilya_Chis Date: Thu, 23 Jan 2025 15:04:50 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=B8=20=D0=BF=D1=80=D0=B8=D0=B3=D0=BB=D0=B0=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backup_google_sheets.py | 76 + probnik_Bot_for_HR.py | 949 +++++++++--- sheets_backup/changes.json | 0 sheets_backup/current_data.json | 2401 +++++++++++++++++++++++++++++++ ~$_бланк.docx | Bin 162 -> 0 bytes 5 files changed, 3235 insertions(+), 191 deletions(-) create mode 100644 backup_google_sheets.py create mode 100644 sheets_backup/changes.json create mode 100644 sheets_backup/current_data.json delete mode 100644 ~$_бланк.docx diff --git a/backup_google_sheets.py b/backup_google_sheets.py new file mode 100644 index 0000000..f65f07c --- /dev/null +++ b/backup_google_sheets.py @@ -0,0 +1,76 @@ +import os +import json +from googleapiclient.discovery import build +from googleapiclient.errors import HttpError + +# Конфигурация +SPREADSHEET_IDS = ["1j12H6NCZec9MEWQypPbzhETNtn58fnin1HBRkkr3a1w", "1iJAfffxm5-rFXi8LB5g1rChp94Qfo-mgSDxsDii27oo"] # Список ID таблиц +BACKUP_FOLDER = "sheets_backup" # Папка для сохранения +CURRENT_DATA_FILE = os.path.join(BACKUP_FOLDER, "current_data.json") # Файл текущих данных +CHANGES_FILE = os.path.join(BACKUP_FOLDER, "changes.json") # Файл изменений + +# Аутентификация Google Sheets API +def get_service(): + from google.oauth2.service_account import Credentials + creds = Credentials.from_service_account_file("botforclinic-436512-0c117dd103a8.json") + return build("sheets", "v4", credentials=creds) + +def load_current_data(): + """Загружает текущие данные из локального файла.""" + if os.path.exists(CURRENT_DATA_FILE): + with open(CURRENT_DATA_FILE, "r", encoding="utf-8") as f: + return json.load(f) + return {} + +def save_current_data(data, file_path): + """Сохраняет данные в указанный файл.""" + with open(file_path, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=4) + +def calculate_changes(old_data, new_data): + """Вычисляет изменения между старыми и новыми данными.""" + changes = {} + for sheet_title, rows in new_data.items(): + old_rows = set(tuple(row) for row in old_data.get(sheet_title, [])) + new_rows = set(tuple(row) for row in rows) + added_rows = new_rows - old_rows + if added_rows: + changes[sheet_title] = [list(row) for row in added_rows] + return changes + +def backup_google_sheets(): + """Создаёт копию всех таблиц, вычисляет изменения и сохраняет данные.""" + service = get_service() + if not os.path.exists(BACKUP_FOLDER): + os.makedirs(BACKUP_FOLDER) + + current_data = load_current_data() + updated_data = {} + + for spreadsheet_id in SPREADSHEET_IDS: + try: + spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute() + spreadsheet_title = spreadsheet.get("properties", {}).get("title", "Unknown_Table") + sheets = spreadsheet.get("sheets", []) + + for sheet in sheets: + sheet_title = sheet.get("properties", {}).get("title", "Unknown_Sheet") + range_name = f"'{sheet_title}'" + result = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute() + data = result.get("values", []) + updated_data[f"{spreadsheet_title}::{sheet_title}"] = data + + except HttpError as error: + print(f"Ошибка при обработке таблицы ID {spreadsheet_id}: {error}") + + # Вычисляем изменения + changes = calculate_changes(current_data, updated_data) + + # Сохраняем обновлённые данные и изменения + save_current_data(updated_data, CURRENT_DATA_FILE) + save_current_data(changes, CHANGES_FILE) + print("Данные успешно обновлены и сохранены.") + print("Изменения:", changes if changes else "Нет изменений.") + +if __name__ == "__main__": + backup_google_sheets() diff --git a/probnik_Bot_for_HR.py b/probnik_Bot_for_HR.py index 8ac3872..55dedb5 100644 --- a/probnik_Bot_for_HR.py +++ b/probnik_Bot_for_HR.py @@ -1,19 +1,35 @@ from googleapiclient.discovery import build from google.oauth2.service_account import Credentials import asyncio -from aiogram.types import WebAppInfo import logging -from aiogram import Bot, Dispatcher, types -from aiogram.utils import executor from aiogram.types import ChatType from aiogram.utils.exceptions import BadRequest -from aiogram.types import ReplyKeyboardMarkup, KeyboardButton from aiogram.utils.exceptions import MessageCantBeDeleted import gspread -from datetime import datetime from google.oauth2 import service_account from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, WebAppInfo, ReplyKeyboardMarkup, KeyboardButton import sentry_sdk +from aiogram import Bot, Dispatcher, types +from aiogram.contrib.fsm_storage.memory import MemoryStorage +from aiogram.utils import executor +from aiogram.dispatcher import FSMContext +from aiogram.dispatcher.filters.state import StatesGroup, State +import subprocess +from googleapiclient.discovery import build +from googleapiclient.errors import HttpError +import os +import json +from googleapiclient.discovery import build +from googleapiclient.errors import HttpError +from datetime import datetime +import subprocess +from aiogram import types +from aiogram.dispatcher import filters +from aiogram.types import Message +from datetime import datetime, timedelta + + + @@ -27,16 +43,21 @@ sentry_sdk.init( # Настройки бота API_TOKEN = '7414018470:AAGYF77aCd1BQpRnf38ys05ijkYJ25sNBuU' -ADMIN_ID = 766945900 # ID администратора, которому будет приходить уведомление -SPREADSHEET_ID = '128R3An6fb2PFGlzYMKb4SvEaSYCWUHHFVvial7llGno' # ID вашей Google Таблицы +ADMIN_ID = 5522111920 # ID администратора, которому будет приходить уведомление +ADMIN_IDS = [5522111920, 766945900] # Список ID администраторов +SPREADSHEET_ID = '1j12H6NCZec9MEWQypPbzhETNtn58fnin1HBRkkr3a1w' +SHEET_NAME_GROUPS = 'Лист2' +SHEET_NAME_EMPLOYEES = 'Лист1' RANGE_NAME = 'Лист1!A1:O' # Диапазон данных в таблице CHAT_IDS = [-1002306913175, -1002266505101] # Замените на ID чатов, где бот администратор # Логирование logging.basicConfig(level=logging.INFO) -bot = Bot(token=API_TOKEN) -dp = Dispatcher(bot) +bot = Bot(token=API_TOKEN, timeout=30) +# Инициализация диспетчера и хранилища состояний +storage = MemoryStorage() +dp = Dispatcher(bot, storage=storage) # Настройки для Google Sheets API SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] @@ -58,222 +79,430 @@ drive_service = build('drive', 'v3', credentials=credentials) # Идентификатор Google Документа (шаблона трудового договора) TEMPLATE_DOC_ID = '1xi4YiPNBEDvODS0SaVb0wgKZ_b_OBkas' -# Словарь для хранения сотрудников, которых уже обработали -known_employees = set() -def create_contract_google(employee_data): - # Копирование шаблона - file_metadata = { - 'name': f"ТД_{employee_data[0]}_{datetime.now().strftime('%Y%m%d%H%M%S')}", - 'mimeType': 'application/vnd.google-apps.document', - 'parents': ['1fyA5btnwCQC-juE40T-uLSVHVIB-I2Ny'] - } - copied_file = drive_service.files().copy( - fileId=TEMPLATE_DOC_ID, body=file_metadata).execute() - document_id = copied_file['id'] - - # Замены текста в шаблоне - replacements = { - "{{ФИО}}": employee_data[0], - "{{Серия паспорта}}": employee_data[3], - "{{Номер паспорта}}": employee_data[4], - "{{Кем выдан}}": employee_data[5], - "{{Дата выдачи}}": employee_data[6], - "{{Адрес}}": employee_data[8], - "{{Дата рождения}}": employee_data[12], - "{{ИНН}}": employee_data[11], - "{{СНИЛС}}": employee_data[10], - } - - requests = [{"replaceAllText": { - "containsText": {"text": key, "matchCase": True}, - "replaceText": value - }} for key, value in replacements.items()] - - docs_service.documents().batchUpdate( - documentId=document_id, body={'requests': requests}).execute() - - return f"https://docs.google.com/document/d/{document_id}/edit" - - - -# Словарь с соответствием специальности и ссылки на чат -specialty_chat_links = { - "Врачи": "https://t.me/botclinic", - "Медсёстры": "https://t.me/+DcZn0yBO0RFjZTY6", - "Санитарки": "https://t.me/joinchat/{chat_id_orderlies}", - "Администраторы": "https://t.me/joinchat/{chat_id_admins}", - "Операторы КЦ": "https://t.me/joinchat/{chat_id_operators}", - "АУП": "https://t.me/joinchat/{chat_id_aap}" -} - - -# Функция для отправки сообщения о новом сотруднике с клавиатурой для выбора специальности -async def notify_admin_about_new_employee(entry): - full_name = entry[0] if entry else "Без имени" - new_employee_id = entry[13] if len(entry) > 13 else None - - if new_employee_id: - # Отправляем уведомление админу о новом сотруднике с клавишами выбора специальности - keyboard = create_employee_keyboard() +CHANGES_FILE = r"C:\Users\ilyac\PycharmProjects\Bot_for_clinic\sheets_backup\changes.json" - await bot.send_message( - ADMIN_ID, - f"Зарегистрирован новый сотрудник: {full_name}\nTelegram ID сотрудника: {new_employee_id}", - reply_markup=keyboard - ) - else: - logging.error("Не удалось найти Telegram ID сотрудника.") +logging.basicConfig(level=logging.INFO) -# Функция для проверки новых сотрудников -async def check_for_new_entries(): - sheet = service.spreadsheets() - while True: - try: - result = sheet.values().get(spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME).execute() - values = result.get('values', []) - except Exception as e: - logging.error(f"Ошибка при чтении таблицы: {e}") - await asyncio.sleep(30) # Ждем перед следующей попыткой - continue +# Google API настройки +SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'] +SERVICE_ACCOUNT_FILE = 'botforclinic-436512-0c117dd103a8.json' - # Проверяем каждую запись на наличие нового сотрудника - for entry in values: - full_name = entry[0] if entry else "Без имени" - new_employee_id = entry[13] if len(entry) > 13 else None # Telegram ID сотрудника +credentials = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) +sheets_service = build('sheets', 'v4', credentials=credentials) - if full_name and full_name not in known_employees: - known_employees.add(full_name) +SPREADSHEET_NAME = "Корпоративные группы Клиники в Телеграмм" - # Генерация трудового договора - try: - contract_url = create_contract_google(entry) - # Уведомление для администратора - await bot.send_message( - ADMIN_ID, - f"Зарегистрирован новый сотрудник: {full_name}\nТрудовой договор: {contract_url}", - ) +def load_changes(): + """Считываем данные из файла changes.json.""" + with open(CHANGES_FILE, "r", encoding="utf-8") as f: + return json.load(f) - # Уведомление для сотрудника - if new_employee_id: - welcome_message = f"Большое спасибо! Мы получили данные для заключения трудового договора с вами." - await bot.send_message( - new_employee_id, - welcome_message, - ) - # Оповещаем админа и отправляем клавиатуру для выбора специальности - await notify_admin_about_new_employee(entry) +def get_sheet_data2(sheet_name): + """Получаем данные из листа по имени.""" + spreadsheet = gc.open(SPREADSHEET_NAME) + sheet = spreadsheet.worksheet(sheet_name) + return sheet.get_all_values() - except Exception as e: - logging.error(f"Ошибка при создании трудового договора: {e}") - await bot.send_message(ADMIN_ID, "Произошла ошибка при создании трудового договора.") - await asyncio.sleep(10) # Проверяем таблицу каждые 10 секунд +def send_message_plan(sheet_data, start_date, tg_id): + """Создаем план отправки сообщений.""" + messages_to_send = [] + for row in sheet_data[1:]: # Пропускаем заголовок + description = row[0] + link = row[2] + message = row[3] + days_offset = int(row[4]) # Дни с начала периода + send_time = row[5] + # Рассчитываем дату и время отправки + send_date = datetime.strptime(start_date, "%d.%m.%Y, %H:%M") + timedelta(days=days_offset) + send_datetime = datetime.strptime(f"{send_date.date()} {send_time}", "%Y-%m-%d %H:%M") + messages_to_send.append({ + "datetime": send_datetime, + "tg_id": tg_id, + "message": f"{message}\n{link}", + "description": description + }) + return messages_to_send +async def send_messages(bot, messages_to_send, sheet_name): + """Отправляем сообщения и записываем время прочтения.""" + spreadsheet = gc.open(SPREADSHEET_NAME) + sheet = spreadsheet.worksheet(sheet_name) + for msg in messages_to_send: + # Ожидание времени отправки + now = datetime.now() + if now < msg["datetime"]: + await asyncio.sleep((msg["datetime"] - now).total_seconds()) + # Отправляем сообщение + await bot.send_message(msg["tg_id"], msg["message"]) + # Записываем время прочтения + cell = sheet.find(msg["description"]) # Ищем описание в столбце A + row = cell.row + col = sheet.row_values(1).index(f"{msg['tg_id']}") + 1 # Столбец по ID + sheet.update_cell(row, col, now.strftime("%d.%m.%Y %H:%M")) +@dp.message_handler(commands=['rassil']) +async def start_handler(message: Message): + """Обрабатываем команду /start.""" + changes = load_changes2() + for sheet_name, employees in changes.items(): + for employee in employees: + full_name = employee[0] + tg_id = int(employee[13]) # ID Telegram + start_date = employee[14] # Дата начала + sheet_data = get_sheet_data2(sheet_name) -# Функция отправки сообщения о прохождении инструктажа -async def send_fire_safety_instructions(employee_id, full_name, employee_data): - message_text = f""" -{full_name}, добрый день. Вы приглашены на корпоративный канал Клиники в Telegram. В закрепленном сообщении на этом канале Вы сможете ознакомиться с такими разделами: + # Создаем план отправки сообщений + messages_to_send = send_message_plan(sheet_data, start_date, tg_id) -👉[Наши сотрудники](https://t.me/c/1414064442/5) - актуальный список всех сотрудников Клиники; -👉[Контакты сотрудников](https://t.me/c/1414064442/39) - номера телефонов сотрудников для скачивания в телефонную книгу; -👉[История клиники](https://t.me/c/1414064442/6) -👉[Структура рабочих чатов](https://t.me/c/1414064442/10) -👉[Инструктаж по пожарной безопасности в Клинике ухо, горло, нос](https://disk.yandex.ru/i/i1k41Z2SznfpOA) -👉[Обратная связь](https://forms.gle/Dfjrb8K1NzzjmW5j7) - оставить предложение, пожелание или задать вопрос руководству (анонимно). + # Отправляем сообщения + await send_messages(bot, messages_to_send, sheet_name) -**ВАЖНО:** -В разделе [Инструктаж по пожарной безопасности в Клинике ухо, горло, нос](https://disk.yandex.ru/i/i1k41Z2SznfpOA) Вам необходимо изучить материалы по Пожарной безопасности, уделить особое внимание теме - порядок действий и по каким номерам звонить в случае пожароопасной ситуации. -После этого пройти тестирование по данной теме (21 вопрос - зачет 70% правильных ответов): -👉[Тестирование по пожарной безопасности](https://forms.gle/VLEx2Gf1h8grpXXu5) -**Срок обучения и прохождения тестирования** - до начала выполнения трудовой функции! -Спасибо! - -С уважением, -Жуланова Наталья Александровна, -помощник генерального директора ООО "Клиника ухо, горло, нос им. проф. Е.Н.Оленевой" (г. Пермь) -📞 +7 (902) 64-54-648 -""" - try: - # Отправка сообщения сотруднику - await bot.send_message(employee_id, message_text, parse_mode="Markdown") - logging.info(f"Сообщение о пожарной безопасности отправлено {full_name}.") +# Известные сотрудники, чтобы избежать повторной обработки +known_employees = set() +def load_changes2(): + """Загружает изменения из файла changes.json.""" + try: + with open(r'C:\Users\ilyac\PycharmProjects\Bot_for_clinic\sheets_backup\changes.json', 'r', encoding='utf-8') as file: + data = json.load(file) + return data except Exception as e: - logging.error(f"Ошибка при отправке инструктажа или документа: {e}") - await bot.send_message(ADMIN_ID, "Произошла ошибка при отправке инструктажа или документа.") + logging.error(f"Ошибка при чтении файла changes.json: {e}") + return {} -# Обработчик нажатия на кнопки выбора специальности - -@dp.message_handler(lambda message: message.text in specialty_chat_links.keys(), chat_type=types.ChatType.PRIVATE) -async def handle_specialty_selection(message: types.Message): - selected_specialty = message.text - data = sheet.get_all_values() - last_employee_row = len(data) - - if last_employee_row < 2: - await message.answer("В таблице пока нет сотрудников для назначения специальности.") - return - - new_employee_id = data[last_employee_row - 1][13] - full_name = data[last_employee_row - 1][0] - - if not new_employee_id: - await message.answer("Не удалось найти Telegram ID сотрудника в таблице.") - return - +def find_employee_in_sheet(full_name): + """Находит сотрудника в Google Таблице по ФИО.""" try: - sheet.update_cell(last_employee_row, 16, selected_specialty) - await message.answer(f"Специальность сотрудника обновлена на: {selected_specialty}") - - chat_invite_link = specialty_chat_links.get(selected_specialty) - if chat_invite_link: - await bot.send_message( - new_employee_id, - f"Поздравляем! Вы были добавлены в нашу команду как {selected_specialty}. Вот ссылка на вашу беседу: {chat_invite_link}" - ) - await message.answer(f"Ссылка на беседу отправлена сотруднику.") - - # Отправка сообщения о прохождении инструктажа - await send_fire_safety_instructions(new_employee_id, full_name, data[last_employee_row - 1]) - + result = sheets_service.spreadsheets().values().get( + spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME + ).execute() + values = result.get('values', []) + + for row in values: + if row and row[0] == full_name: + return row # Возвращаем строку с данными сотрудника + return None except Exception as e: - await message.answer(f"Ошибка при обновлении таблицы: {e}") - + logging.error(f"Ошибка при поиске сотрудника в Google Таблице: {e}") + return None -# Функция для генерации клавиатуры с кнопками типа сотрудника -def create_employee_keyboard(): - keyboard = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False) - button_doctors = KeyboardButton("Врачи") - button_nurses = KeyboardButton("Медсёстры") - button_orderlies = KeyboardButton("Санитарки") - button_admins = KeyboardButton("Администраторы") - button_operators = KeyboardButton("Операторы КЦ") - button_aap = KeyboardButton("АУП") +def create_contract(employee_data): + """Создаёт трудовой договор на основе данных сотрудника.""" + try: + file_metadata = { + 'name': f"ТД_{employee_data[0]}_{datetime.now().strftime('%Y%m%d%H%M%S')}", + 'mimeType': 'application/vnd.google-apps.document', + 'parents': ['1fyA5btnwCQC-juE40T-uLSVHVIB-I2Ny'] + } + copied_file = drive_service.files().copy( + fileId=TEMPLATE_DOC_ID, body=file_metadata + ).execute() + document_id = copied_file['id'] + + replacements = { + "{{ФИО}}": employee_data[0], + "{{Серия паспорта}}": employee_data[3], + "{{Номер паспорта}}": employee_data[4], + "{{Кем выдан}}": employee_data[5], + "{{Дата выдачи}}": employee_data[6], + "{{Адрес}}": employee_data[8], + "{{Дата рождения}}": employee_data[12], + "{{ИНН}}": employee_data[11], + "{{СНИЛС}}": employee_data[10], + } + + requests = [{"replaceAllText": { + "containsText": {"text": key, "matchCase": True}, + "replaceText": value + }} for key, value in replacements.items()] + + docs_service.documents().batchUpdate( + documentId=document_id, body={'requests': requests} + ).execute() + + return f"https://docs.google.com/document/d/{document_id}/edit" + except Exception as e: + logging.error(f"Ошибка при создании трудового договора: {e}") + return None - keyboard.add(button_doctors, button_nurses) - keyboard.add(button_orderlies, button_admins) - keyboard.add(button_operators, button_aap) - return keyboard +async def process_changes(): + """Обрабатывает изменения из файла changes.json.""" + print('я тут') + while True: + changes = load_changes() + for sheet_name, entries in changes.items(): + for entry in entries: + full_name = entry[0] + if full_name in known_employees: + continue # Пропускаем уже обработанных сотрудников + + employee_data = find_employee_in_sheet(full_name) + if employee_data: + contract_url = create_contract(employee_data) + if contract_url: + # Уведомляем администраторов + for admin_id in ADMIN_IDS: + await bot.send_message( + admin_id, + f"Новый сотрудник: {full_name}\n" + f"Трудовой договор: {contract_url}" + ) + + known_employees.add(full_name) + await asyncio.sleep(10) # Проверяем изменения каждые 10 секунд + + + + + + + + + + + + + +def is_admin(user_id): + ADMIN_IDS = [5522111920, 766945900] # Список ID администраторов + return user_id in ADMIN_IDS + +class GroupMessageState(StatesGroup): + waiting_for_group_names1 = State() + waiting_for_message_text = State() + waiting_for_user_name = State() + waiting_for_group_names = State() + waiting_for_user_fio = State() + + + + +# # Словарь для хранения сотрудников, которых уже обработали +# known_employees = set() +# +# def create_contract_google(employee_data): +# # Копирование шаблона +# file_metadata = { +# 'name': f"ТД_{employee_data[0]}_{datetime.now().strftime('%Y%m%d%H%M%S')}", +# 'mimeType': 'application/vnd.google-apps.document', +# 'parents': ['1fyA5btnwCQC-juE40T-uLSVHVIB-I2Ny'] +# } +# copied_file = drive_service.files().copy( +# fileId=TEMPLATE_DOC_ID, body=file_metadata).execute() +# document_id = copied_file['id'] +# +# # Замены текста в шаблоне +# replacements = { +# "{{ФИО}}": employee_data[0], +# "{{Серия паспорта}}": employee_data[3], +# "{{Номер паспорта}}": employee_data[4], +# "{{Кем выдан}}": employee_data[5], +# "{{Дата выдачи}}": employee_data[6], +# "{{Адрес}}": employee_data[8], +# "{{Дата рождения}}": employee_data[12], +# "{{ИНН}}": employee_data[11], +# "{{СНИЛС}}": employee_data[10], +# } +# +# requests = [{"replaceAllText": { +# "containsText": {"text": key, "matchCase": True}, +# "replaceText": value +# }} for key, value in replacements.items()] +# +# docs_service.documents().batchUpdate( +# documentId=document_id, body={'requests': requests}).execute() +# +# return f"https://docs.google.com/document/d/{document_id}/edit" + + + + +# +# # Функция для отправки сообщения о новом сотруднике с клавиатурой для выбора специальности +# async def notify_admin_about_new_employee(entry): +# full_name = entry[0] if entry else "Без имени" +# new_employee_id = entry[13] if len(entry) > 13 else None +# +# if new_employee_id: +# # Отправляем уведомление админу о новом сотруднике с клавишами выбора специальности +# keyboard = create_employee_keyboard() +# +# await bot.send_message( +# ADMIN_ID, +# f"Зарегистрирован новый сотрудник: {full_name}\nTelegram ID сотрудника: {new_employee_id}", +# reply_markup=keyboard +# ) +# else: +# logging.error("Не удалось найти Telegram ID сотрудника.") +# +# +# # Функция для проверки новых сотрудников +# async def check_for_new_entries(): +# sheet = service.spreadsheets() +# +# while True: +# try: +# result = sheet.values().get(spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME).execute() +# values = result.get('values', []) +# except Exception as e: +# logging.error(f"Ошибка при чтении таблицы: {e}") +# await asyncio.sleep(30) # Ждем перед следующей попыткой +# continue +# +# # Проверяем каждую запись на наличие нового сотрудника +# for entry in values: +# full_name = entry[0] if entry else "Без имени" +# new_employee_id = entry[13] if len(entry) > 13 else None # Telegram ID сотрудника +# +# if full_name and full_name not in known_employees: +# known_employees.add(full_name) +# +# # Генерация трудового договора +# try: +# contract_url = create_contract_google(entry) +# +# # Уведомление для администратора +# await bot.send_message( +# ADMIN_ID, +# f"Зарегистрирован новый сотрудник: {full_name}\nТрудовой договор: {contract_url}", +# ) +# +# # Уведомление для сотрудника +# if new_employee_id: +# welcome_message = f"Большое спасибо! Мы получили данные для заключения трудового договора с вами." +# await bot.send_message( +# new_employee_id, +# welcome_message, +# ) +# +# # Оповещаем админа и отправляем клавиатуру для выбора специальности +# await notify_admin_about_new_employee(entry) +# +# except Exception as e: +# logging.error(f"Ошибка при создании трудового договора: {e}") +# await bot.send_message(ADMIN_ID, "Произошла ошибка при создании трудового договора.") +# +# await asyncio.sleep(10) # Проверяем таблицу каждые 10 секунд +# +# +# +# +# +# +# +# +# +# # Функция отправки сообщения о прохождении инструктажа +# async def send_fire_safety_instructions(employee_id, full_name, employee_data): +# message_text = f""" +# {full_name}, добрый день. Вы приглашены на корпоративный канал Клиники в Telegram. В закрепленном сообщении на этом канале Вы сможете ознакомиться с такими разделами: +# +# 👉[Наши сотрудники](https://t.me/c/1414064442/5) - актуальный список всех сотрудников Клиники; +# 👉[Контакты сотрудников](https://t.me/c/1414064442/39) - номера телефонов сотрудников для скачивания в телефонную книгу; +# 👉[История клиники](https://t.me/c/1414064442/6) +# 👉[Структура рабочих чатов](https://t.me/c/1414064442/10) +# 👉[Инструктаж по пожарной безопасности в Клинике ухо, горло, нос](https://disk.yandex.ru/i/i1k41Z2SznfpOA) +# 👉[Обратная связь](https://forms.gle/Dfjrb8K1NzzjmW5j7) - оставить предложение, пожелание или задать вопрос руководству (анонимно). +# +# **ВАЖНО:** +# В разделе [Инструктаж по пожарной безопасности в Клинике ухо, горло, нос](https://disk.yandex.ru/i/i1k41Z2SznfpOA) Вам необходимо изучить материалы по Пожарной безопасности, уделить особое внимание теме - порядок действий и по каким номерам звонить в случае пожароопасной ситуации. +# +# После этого пройти тестирование по данной теме (21 вопрос - зачет 70% правильных ответов): +# 👉[Тестирование по пожарной безопасности](https://forms.gle/VLEx2Gf1h8grpXXu5) +# +# **Срок обучения и прохождения тестирования** - до начала выполнения трудовой функции! +# +# Спасибо! +# +# С уважением, +# Жуланова Наталья Александровна, +# помощник генерального директора ООО "Клиника ухо, горло, нос им. проф. Е.Н.Оленевой" (г. Пермь) +# 📞 +7 (902) 64-54-648 +# """ +# try: +# # Отправка сообщения сотруднику +# await bot.send_message(employee_id, message_text, parse_mode="Markdown") +# logging.info(f"Сообщение о пожарной безопасности отправлено {full_name}.") +# +# +# except Exception as e: +# logging.error(f"Ошибка при отправке инструктажа или документа: {e}") +# await bot.send_message(ADMIN_ID, "Произошла ошибка при отправке инструктажа или документа.") +# +# +# # Обработчик нажатия на кнопки выбора специальности +# +# @dp.message_handler(lambda message: message.text in specialty_chat_links.keys(), chat_type=types.ChatType.PRIVATE) +# async def handle_specialty_selection(message: types.Message): +# selected_specialty = message.text +# data = sheet.get_all_values() +# last_employee_row = len(data) +# +# if last_employee_row < 2: +# await message.answer("В таблице пока нет сотрудников для назначения специальности.") +# return +# +# new_employee_id = data[last_employee_row - 1][13] +# full_name = data[last_employee_row - 1][0] +# +# if not new_employee_id: +# await message.answer("Не удалось найти Telegram ID сотрудника в таблице.") +# return +# +# try: +# sheet.update_cell(last_employee_row, 16, selected_specialty) +# await message.answer(f"Специальность сотрудника обновлена на: {selected_specialty}") +# +# chat_invite_link = specialty_chat_links.get(selected_specialty) +# if chat_invite_link: +# await bot.send_message( +# new_employee_id, +# f"Поздравляем! Вы были добавлены в нашу команду как {selected_specialty}. Вот ссылка на вашу беседу: {chat_invite_link}" +# ) +# await message.answer(f"Ссылка на беседу отправлена сотруднику.") +# +# # Отправка сообщения о прохождении инструктажа +# await send_fire_safety_instructions(new_employee_id, full_name, data[last_employee_row - 1]) +# +# except Exception as e: +# await message.answer(f"Ошибка при обновлении таблицы: {e}") +# +# +# +# # Функция для генерации клавиатуры с кнопками типа сотрудника +# def create_employee_keyboard(): +# keyboard = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False) +# button_doctors = KeyboardButton("Врачи") +# button_nurses = KeyboardButton("Медсёстры") +# button_orderlies = KeyboardButton("Санитарки") +# button_admins = KeyboardButton("Администраторы") +# button_operators = KeyboardButton("Операторы КЦ") +# button_aap = KeyboardButton("АУП") +# +# keyboard.add(button_doctors, button_nurses) +# keyboard.add(button_orderlies, button_admins) +# keyboard.add(button_operators, button_aap) +# +# return keyboard # Обработчик команды /start @@ -282,7 +511,7 @@ async def send_welcome(message: types.Message): user_id = message.from_user.id # Отправка фото - photo_path = r'D:\Users\Maxim\PycharmProjectsbot\Bot_for_clinic\start_foto.png' + photo_path = r'start_foto.png' await bot.send_photo(user_id, types.InputFile(photo_path)) # Отправка текста с кнопкой @@ -435,8 +664,346 @@ def get_consent_keyboard(): keyboard.add(consent_button, deny_button) return keyboard + + + +# Получение данных из Google Таблицы +def get_sheet_data(sheet_name): + range_name = f"{sheet_name}!B1:C3" # Диапазон для строки с chat_id и группами + result = service.spreadsheets().values().get( + spreadsheetId=SPREADSHEET_ID, + range=range_name + ).execute() + return result.get('values', []) + + +# Получение данных из Google Таблицы +def get_sheet_data1(sheet_name): + range_name = f"{sheet_name}!A1:P100" # Диапазон для строки с chat_id и группами + result = service.spreadsheets().values().get( + spreadsheetId=SPREADSHEET_ID, + range=range_name + ).execute() + return result.get('values', []) + +# Команда для рассылки сообщений в группы +@dp.message_handler(commands=['send_to_groups'], chat_type=types.ChatType.PRIVATE) +async def send_to_groups(message: types.Message): + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + groups_data = get_sheet_data("Лист2") + if len(groups_data) < 2: + await message.reply("Данные о группах отсутствуют.") + return + + await message.reply("Введите текст для рассылки в группы:") + + @dp.message_handler() + async def broadcast_groups(msg: types.Message): + text = msg.text + groups_data = get_sheet_data("Лист2") # Укажите название листа в Google Sheets + if not groups_data or len(groups_data) < 2: # Проверяем наличие данных + await msg.reply("Данные о группах отсутствуют или некорректны.") + return + + # Первая строка — chat_id (B1, C1, ...) + chat_ids = groups_data[0] + # Вторая строка — названия групп (B2, C2, ...) + group_names = groups_data[1] + + for chat_id, group_name in zip(chat_ids, group_names): + print(f"Chat ID: {chat_id}, Group: {group_name}") + try: + await bot.send_message(chat_id, text) + except Exception as e: + error_message = ( + f"Не удалось отправить сообщение в группу {group_name} " + f"(Chat ID: {chat_id}): {e}" + ) + print(error_message) # Логируем ошибку + await bot.send_message(ADMIN_ID, error_message) + + await msg.reply("Рассылка в группы завершена.") + + +# Команда для рассылки сообщений сотрудникам +@dp.message_handler(commands=['send_to_employees']) +async def send_to_employees(message: types.Message): + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + employees_data = get_sheet_data1("Лист1") + if len(employees_data) < 2: + await message.reply("Данные о сотрудниках отсутствуют.") + return + + await message.reply("Введите текст для рассылки сотрудникам:") + + @dp.message_handler() + async def broadcast_employees(msg: types.Message): + text = msg.text + for row in employees_data[1:]: + if len(row) >= 14: # Проверяем наличие Telegram ID + telegram_id = row[13] + print(telegram_id) + try: + await bot.send_message(telegram_id, text) + except Exception as e: + await bot.send_message(ADMIN_ID, f"Не удалось отправить сообщение сотруднику {row[0]}: {e}") + await msg.reply("Рассылка сотрудникам завершена.") + + +@dp.message_handler(commands=['send_by_fio'], chat_type=types.ChatType.PRIVATE) +async def send_by_fio(message: types.Message, state: FSMContext): # Добавляем state + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + employees_data = get_sheet_data1("Лист1") + if len(employees_data) < 2: + await message.reply("Данные о сотрудниках отсутствуют.") + return + + await message.reply("Введите список ФИО сотрудников через запятую (например, Иванов Иван Иванович, Петров Петр Петрович):") + await state.set_state("waiting_for_fio_list") + + + +@dp.message_handler(state="waiting_for_fio_list") +async def process_fio_list(message: types.Message, state: FSMContext): + fio_list = [fio.strip() for fio in message.text.split(",")] + employees_data = get_sheet_data1("Лист1") + + # Поиск сотрудников по ФИО + found_employees = [] + not_found_employees = [] + + for fio in fio_list: + target_row = next((row for row in employees_data[1:] if row[0] == fio), None) + if target_row and len(target_row) >= 14: # Проверяем наличие Telegram ID + found_employees.append((fio, target_row[13])) # Добавляем (ФИО, Telegram ID) + else: + not_found_employees.append(fio) + + # Сохраняем найденных сотрудников в состояние + await state.update_data(found_employees=found_employees) + if not_found_employees: + await message.reply( + f"Следующие сотрудники не найдены или у них отсутствует Telegram ID: {', '.join(not_found_employees)}" + ) + await message.reply("Введите текст сообщения для отправки сотрудникам:") + await state.set_state("waiting_for_message_text") + + +@dp.message_handler(state="waiting_for_message_text") +async def send_messages_to_employees(message: types.Message, state: FSMContext): + user_data = await state.get_data() + found_employees = user_data.get("found_employees", []) + text = message.text.strip() + + if not found_employees: + await message.reply("Нет сотрудников для отправки сообщений.") + await state.finish() + return + + for fio, telegram_id in found_employees: + try: + await bot.send_message(telegram_id, text) + await message.reply(f"Сообщение успешно отправлено сотруднику: {fio}") + except Exception as e: + await message.reply(f"Не удалось отправить сообщение сотруднику {fio}: {e}") + + await message.reply("Рассылка завершена.") + await state.finish() + + +@dp.message_handler(commands=['send_to_group'], chat_type=types.ChatType.PRIVATE) +async def send_to_group(message: types.Message, state: FSMContext): + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + await message.reply("Введите названия групп через запятую (например, Группа1, Группа2):") + await state.set_state(GroupMessageState.waiting_for_group_names1) + + +@dp.message_handler(state=GroupMessageState.waiting_for_group_names1) +async def process_group_names(message: types.Message, state: FSMContext): + group_names = [group.strip() for group in message.text.split(',') if group.strip()] + + # Читаем данные из Лист2 + sheet_data = get_sheet_data1("Лист2") # Подключите функцию чтения данных + + if len(sheet_data) < 3 or len(sheet_data[0]) != len(sheet_data[1]): + await message.reply("Ошибка в данных Google Таблицы. Проверьте формат.") + return + + # Создаём словарь {название группы: chat_id} + group_dict = {sheet_data[1][i]: sheet_data[0][i] for i in range(len(sheet_data[0]))} + + # Ищем chat_id для введённых названий групп + group_ids = [] + invalid_groups = [] + for group in group_names: + if group in group_dict: + group_ids.append(group_dict[group]) + else: + invalid_groups.append(group) + + if not group_ids: + await message.reply("Указанные группы не найдены в таблице.") + return + + # Сохраняем список найденных chat_id в состояние + await state.update_data(group_ids=group_ids, invalid_groups=invalid_groups) + await message.reply( + f"Группы найдены: {', '.join(group_names)}.\n\n" + "Теперь введите текст сообщения для отправки:" + ) + await state.set_state(GroupMessageState.waiting_for_message_text) + + +@dp.message_handler(state=GroupMessageState.waiting_for_message_text) +async def process_group_message(message: types.Message, state: FSMContext): + text = message.text.strip() + data = await state.get_data() + group_ids = data.get('group_ids', []) + invalid_groups = data.get('invalid_groups', []) + + for chat_id in group_ids: + try: + await bot.send_message(chat_id, text) + except Exception as e: + await message.reply(f"Не удалось отправить сообщение в группу {chat_id}: {e}") + + if invalid_groups: + await message.reply(f"Следующие группы не найдены в таблице: {', '.join(invalid_groups)}") + + await message.reply("Сообщение успешно отправлено в найденные группы.") + await state.finish() + + + +@dp.message_handler(commands=['add_to_groups'], chat_type=types.ChatType.PRIVATE) +async def add_to_groups(message: types.Message, state: FSMContext): + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + await message.reply("Введите названия групп через запятую (например, Группа1, Группа2):") + await state.set_state(GroupMessageState.waiting_for_group_names) + + +@dp.message_handler(state=GroupMessageState.waiting_for_group_names) +async def process_group_names(message: types.Message, state: FSMContext): + group_names = [group.strip() for group in message.text.split(',') if group.strip()] + + # Читаем данные из Лист2 + sheet_data = get_sheet_data("Лист2") + + if len(sheet_data) < 3 or len(sheet_data[0]) != len(sheet_data[1]): + await message.reply("Ошибка в данных Google Таблицы. Проверьте формат.") + return + + # Создаём словарь {название группы: chat_id} + group_dict = {sheet_data[1][i]: sheet_data[0][i] for i in range(len(sheet_data[0]))} + + # Ищем chat_id для введённых названий групп + group_ids = [] + invalid_groups = [] + for group in group_names: + if group in group_dict: + group_ids.append(group_dict[group]) + else: + invalid_groups.append(group) + + if not group_ids: + await message.reply("Указанные группы не найдены в таблице.") + return + + # Сохраняем список найденных chat_id в состояние + await state.update_data(group_ids=group_ids, invalid_groups=invalid_groups) + await message.reply( + f"Группы найдены: {', '.join(group_names)}.\n\n" + "Теперь введите ФИО пользователя, которого нужно добавить в группы:" + ) + await state.set_state(GroupMessageState.waiting_for_user_fio) + + +@dp.message_handler(state=GroupMessageState.waiting_for_user_fio) +async def process_user_fio(message: types.Message, state: FSMContext): + user_fio = message.text.strip() + + # Читаем данные из Лист1 для поиска пользователя + user_data = get_sheet_data1("Лист1") + + # Создаём словарь {ФИО: Telegram ID} + user_dict = {row[0]: row[13] for row in user_data if len(row) > 13 and row[0] and row[13]} + + if user_fio not in user_dict: + await message.reply("Пользователь с указанным ФИО не найден в таблице.") + return + + user_id = user_dict[user_fio] + data = await state.get_data() + group_ids = data.get('group_ids', []) + invalid_groups = data.get('invalid_groups', []) + + # Добавляем пользователя в группы и отправляем ссылки на приглашение + for chat_id in group_ids: + try: + invite_link = await bot.create_chat_invite_link(chat_id) + await bot.send_message(user_id, f"Вас приглашают в группу: {invite_link.invite_link}") + except Exception as e: + await message.reply(f"Не удалось добавить пользователя в группу {chat_id}: {e}") + + if invalid_groups: + await message.reply(f"Следующие группы не найдены в таблице: {', '.join(invalid_groups)}") + + await message.reply("Пользователь успешно добавлен в найденные группы и получил ссылки на приглашения.") + await state.finish() + + +# Команда /update_sheets +@dp.message_handler(commands=["update_sheets"]) +async def update_sheets_command(message: types.Message): + if not is_admin(message.from_user.id): + await message.reply("Эта команда доступна только администратору.") + return + + await message.reply("Процесс обновления данных начат...") + try: + result = subprocess.run( + [ + r"C:\Users\ilyac\PycharmProjects\Bot_for_clinic\.venv\Scripts\python.exe", + r"C:\Users\ilyac\PycharmProjects\Bot_for_clinic\backup_google_sheets.py" + ], + capture_output=True, + text=True, + encoding="utf-8", # Указываем кодировку + check=True, + ) + + if result.returncode == 0: + await message.reply(f"Обновление данных завершено успешно.") + else: + await message.reply(f"Обновление завершилось с ошибками:\n{result.stderr}") + + except subprocess.CalledProcessError as e: + await message.reply(f"Ошибка выполнения скрипта: {e.stderr}") + + except Exception as e: + await message.reply(f"Произошла ошибка: {e}") + + + + + if __name__ == '__main__': - # Запускаем отслеживание таблицы и бота loop = asyncio.get_event_loop() - loop.create_task(check_for_new_entries()) - executor.start_polling(dp, skip_updates=True) + loop.create_task(process_changes()) + from aiogram import executor + executor.start_polling(dp, skip_updates=True) \ No newline at end of file diff --git a/sheets_backup/changes.json b/sheets_backup/changes.json new file mode 100644 index 0000000..e69de29 diff --git a/sheets_backup/current_data.json b/sheets_backup/current_data.json new file mode 100644 index 0000000..3d8df61 --- /dev/null +++ b/sheets_backup/current_data.json @@ -0,0 +1,2401 @@ +{ + "Информация о сотрудниках::Лист1": [ + [ + "ФИО", + "Телефон", + "Email", + "Серия паспорта", + "Номер паспорта", + "Кем выдан", + "Дата выдачи", + "Код подразделения", + "Адрес", + "Адрес проживания", + "СНИЛС", + "ИНН", + "Дата рождения", + "Telegram ID", + "Время отправки", + "Группы", + "Должность" + ], + [ + "Жуланова Наталья Александровна", + "+7(902)645-46-48", + "CUGN-adm@yandex.ru", + "57 22", + " 292963", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2022-10-25", + "590-037", + "ПЕРМСКИЙ КРАЙ, Г.КУНГУР, УЛ. РОССИЙСКАЯ, Д.3, КВ.2", + "ПЕРМСКИЙ КРАЙ, С.ФРОЛЫ, УЛ. ВЕСЕННЯЯ, Д4, КВ.47", + "035-219-171-29", + "123456789456", + "1977-09-07", + "5522111920", + "05.12.2024, 17:22", + "АУП" + ], + [ + "Чистогов Максим Дмитриевич", + "+7(967)905-19-59", + "chistogovwork@gmail.com", + "45 67", + " 891247", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ИНДУСТРИАЛЬНОМ РАЙОНЕ Г. ПЕРМИ", + "2014-02-11", + "590-003", + "П,1,2,4,5", + "П,1,2,4,5", + "345-676-543-24", + "654567876543", + "1995-02-11", + "358303772", + "04.12.2024, 17:00", + "АУП" + ], + [ + "Разорвин Алексей Михайлович", + "+7(922)241-97-77", + "arazor72@gmail.com", + "57 17", + " 701041", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2018-02-28", + "590-006", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ. ЦЕЛИННАЯ, ДОМ 17, КВАРТИРА 22", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ. ЦЕЛИННАЯ, ДОМ 17, КВАРТИРА 22", + "051-456-840-51", + "590604343072", + "1972-12-02", + "59915300", + "11.12.2024, 18:09", + "АУП" + ], + [ + "Кузнецова Наталья Александровна", + "+7(953)242-81-76", + "natalia.1.kuznecova@gmail.com", + "58 04", + " 795736", + "ОВД ПЕЧОРСКОГО РАЙОНА ПСКОВСКОЙ ОБЛ.", + "2005-10-05", + "602-017", + "ПСКОВСКАЯ ОБЛАСТЬ, ГОРОД ПЕЧОРЫ, УЛИЦА ЭНЕРГЕТИКОВ, ДОМ 2 КВ 4", + "ПСКОВСКАЯ ОБЛАСТЬ, ПСКОВСКИЙ РАЙОН, ДЕРЕВНЯ СОЛОВЬИ, ДОМ 9 КВ 115", + "117-926-020-57", + "601501843169", + "1980-03-13", + "1822927560", + "11.12.2024, 18:22", + "Операторы КЦ" + ], + [ + "Чистогов Илья Дмитриевич", + "+7(967)905-19-54", + "ilyachistogov@gmail.com", + "65 46", + " 755665", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2023-09-26", + "590-003", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. СОВЕТСКОЙ АРМИИ, ДОМ 72/2", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. СОВЕТСКОЙ АРМИИ, ДОМ 72/2", + "754-777-727-28", + "727383838373", + "2003-09-24", + "766945900", + "25.11.2024, 13:15", + "Медсёстры" + ], + [ + "Рябухина Анастасия Викторовна ", + "+7(952)657-58-67", + "a.riabukhina@mail.ru", + "57 23", + " 420784", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2023-08-25", + "590-030", + "ПЕРМСКИЙ КРАЙ, ГОРОД ЛЫСЬВА, СМЫШЛЯЕВА 30, КВАРТИРА 26", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, БУЛЬВАР ГАГАРИНА 72А, КОМНАТА 328", + "159-893-903-45", + "591807853465", + "2003-06-23", + "765836357", + "27.12.2024, 17:26", + "Медсёстры" + ], + [ + "Баканова Диана Айдаровна", + "+7(919)443-13-46", + "Diana911Mals@yandex.com", + "15 23", + " 672267", + "УМВД РОССИИ ПО БРЯНСКОЙ ОБЛ.", + "2023-10-02", + "320-006", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ УЛ, КАРБЫШЕВА Д.47Б, КВ 216", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ УЛ, КАРБЫШЕВА Д.47Б, КВ 216", + "154-258-825-78", + "021402862400", + "2000-12-05", + "1079398077", + "14.01.2025, 14:00", + "Операторы КЦ" + ], + [ + "Давлятшина Олеся Алексеевна", + "+7(919)481-35-91", + "Razorvina-olesya@mail.ru", + "57 11", + " 887154", + "ТП УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В УИНСКОМ РАЙОНЕ", + "2012-09-03", + "590-069", + "ПЕРМСКИЙ КРАЙ, ПЕРМСКИЙ РАЙОН, КУЛТАЕВСКОЕ С/П, КВАРТАЛ ПРИДОРОЖНЫЙ, УЛ. БИРЮЗОВАЯ 26А", + "ПЕРМСКИЙ КРАЙ, ПЕРМСКИЙ РАЙОН, КУЛТАЕВСКОЕ С/П, КВАРТАЛ ПРИДОРОЖНЫЙ, УЛ. БИРЮЗОВАЯ 26А", + "152-842-197-66", + "595300795580", + "1991-12-22", + "360702790", + "16.01.2025, 16:28", + "Врачи" + ], + [ + "Лобанова Ирина Юрьевна ", + "+7(982)239-61-08", + "miss.lobanova89@yandex.ru", + "57 10", + " 609452", + "ОТДЕЛЕНИЕМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ИЛЬИНСКОМ РАЙОНЕ", + "2010-08-25", + "590-026", + "ПЕРМСКИЙ КРАЙ, ИЛЬИНСКИЙ РАЙОН, ГОРОД ЧЕРМОЗ, УЛИЦА МОЛОДЕЖНАЯ, ДОМ 1, КВАРТИРА 2", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛИЦА 3 ЗАПРУДСКАЯ, 97", + "161-859-192-95", + "590772430753", + "1989-11-14", + "1800951414", + "16.01.2025, 17:12", + "Врачи" + ], + [ + "Портяная Анна Григорьевна", + "+7(903)855-31-54", + "anjuntka@list.ru", + "20 09", + " 142497", + "ОТДЕЛЕНИЕМ УФМС РОССИИ ПО ВОРОНЕЖСКОЙ ОБЛ. В КАЛАЧЕЕВСКОМ РАЙОНЕ", + "2009-09-08", + "360-018", + "ВОРОНЕЖСКАЯ ОБЛАСТЬ, КАЛАЧ,ЖЕЛЕЗНОДОРОЖНАЯ, 56", + "ВОРОНЕЖСКАЯ ОБЛАСТЬ, КАЛАЧ,ЖЕЛЕЗНОДОРОЖНАЯ, 56", + "124-569-704-73", + "361003554622", + "1987-03-11", + "1271069123", + "16.01.2025, 17:33", + "Операторы КЦ" + ], + [ + "Гарипова Анастасия Александровна ", + "+7(982)498-05-78", + "nastialashmanova@mail.ru", + "94 14", + " 414747", + "ОТДЕЛОМ УФМС РОССИИ ПО УДМУРТСКОЙ РЕСП. В Г. ВОТКИНСКЕ", + "2014-04-21", + "180-007", + "ПЕРМСКИЙ КРАЙ,ПЕРМЬ,ПУШКАРСКАЯ,69,49", + "ПЕРМСКИЙ КРАЙ,ПЕРМЬ,ПУШКАРСКАЯ,69,49,Я", + "140-302-803-94", + "182809106287", + "1991-09-26", + "5207180046", + "16.01.2025, 18:05", + "Медсёстры" + ], + [ + "Хмелёва Марина Александровна", + "+7(912)781-14-92", + "marina_guseva1994@mail.ru", + "57 21", + " 006094", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2020-09-19", + "590-007", + "КРАЙ ПЕРМСКИЙ, Г. ПЕРМЬ, УЛ.КАРБЫШЕВА, Д.49А, КВ.343", + "КРАЙ ПЕРМСКИЙ, Г.ПЕРМЬ, УЛ.КАРБЫШЕВА, Д.49А, КВ.343", + "154-210-674-29", + "182810934253", + "1994-07-26", + "315711006", + "16.01.2025, 18:20", + "Медсёстры" + ], + [ + "Рякина Антонина Сергеевна", + "+7(999)123-99-69", + "madam.riakina@yandex.ru", + "57 04", + " 533588", + "ОВД КИРОВСКОГО РАЙОНА Г. ПЕРМИ", + "2004-10-21", + "592-003", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ЛИПАТОВА , 22, 252", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ЛИПАТОВА , 22, 252", + "065-406-697-73", + "590809877269", + "1981-05-03", + "1457178532", + "16.01.2025, 18:34", + "Операторы КЦ" + ], + [ + "Шарифуллина Аделя Ануровна", + "+7(917)756-93-06", + "adelausupova4@gmail.com", + "80 20", + " 195307", + "МВД ПО РЕСП. БАШКОРТОСТАН", + "2020-08-18", + "020-024", + "РБ, СТЕРЛИТАМАК, УЛ. ЛОМОНОСОВА, Д24, КВ.3", + "РБ, СТЕРЛИТАМАК, УЛ. ЛОМОНОСОВА, Д24, КВ.3", + "171-789-272-10", + "026826183513", + "1999-06-28", + "640192080", + "16.01.2025, 18:35", + "Операторы КЦ" + ], + [ + "Караваева Алёна Павловна ", + "+7(965)559-91-58", + "alena_kkaravaeva@mail.ru", + "57 18", + " 714307", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2018-06-26", + "590-022", + "ПЕРМЬ, НАРОДОВОЛЬЧЕСКАЯ, 4 ,29", + "ПЕРМЬ, НАРОДОВОЛЬЧЕСКАЯ, 4,29", + "145-107-495-44", + "591792312703", + "1995-11-06", + "1486322614", + "16.01.2025, 18:38", + "Операторы КЦ" + ], + [ + "Епишина Екатерина Николаевна ", + "+7(951)940-12-72", + "Katareoss@mail.ru", + "48 05", + " 143914", + "ПОЖВИНСКИМ ОМ ЮСЬВИНСКОГО РОВД КОМИ-ПЕРМЯЦКОГО АО", + "2006-08-14", + "813-003", + "ПЕРМСКИЙ, Д ПЕСЬЯНКА, УЛ. СТРОИТЕЛЕЙ 8,КВ 2", + "ПЕРМСКИЙ, Д ПЕСЬЯНКА, УЛ. СТРОИТЕЛЕЙ 8, КВ 2", + "083-577-695-17", + "810201189026", + "1985-12-23", + "1255362434", + "16.01.2025, 19:47", + "Медсёстры" + ], + [ + "Степура Арина Ильинична", + "+7(952)329-95-34", + "arina.karpova1998@mail.ru", + "57 24", + " 536024", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2024-07-25", + "590-005", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ВИЛЬВЕНСКАЯ,21,24", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ВИЛЬВЕНСКАЯ,21,24", + "182-477-569-08", + "590312056480", + "2004-04-21", + "776184754", + "16.01.2025, 20:57", + "Администраторы" + ], + [ + "Швец Ольга Анатольевна", + "+7(938)101-53-57", + "ENTclinicPerm@yandex.ru", + "57 22", + " 243851", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2022-07-13", + "590-005", + "ДНР, МАРИУПОЛЬ, ТРОИЦКАЯ, 77-9", + "ДНР, МАРИУПОЛЬ, ТРОИЦКАЯ, 77-9", + "215-377-340-58", + "590205668689", + "1987-06-18", + "805933948", + "16.01.2025, 21:46", + "АУП" + ], + [ + "Гузиль Екатерина Ивановна ", + "+7(950)440-46-24", + "Kataguzil8843@gmail.com", + "57 24", + " 500426", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2024-07-24", + "590-045", + "ПЕРМСКИЙ КРАЙ, Р-Н ЧЕРДЫНСКИЙ , РП.НЫРОБ , УЛ. УЖДАВИНИСА ,Д.20 , КВ. 18", + "ГОРОД ПЕРМЬ , УЛ. ЛУНАЧАРСКОГО, Д.51, КВ. 18 ", + "160-906-187-60", + "594102579787", + "2004-05-22", + "1070673345", + "16.01.2025, 22:22", + "Медсёстры" + ], + [ + "Генеральчук Людмила Владимировна ", + "+7(912)485-86-39", + "generalchuk@yandex.ru", + "57 19", + " 930471", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2019-10-30", + "590-006", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛ ЮРША, ДОМ 100 КВ 192", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛ ЮРША, ДОМ 100, КВ 192 ", + "053-642-966-69", + "590605572036", + "1974-10-18", + "612364835", + "16.01.2025, 22:28", + "Врачи" + ], + [ + "Суслонова Юлия Валерьевна ", + "+7(919)493-77-02", + "y.suslonova@mail.ru", + "57 15", + " 414219", + "ОТДЕЛЕНИЕМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ЛЕНИНСКОМ РАЙОНЕ Г. ПЕРМИ", + "2016-02-12", + "590-005", + "ПЕРМЬ,КУЙБЫШЕВА ,38,23", + "ПЕРМЬ,КУЙБЫШЕВА,38,23", + "033-162-193-12", + "595788626479", + "1971-01-25", + "445500211", + "16.01.2025, 22:31" + ], + [ + "Вятчанина Надежда Викторовна", + "+7(902)835-20-20", + "79028352020@yandex.ru", + "57 20", + " 991632", + "ОРДЖОНИКИДЗЕВСКИМ РОВД Г. ПЕРМИ", + "2020-06-16", + "592-006", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ,УЛИЦА ЛБОВА ,ДОМ 104", + "ПЕРМСКИЙ КРАЙ ,ГОРОД ПЕРМЬ,УЛИЦА ЛБОВА,104", + "048-356-553-82", + "590315261374", + "1975-05-22", + "5009594344", + "17.01.2025, 09:55" + ], + [ + "Акутина Алёна Владимировна ", + "+7(919)454-96-18", + "akutina.lor@gmail.com", + "57 21", + " 102463", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2021-05-20", + "590-006", + "ПЕРМЬ, СТАРЦЕВА,1,180", + "ПЕРМЬ, СТАРЦЕВА,1,180", + "150-593-545-63", + "165050585852", + "1993-04-23", + "1411363643", + "17.01.2025, 10:03" + ], + [ + "Захарова Вероника Юрьевна ", + "+7(952)643-59-83", + "zaharovaveronika1977@gmail.com", + "57 22", + " 243225", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2022-05-16", + "590-005", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, СОЛДАТОВА , 30Б, 449", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, СОЛДАТОВА, 30Б, 449", + "052-231-074-02", + "591402241753", + "1977-04-27", + "5018905731", + "17.01.2025, 10:12" + ], + [ + "Уткина Наталия Павловна", + "+7(912)989-93-77", + "u.nat@mail.ru", + "57 21", + " 126186", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2021-07-03", + "590-008", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ,УЛИЦА НИКОЛАЯ ОСТРОВСКОГО ДОМ 93Д,КВАРТИРА 92", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ,УЛИЦА ЖЕЛЯБОВА ДОМ 3,КВАРТИРА 10", + "053-642-844-60", + "590413992301", + "1976-06-14", + "681654351", + "17.01.2025, 10:53" + ], + [ + "Волкова Надежда Геннадьевна", + "+7(912)882-50-79", + "Nadezda_Volkova@mail.ru", + "57 14", + " 266001", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В СВЕРДЛОВСКОМ РАЙОНЕ Г. ПЕРМИ", + "2015-02-03", + "590-008", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛИЦА КОМСОМОЛЬСКИЙ ПР- КТ ДОМ 73 , КВ. 6. ", + "ПЕРМСКИЙ КРАЙ , ГОРОД ПЕРМЬ , УЛИЦА КОМСОМОЛЬСКИЙ ПРОСПЕКТ ДОМ 73, КВ. 6. ", + "045-538-634-71", + "590404735555", + "1970-01-23", + "665750671", + "17.01.2025, 12:12" + ], + [ + "Сёмкина Екатерина Георгиевна", + "+7(906)567-38-84", + "erg-fait@yandex.ru", + "14 15", + " 535605", + "ОТДЕЛЕНИЕМ № 1 ОУФМС РОССИИ ПО БЕЛГОРОДСКОЙ ОБЛ. В Г. БЕЛГОРОД", + "2015-10-30", + "310-002", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. ВИЛЬВЕНСКАЯ, 19-102", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. ЧЕЛЮСКИНЦЕВ, 19-214", + "061-862-741-70", + "590417509000", + "1984-11-22", + "1072641377", + "17.01.2025, 13:12" + ], + [ + "Борисова Екатерина Анатольевна ", + "+7(902)635-84-06", + "Yekat.borisova2016@yandex.ru", + "57 07", + " 035205", + "МП УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ОРДИНСКОМ РАЙОНЕ", + "2007-08-30", + "590-038", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ, УЛИЦА ТБИЛИССКАЯ , ДОМ 1А, КВАРТИРА 204", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ, УЛИЦА ТБИЛИССКАЯ , ДОМ 1А, КВАРТИРА 204", + "114-426-701-24", + "594501296445", + "1981-12-10", + "1511493004", + "17.01.2025, 16:14" + ], + [ + "Басина Оксана Константиновна", + "+7(951)950-21-94", + "fotedcu@gmail.com", + "57 24", + " 529009", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2024-06-21", + "590-002", + " ПЕРМСКИЙ ,ПЕРМЬ , ВЕТЛУЖСКАЯ, 30,24", + "ПЕРМЬ, ВЕТЛУЖСКАЯ, 30,24", + "053-831-047-42", + "590406609186", + "1979-05-29", + "6004057611", + "17.01.2025, 20:12" + ], + [ + "Кропотина Ольга Владимировна", + "+7(912)985-90-63", + "semaolg@yandex.ru", + "57 14", + " 241456", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ДЗЕРЖИНСКОМ РАЙОНЕ Г. ПЕРМИ", + "2014-09-18", + "590-002", + " ПЕРМСКИЙ КРАЙ, ГОР. ПЕРМЬ, УЛ. МАЯКОВСКОГО, ДОМ 41А, КВ. 238", + " ПЕРМСКИЙ КРАЙ, ГОР. ПЕРМЬ, УЛ. МАЯКОВСКОГО, ДОМ 41А, КВ. 238", + "060-083-784-40", + "590315150794", + "1969-06-30", + "5018033785", + "17.01.2025, 23:59" + ], + [ + "Бессарабова Александра Александровна", + "+7(919)440-99-24", + "music.nord123@mail.ru", + "65 16", + " 254362", + "ОТДЕЛЕНИЕМ УФМС РОССИИ ПО СВЕРДЛОВСКОЙ ОБЛ. В Г. СЕВЕРОУРАЛЬСКЕ", + "2016-08-09", + "660-072", + "СВЕРДЛОВСКАЯ ОБЛ.,ГОР.СЕВЕРОУРАЛЬСК. УЛ. КОМСОМОЛЬСКАЯ, Д.50, КВ.-", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ. АРКАДИЯ ГАЙДАРА, Д.9, КВ.5", + "165-283-045-68", + "661711118951", + "1996-07-19", + "2064328323", + "18.01.2025, 10:23" + ], + [ + "Иванова Анастасия Александровна ", + "+7(964)196-28-67", + "AnastasiaIwanova@yandex.ru", + "57 16", + " 456784", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В СВЕРДЛОВСКОМ РАЙОНЕ Г. ПЕРМИ", + "2016-06-07", + "590-008", + "МОТОВИЛИХИНСКИЙ РАЙОН, ГОРОД ПЕРМЬ, УЛИЦА ЛЕБЕДЕВА, 40А - 118", + "МОТОВИЛИХИНСКИЙ РАЙОН, ГОРОД ПЕРМЬ, УЛИЦА ШМИДТА, 56 - 211", + "158-763-187-13", + "662348428442", + "1996-04-28", + "1226783141", + "18.01.2025, 13:28" + ], + [ + "Терво Светлана Олеговна", + "+7(908)260-00-95", + "terwo@mail.ru", + "57 18", + " 800136", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2018-12-15", + "590-002", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. ХАБАРОВСКАЯ, Д. 56 КВ. 40", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. ХАБАРОВСКАЯ, Д. 56 КВ. 40.", + "129-330-410-34", + "151001632697", + "1973-11-27", + "1025806829", + "18.01.2025, 16:48" + ], + [ + "Воробьева Евгения Александровна", + "+7(902)802-34-22", + "vorobieva.evhenija@yandex.ru", + "57 17", + " 641846", + "ТП УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В СИВИНСКОМ РАЙОНЕ", + "2017-11-23", + "590-047", + "ПЕРМСКИЙ КРАЙ, СИВИНСКИЙ РАЙОН, С. СИВА, УЛ. ОКТЯБРЬСКАЯ, 33", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. ЧЕРДЫНСКАЯ, Д.13, КВ.174", + "148-259-356-94", + "593306662209", + "1997-10-25", + "547037819", + "19.01.2025, 16:32" + ], + [ + "Антонова Елена Васильевна ", + "+7(902)836-56-05", + "Shelva@rambler.ru", + "57 24", + " 515624", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2024-05-27", + "590-008", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, УЛИЦА НИКОЛАЯ ОСТРОВСКОГО, ДОМ 69, КВАРТИРА 46", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, УЛИЦА 1АЯ КРАСНОАРМЕЙСКАЯ, ДОМ 5, КВАРТИРА 111", + "110-174-285-00", + "590807929810", + "1979-05-06", + "1181918947", + "20.01.2025, 14:58" + ], + [ + "Гафетдинова Валентина Васильевна ", + "+7(964)193-94-32", + "sadritdinova.valya@gmail.com", + "57 17", + " 570417", + "ОТДЕЛЕНИЕМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В КУЕДИНСКОМ РАЙОНЕ", + "2017-05-10", + "590-032", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ.ПОДВОДНИКОВ, Д.80, КОРП.2, КВ.19", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ.ПОДВОДНИКОВ, Д.80, КОРП.2, КВ.19", + "134-671-547-65", + "593902494611", + "1993-03-21", + "1114404533", + "20.01.2025, 15:09" + ], + [ + "Сушков Михаил Германович", + "+7(919)449-52-47", + "mgsushkov@mail.ru", + "37 04", + " 946472", + "ОВД Г. ШАДРИНСКА КУРГАНСКОЙ ОБЛ.", + "2004-06-07", + "452-021", + "ПЕРМСКИЙ КРАЙ,ГОРОД ПЕРМЬ, УЛИЦА РЕВОЛЮЦИИ, ДОМ 42, КВАРТИРА 63", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛИЦА РЕВОЛЮЦИИ, ДОМ 52, КВАРТИРА 40", + "032-689-467-80", + "450201710162", + "1958-09-25", + "348595296", + "20.01.2025, 15:52" + ], + [ + "Коротаева Владлена Александровна ", + "+7(952)331-50-71", + "vladlenakorotaeva@gmail.com", + "57 14", + " 194342", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ДЗЕРЖИНСКОМ РАЙОНЕ Г. ПЕРМИ", + "2014-06-05", + "590-002", + "ГОРОД ПЕРМЬ, УЛ. ЭНГЕЛЬСА, 18, КВ.288", + "ГОРОД ПЕРМЬ, УЛ. ЭНГЕЛЬСА, 18, КВ.288", + "153-508-064-47", + "590309627260", + "1992-11-12", + "383277712", + "20.01.2025, 16:38" + ], + [ + "Четина Кристина Юрьевна ", + "+7(922)310-05-68", + "chetina.kristina20@gmail.com", + "57 21", + " 177957", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2022-01-14", + "590-027", + "КРАЙ ПЕРМСКИЙ, Р-Н КУДЫМКАРСКИЙ, П. ЭРНА, УЛ. ЦЕНТРАЛЬНАЯ, Д. 9", + "Г. ПЕРМЬ, УЛ. КЛАРЫ ЦЕТКИН, Д. 21, КВ. 147", + "140-467-321-36", + "810702743291", + "2002-01-07", + "5763291702", + "20.01.2025, 16:39" + ], + [ + "Юрков Владислав Сергеевич", + "+7(965)557-75-92", + "vlad.yurkov.92@mail.ru", + "57 13", + " 076534", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В ИНДУСТРИАЛЬНОМ РАЙОНЕ Г. ПЕРМИ", + "2013-08-28", + "590-003", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ПОДВОДНИКОВ 13, КВАРТИРА 19/4", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ПОДВОДНИКОВ 13, КВАРТИРА 19/4", + "158-525-050-74", + "590586340100", + "1992-12-27", + "1783349818", + "20.01.2025, 16:49" + ], + [ + "Шайдурова Валентина Николаевна ", + "+7(919)454-72-37", + "valentinashaidurova@bk.ru", + "76 00", + " 527654", + "ОВД ЦЕНТРАЛЬНОГО РАЙОНА Г. ЧИТЫ", + "2002-04-01", + "752-001", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛИЦА ЯБЛОЧКОВА ДОМ 33, КВАРТИРА 51", + "ПЕРМСКИЙ КРАЙ, Г.ПЕРМЬ, УЛ.ЯБЛОЧКОВА ДОМ 33, КВАРТИРА 51", + "110-909-125-18", + "753607162344", + "1980-11-03", + "661291356", + "20.01.2025, 22:12" + ], + [ + "Синдяев Алексей Викторович", + "+7(909)728-36-66", + "alexei21061967@yandex.ru", + "57 12", + " 921945", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В КИРОВСКОМ РАЙОНЕ Г. ПЕРМИ", + "2012-09-13", + "590-004", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ГЕНЕРАЛА ПАНФИЛОВА, 4А, 3", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ГЕНЕРАЛА ПАНФИЛОВА, 4А, 3", + "037-967-172-02", + "590803561501", + "1967-06-21", + "601035745", + "21.01.2025, 08:59" + ], + [ + "Скорюпина Лариса Анатольевна ", + "+7(950)455-71-45", + "Sh4lrsr@rambler.ru", + "57 18", + " 772302", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2018-09-11", + "590-003", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛИЦА НЕФТЯНИКОВ, ДОМ 10, КВАРТИРА 11", + "ПЕРМСКИЙ КРАЙ, ГОРОД ПЕРМЬ, УЛИЦА НЕФТЯНИКОВ, ДОМ 10, КВАРТИРА 11", + "034-146-551-27", + "591702101161", + "1973-08-25", + "961484270", + "21.01.2025, 09:19" + ], + [ + "Зыкин Олег Владимирович ", + "+7(982)455-22-30", + "ozykin90@gmail.com", + "57 21", + " 032903", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2020-09-24", + "590-008", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ЯБЛОЧКОВА,23,64", + "ПЕРМСКИЙ КРАЙ, ПЕРМЬ, ЯБЛОЧКОВА 23, 64 ", + "059-319-016-69", + "360901261646", + "1975-05-30", + "1694282215", + "21.01.2025, 14:32" + ], + [ + "Головач Светлана Вячеславовна", + "+7(902)792-44-48", + "svetanov11@bk.ru", + "57 13", + " 093099", + "ОТДЕЛОМ УФМС РОССИИ ПО ПЕРМСКОМУ КРАЮ В СВЕРДЛОВСКОМ РАЙОНЕ Г. ПЕРМИ", + "2013-11-29", + "590-008", + "ПЕРМСКИЙ КРАЙ, ДЕРЕВНЯ МОКИНО, УЛИЦА СИРЕНЕВАЯ, ДОМ 5 ", + "ПЕРМСКИЙ КРАЙ, ДЕРЕВНЯ МОКИНО, УЛИЦА СИРЕНЕВАЯ, ДОМ 5 ", + "043-353-564-38", + "590299526670", + "1967-09-10", + "761628320", + "22.01.2025, 15:53" + ], + [ + "иван иванович иванов", + "+7(967)905-19-54", + "ilyachistogov@gmail.com", + "65 46", + " 755665", + "ГУ МВД РОССИИ ПО ПЕРМСКОМУ КРАЮ", + "2023-09-26", + "590-003", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. СОВЕТСКОЙ АРМИИ, ДОМ 72/2", + "ПЕРМСКИЙ КРАЙ, Г. ПЕРМЬ, УЛ. СОВЕТСКОЙ АРМИИ, ДОМ 72/2", + "754-777-727-28", + "727383838373", + "2003-09-24", + "766945900", + "25.11.2024, 13:15", + "Медсёстры" + ] + ], + "Информация о сотрудниках::Лист2": [ + [ + "Chat ID", + "-1002306913175", + "-1002266505101", + "-1001517802998", + "-1001361213298", + "-1001867495728", + "-1001253302074", + "-1001637985393", + "-558792560", + "-1002336002406", + "-389396374", + "-1001958590644", + "-1001533181145", + "-1002430264852", + "-1001736516428", + "", + "", + "-1002399329094", + "-1002385965677", + "", + "-1002169794683", + "-960640731", + "-1001786479923", + "-1002437290000", + "-1002237766175", + "", + "", + "-1002105110114", + "-1002482377280", + "-945199553", + "-1001269442762", + "-1002426944128", + "-1002399294300", + "-1002258995753", + "-1002287825539", + "-1002298218124", + "-635742971" + ], + [ + "Название групп", + "Тест бота", + "тест бота 2", + "Клиника ухо, горло, нос имени профессора Е.Н. Оленевой", + "Администраторы", + "Колл-центр Клиника УГН", + "Заведующие клиники", + "Взаимодействие операторов и администраторов", + "Оленева - Пирогов", + "Задачи Клиника Администрация", + "МИС Полимед", + "HR Клиники УГН", + "СЭР Клиника", + "Маркетинг в клинике", + "База знаний КУГН", + "1324", + "Доктора Цеткин", + "Звезда, ЛОР-отделение 3", + "Отделение Аллергологии и Пульмонологии", + "", + "Отделение диагностики и реабилитации", + "Центр диагностики и реабилитации", + "Оборудование клиники", + "Медсестры", + "СанЭпид режим", + "", + "", + "Сообщения врачам от пациентов", + "Операционные вмешательства", + "Пирогов: реклама - контакт центр - админы", + "Вопросы-ответы на сайт", + "Конференции Контакт-центра КУГН", + "Телемед прием ЛОРа Краснокамск", + "Клиника Пирогова Краснокамск - сотрудники", + "Техподдержка Краснокамск Pirogov.AI", + "Профосмотры Клиника ухо, горло, нос", + "Телемедицинский ЛОР прием" + ], + [ + "Ссылки на группы", + "https://t.me/testdevelopmentHR", + "https://t.me/botclinic", + "https://t.me/+vaOifola71owYmYy", + "https://t.me/adm_clinic", + "https://t.me/+dcR63EO8k5A2M2Ni", + "https://t.me/+4A475LvFyn1kNjYy", + "https://t.me/+syeyVvgpqScwMDhi", + "https://t.me/+gRjyakWgewVhMTRi", + "https://t.me/+q-jjfT7NpdQ3MzQy", + "https://t.me/+1ujQKL8VgJFiODRi", + "https://t.me/+_oQeejcn3RcxZGFi", + "https://t.me/+AkUEGqSi_5IzZDIy", + "https://t.me/+6EOEcnk3BOphMTMy", + "https://t.me/+RElwxhS9n2RmMTBi", + "", + "https://t.me/+qZH-X2vNIZU2MGMy", + "https://t.me/+XWvisQnTfBk0ZmYy", + "https://t.me/+NF3hk-g40zk4ZTMy", + "", + "https://t.me/+AiU-Wk08mlYwMWQy", + "https://t.me/+efMfSHeLuXxiMjhi", + "https://t.me/+cRzvbasU34A5MjUy", + "https://t.me/+b4r6GQYh-PllZGIy", + "https://t.me/+-D2sLhAmYkw4MTQy", + "", + "", + "https://t.me/+dmMZ8ceQjJJiN2Zi", + "https://t.me/+RqCUeqN8vpg0Mjgy", + "https://t.me/+GHUwF4-e_p0xNzU6", + "https://t.me/+_OQh1cA9jrQ0Zjli", + "https://t.me/+kHGNWcP4hroyNzAy", + "https://t.me/+e8WKKW2H4v44ZWY6", + "https://t.me/+ePcpBC67qG0wZGZi", + "https://t.me/+uTpf7rLLGxUzYWYy", + "https://t.me/+tGZM7CbHUuc4MmFi", + "https://t.me/+ZgjAacCTSck4OTQy" + ] + ], + "Информация о сотрудниках::Лист3": [ + [ + "Генеральный директор" + ], + [ + "Главный врач" + ], + [ + "Заместитель главного врача по ЭВН" + ], + [ + "Главный бухгалтер" + ], + [ + "Главная медсестра" + ], + [ + "Директор по персоналу" + ], + [ + "Помощник генерального директора" + ], + [ + "Ведущий маркетолог" + ], + [ + "Специалист по ОТ и ПБ" + ], + [ + "Научный консультант" + ], + [ + "Менеджер проекта" + ], + [ + "Заведующий лор-отделением №1" + ], + [ + "Заведующий лор-отделением №2" + ], + [ + "Заведующий лор-отделением №3" + ], + [ + "Врач-оториноларинголог" + ], + [ + "Врач-сурдолог-оториноларинголог" + ], + [ + "Врач-оториноларинголог-консультант" + ], + [ + "Профессор-консультант" + ], + [ + "Медсестра" + ], + [ + "Сестра-хозяйка" + ], + [ + "Санитарка" + ], + [ + "Асисстент врача" + ], + [ + "Руководитель группы анестезиологии-реанимации" + ], + [ + "Врач-анестезиолог-реаниматолог" + ], + [ + "Медсестра-анестезист" + ], + [ + "Медсестра операционная" + ], + [ + "Врач стоматолог-хирург" + ], + [ + "Заведущий отделением аллергологии и пульмонологии" + ], + [ + "Врач-аллерголог-иммунолог (высшая к.к.)" + ], + [ + "Врач-аллерголог-иммунолог (первая к.к.)" + ], + [ + "Врач пульмонолог (высшая к.к.)" + ], + [ + "Врач пульмонолог (первая к.к.)" + ], + [ + "Заведующий отделением диагностики и реабилитации" + ], + [ + "Врач ультразвуковой диагностики" + ], + [ + "Врач-рефлексотерапевт" + ], + [ + "Врач-терапевт" + ], + [ + "Врач-рентгенолог" + ], + [ + "Рентгенолаборант" + ], + [ + "Руководитель службы администраторов и сервиса" + ], + [ + "Администратор" + ], + [ + "Специалист по работе с пациентами" + ], + [ + "Врач общей практики" + ], + [ + "Врач-дерматовенеролог" + ], + [ + "Врач ультразвуковой диагностики" + ], + [ + "Администратор" + ], + [ + "Медицинская сестра" + ], + [ + "Санитарка" + ], + [ + "Оператор " + ] + ], + "Корпоративные группы Клиники в Телеграмм ::Группы": [ + [ + "", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34" + ], + [ + "", + "Клиника ухо, горло, нос имени профессора Е.Н. Оленевой", + "Администраторы", + "Колл-центр Клиника УГН", + "Заведующие клиники", + "Взаимодействие операторов и администраторов", + "Оленева-Пирогов", + "Задачи Клиника Администрация", + "МИС Полимед", + "HR Клиники УГН", + "СЭР Клиника", + "Маркетинг в Клинике", + "База знаний КУГН", + "Звезда, ЛОР-отделение 1", + "Доктора Цеткин", + "Звезда, ЛОР-отделение 3", + "Отделение Аллергологии и Пульмонологии", + "АлИП\n\nОтправить в архив", + "Отделение диагностики и реабилитации", + "Центр диагностики и реабилитации", + "Оборудование клиники", + "Медсестры", + "СанЭпид режим", + "Биопсия", + "Документы для пациентов", + "Сообщения врачам от пациентов", + "Операционные вмешательства", + "Пирогов: реклама - контакт центр - админы", + "Вопросы - ответы на сайт", + "Конференции Контакт-центра КУГН", + "Телемед прием ЛОРа Краснокамск", + "Клиника Пирогова Краснокамск - сотрудники", + "Техподдержка Краснокамск Pirogov.AI", + "Профосмотры Клиника ухо, горло, нос", + "Телемедицинский ЛОР прием" + ], + [ + "АУП", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅" + ], + [ + "Врачи", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "✅ \nврачи ЛОР-отд.1", + "✅ \nврачи ЛОР-отд.2", + "✅ \nврачи ЛОР-отд.3", + "", + "", + "✅", + "", + "✅" + ], + [ + "Медсестры", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "✅" + ], + [ + "Санитарки", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "", + "✅" + ], + [ + "Администраторы", + "✅", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "✅" + ], + [ + "Операторы КЦ", + "✅", + "✅", + "✅", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅" + ], + [], + [ + "Владелец", + "Старков ДА", + "Шаплова СН", + "Швец ОА", + "Разорвин А.М.", + "Швец ОА", + "Разорвин А.М.", + "Жуланова Н.А.", + "Разорвин А.М.", + "Разорвин А.М.", + "Старков Д.А.", + "Старков Д.А.", + "Швец О.А.", + "нет", + "Сушков М.Г.", + "Синдяев А.В.", + "Жуланова Н.А.", + "Суслонова Ю.В.", + "Жуланова Н.А.", + "Разорвин А.М.", + "Разорвин А.М.", + "Гилева В.А.", + "Гилева В.А.", + "Шаплова С.Н.", + "Шаплова С.Н.", + "Кузнецова Н.А.", + "Швец О.А.", + "Десяткова Ю.Н.", + "Разорвин А.М.", + "Швец О.А.", + "Сёмкина Е.Г.", + "Сёмкина Е.Г.", + "Чистогов М.", + "Сёмкина Е.Г.", + "Десяткова Ю.Н." + ], + [ + "Администратор", + "Жуланова НА\n@ClinicChatsBot", + "Рогова С.Ф.\nСтарков Д.А.\nЖуланова Н.А.\nВятчанин Н.В.\nДесяткова Ю.Н.\nРазорвин А.М.\n\n@Clinic_Grafana_bot\n@ClinicChatsBot\n", + "Жуланова Н.А.\n@ClinicChatsBot", + "Разорвин А.М.\nЖуланова Н.А.\n@ClinicChatsBot", + "Разорвин А.М.\nЖуланова Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "Разорвин А.М.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "Разорвин А.М.\nГилева В.А.\n@ClinicChatsBot", + "Разорвин А.М.\nШвец О.А.\n@ClinicChatsBot", + "Разорвин А.М.\nЖуланова Н.А.\n@ClinicChatsBot", + "Осадчий А.П.", + "Разорвин А.М.\nЖуланова Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\nСтарков Д.А.\nМедведева Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\nРазорвин А.М.\n", + "Разорвин А.М.", + "Антонова Е.В.\nРазорвин А.М.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "Старков Д.А. \n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot", + "", + "", + "Швец О.А.\nЖуланова Н.А.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot ", + "Жуланова Н.А.\n@ClinicChatsBot ", + "Швец О.А. (без права добавления админов)\nДесяткова Ю.Н.\n@ClinicChatsBot", + "Жуланова Н.А.\n@ClinicChatsBot ", + "Жуланова Н.А.\n@ClinicChatsBot ", + "Жуланова Н.А.\n@ClinicChatsBot ", + "Кухарева М., Жуланова Н.,\n@ClinicChatsBot", + "Разорвин А.М., Жуланова Н.,\n@ClinicChatsBot", + "Разорвин А.М., Кухарева М., Чистогов М.,\nЖуланова Н.А., @ClinicChatsBot\n@ear_troat_nose_bot\n" + ], + [ + "Ссылки на группы", + "https://t.me/+vaOifola71owYmYy", + "https://t.me/adm_clinic", + "https://t.me/+dcR63EO8k5A2M2Ni", + "https://t.me/+4A475LvFyn1kNjYy", + "https://t.me/+syeyVvgpqScwMDhi", + "https://t.me/+gRjyakWgewVhMTRi", + "https://t.me/+q-jjfT7NpdQ3MzQy", + "https://t.me/+1ujQKL8VgJFiODRi", + "https://t.me/+_oQeejcn3RcxZGFi", + "https://t.me/+AkUEGqSi_5IzZDIy", + "https://t.me/+6EOEcnk3BOphMTMy", + "https://t.me/+RElwxhS9n2RmMTBi", + "", + "https://t.me/+qZH-X2vNIZU2MGMy", + "https://t.me/+XWvisQnTfBk0ZmYy", + "https://t.me/+NF3hk-g40zk4ZTMy", + "", + "https://t.me/+AiU-Wk08mlYwMWQy", + "https://t.me/+efMfSHeLuXxiMjhi", + "https://t.me/+cRzvbasU34A5MjUy", + "https://t.me/+b4r6GQYh-PllZGIy", + "https://t.me/+-D2sLhAmYkw4MTQy", + "", + "", + "https://t.me/+dmMZ8ceQjJJiN2Zi", + "https://t.me/+RqCUeqN8vpg0Mjgy", + "https://t.me/+GHUwF4-e_p0xNzU6", + "https://t.me/+_OQh1cA9jrQ0Zjli", + "https://t.me/+kHGNWcP4hroyNzAy", + "https://t.me/+e8WKKW2H4v44ZWY6", + "https://t.me/+ePcpBC67qG0wZGZi", + "https://t.me/+uTpf7rLLGxUzYWYy", + "https://t.me/+tGZM7CbHUuc4MmFi", + "https://t.me/+ZgjAacCTSck4OTQy" + ], + [], + [ + "Запросить у Владельцев раб.групп для бота @ClinicChatsBot права админмистратора:", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "нет", + "✅", + "✅", + "✅", + "в архив", + "✅", + "✅", + "✅", + "✅", + "✅", + "нет", + "нет", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅", + "✅" + ], + [ + " /getchatid", + "ID чата: -1001517802998", + "ID чата: -1001361213298", + "ID чата: -1001867495728", + "ID чата: -1001253302074", + "ID чата: -1001637985393", + "ID чата: -558792560", + "ID чата: -1002336002406", + "ID чата: -389396374", + "ID чата: -1001958590644", + "ID чата: -1001533181145", + "ID чата: -1002430264852", + "ID чата: -1001736516428", + "", + "", + "ID чата: -1002399329094", + "ID чата: -1002385965677", + "", + "ID чата: -1002169794683", + "ID чата: -960640731", + "ID чата: -1001786479923", + "ID чата: -1002437290000", + "ID чата: -1002237766175", + "", + "", + "ID чата: -1002105110114", + "ID чата: -1002482377280", + "ID чата: -945199553", + "ID чата: -1001269442762", + "ID чата: -1002426944128", + "ID чата: -1002399294300", + "ID чата: -1002258995753", + "ID чата: -1002287825539", + "ID чата: -1002298218124", + "ID чата: -635742971" + ], + [], + [ + "Звезда, ЛОР-отдедение 1" + ], + [ + "Доктора Цеткин" + ], + [ + "Биопсия" + ], + [ + "Документы для пациентов" + ] + ], + "Корпоративные группы Клиники в Телеграмм ::Справочник должностей": [ + [ + "Генеральный директор", + "https://t.me/+vaOifola71owYmYy", + "https://t.me/adm_clinic", + "https://t.me/+dcR63EO8k5A2M2Ni", + "https://t.me/+4A475LvFyn1kNjYy", + "https://t.me/+syeyVvgpqScwMDhi", + "https://t.me/+gRjyakWgewVhMTRi", + "https://t.me/+q-jjfT7NpdQ3MzQy", + "https://t.me/+1ujQKL8VgJFiODRi", + "https://t.me/+_oQeejcn3RcxZGFi", + "https://t.me/+AkUEGqSi_5IzZDIy", + "https://t.me/+6EOEcnk3BOphMTMy", + "https://t.me/+RElwxhS9n2RmMTBi", + "https://t.me/+qZH-X2vNIZU2MGMy", + "https://t.me/+XWvisQnTfBk0ZmYy", + "https://t.me/+NF3hk-g40zk4ZTMy", + "https://t.me/+AiU-Wk08mlYwMWQy", + "https://t.me/+efMfSHeLuXxiMjhi", + "https://t.me/+cRzvbasU34A5MjUy", + "https://t.me/+_OQh1cA9jrQ0Zjli", + "https://t.me/+tGZM7CbHUuc4MmFi", + "https://t.me/+ZgjAacCTSck4OTQy" + ], + [ + "Главный врач", + "https://t.me/+vaOifola71owYmYy", + "https://t.me/+4A475LvFyn1kNjYy", + "https://t.me/+1ujQKL8VgJFiODRi", + "https://t.me/+6EOEcnk3BOphMTMy", + "https://t.me/+RElwxhS9n2RmMTBi", + "https://t.me/+qZH-X2vNIZU2MGMy", + "https://t.me/+XWvisQnTfBk0ZmYy", + "https://t.me/+NF3hk-g40zk4ZTMy", + "https://t.me/+AiU-Wk08mlYwMWQy", + "https://t.me/+efMfSHeLuXxiMjhi", + "https://t.me/+cRzvbasU34A5MjUy", + "https://t.me/+_OQh1cA9jrQ0Zjli", + "https://t.me/+tGZM7CbHUuc4MmFi", + "https://t.me/+ZgjAacCTSck4OTQy" + ], + [ + "Заместитель главного врача по ЭВН" + ], + [ + "Главный бухгалтер" + ], + [ + "Главная медсестра" + ], + [ + "Директор по персоналу" + ], + [ + "Помощник генерального директора", + "https://t.me/+vaOifola71owYmYy", + "https://t.me/adm_clinic", + "https://t.me/+dcR63EO8k5A2M2Ni", + "https://t.me/+4A475LvFyn1kNjYy", + "https://t.me/+syeyVvgpqScwMDhi", + "https://t.me/+gRjyakWgewVhMTRi", + "https://t.me/+q-jjfT7NpdQ3MzQy", + "https://t.me/+1ujQKL8VgJFiODRi", + "https://t.me/+_oQeejcn3RcxZGFi", + "https://t.me/+AkUEGqSi_5IzZDIy", + "https://t.me/+6EOEcnk3BOphMTMy", + "https://t.me/+RElwxhS9n2RmMTBi", + "https://t.me/+ZgjAacCTSck4OTQy", + "https://t.me/+qZH-X2vNIZU2MGMy", + "https://t.me/+XWvisQnTfBk0ZmYy", + "https://t.me/+NF3hk-g40zk4ZTMy", + "https://t.me/+tGZM7CbHUuc4MmFi", + "https://t.me/+AiU-Wk08mlYwMWQy", + "https://t.me/+efMfSHeLuXxiMjhi", + "https://t.me/+cRzvbasU34A5MjUy", + "https://t.me/+b4r6GQYh-PllZGIy", + "https://t.me/+-D2sLhAmYkw4MTQy", + "https://t.me/+dmMZ8ceQjJJiN2Zi", + "https://t.me/+RqCUeqN8vpg0Mjgy", + "https://t.me/+GHUwF4-e_p0xNzU6", + "https://t.me/+_OQh1cA9jrQ0Zjli", + "https://t.me/+kHGNWcP4hroyNzAy", + "https://t.me/+e8WKKW2H4v44ZWY6", + "https://t.me/+ePcpBC67qG0wZGZi", + "https://t.me/+uTpf7rLLGxUzYWYy" + ], + [ + "Ведущий маркетолог" + ], + [ + "Научный консультант" + ], + [ + "Менеджер проекта" + ], + [ + "Заведующий лор-отделением №1" + ], + [ + "Заведующий лор-отделением №2" + ], + [ + "Заведующий лор-отделением №3" + ], + [ + "Врач-оториноларинголог" + ], + [ + "Врач-сурдолог-оториноларинголог" + ], + [ + "Врач-оториноларинголог-консультант" + ], + [ + "Профессор-консультант" + ], + [ + "Врач-анестезиолог-реаниматолог" + ], + [ + "Медсестра-анестезист" + ], + [ + "Медсестра операционная" + ], + [ + "Врач стоматолог-хирург" + ], + [ + "Заведущий отделением аллергологии и пульмонологии" + ], + [ + "Врач-аллерголог-иммунолог (высшая к.к.)" + ], + [ + "Врач пульмонолог " + ], + [ + "Заведующий отделением диагностики и реабилитации" + ], + [ + "Врач-рефлексотерапевт" + ], + [ + "Врач-терапевт" + ], + [ + "Врач-рентгенолог" + ], + [ + "Рентгенолаборант" + ], + [ + "Руководитель службы администраторов и сервиса" + ], + [ + "Администратор" + ], + [ + "Врач общей практики" + ], + [ + "Врач-дерматовенеролог" + ], + [ + "Врач ультразвуковой диагностики" + ], + [ + "Администратор" + ], + [ + "Медицинская сестра" + ], + [ + "Сестра-хозяйка" + ], + [ + "Санитарка" + ], + [ + "Оператор " + ] + ], + "Корпоративные группы Клиники в Телеграмм ::ЛА Санитарка": [ + [ + "", + "", + "", + "", + "", + "", + "", + "", + "ФИО 1 / дата", + "ФИО 2 / дата", + "ФИО 3 / дата" + ], + [ + "", + "", + "", + "Сообщение, с которым передается инфо", + "День", + "Время", + "Форма контроля" + ], + [ + "Группа", + "СанЭпид режим", + "https://t.me/+-D2sLhAmYkw4MTQy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"СанЭпид режим\". \n\nВ группе обсуждаются рабочие вопросы относительно пожеланий по графику работы, выполнение функционала и любые другие рабочие вопросы", + "1", + "09.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "21.01.25", + "01.02.25" + ], + [ + "Группа", + "Клиника ухо, горло, нос имени профессора Е.Н. Оленевой", + "https://t.me/+vaOifola71owYmYy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"Клиника ухо, горло, нос имени профессора Е.Н. Оленевой\". \n\nВ группе обсуждаются любые внутренние вопросы относительно работы в Клинике.\nВ закрепленном сообщение на этом канале Вы сможете ознакомиться с таким разделами: \n👉Наши сотрудники (https://t.me/c/1414064442/5) - актуальный список всех сотрудников Клиники;\n👉Контакты сотрудников (https://t.me/c/1414064442/39) - номера телефонов сотрудников для скачивания в телефонную книгу;\n👉История клиники (https://t.me/c/1414064442/6)\n👉Структура рабочих чатов (https://t.me/c/1414064442/10)\n👉Инструктаж по пожарной безопасности в Клинике ухо, горло, нос (https://disk.yandex.ru/i/-4B4Sp-TnXXTqQ)\n👉Обратная связь (https://forms.gle/Dfjrb8K1NzzjmW5j7), где каждый сотрудник может оставить свое предложение, пожелание или задать вопрос руководству (анонимно).", + "1", + "10.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "21.01.25", + "01.02.25" + ], + [ + "Группа", + "СЭР Клиника", + "https://t.me/+AkUEGqSi_5IzZDIy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"СЭР Клиника\". \n\nВ группе обсуждаются текущие рабочие вопросы относительно соблюдения порядка санэпид. режима в клинике и подаются заявки на ремонт оборудования и устранение различных поломок", + "2", + "09.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "22.01.25", + "02.02.25" + ], + [ + "Инструктаж", + "Пожарная безопасность", + "https://disk.yandex.ru/i/-4B4Sp-TnXXTqQ", + "В разделе Инструктаж по пожарной безопасности в Клинике ухо, горло, нос Вам необходимо изучить материалы по Пожарной безопасности, уделить особое внимание - порядок действий и по каким номерам звонить в случае пожароопасной ситуации. ", + "2", + "10.00", + "Тест, подпись в журнале", + "", + "22.01.25", + "02.02.25" + ], + [ + "Тест", + "Пожарная безопасность", + "https://forms.gle/VLEx2Gf1h8grpXXu5", + "Вам необходимо пройти тест по Пожарной безопасности", + "2", + "11.00", + "Тест, подпись в журнале" + ], + [ + "Документы", + "Должностная инструкция\n", + "должностная", + "Ознакомьтесь с должностной инструкией по должности \"Санитарка\" и подпишите документ на бумажном носителе", + "3", + "09.00", + "Подписание на бумажном носителе", + "", + "23.01.25", + "03.02.25" + ], + [ + "Документы", + "Согласие на обработку персональных данных", + "Согласие работника на обр персональных данных измен.docx", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "3", + "10.00", + "Подписание на бумажном носителе", + "", + "23.01.25", + "03.02.25" + ], + [ + "Документы", + "Этические нормы поведения персонала", + "приказ клиника этические требования к персоналу 2021-1.docx", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "4", + "09.00", + "Подписание на бумажном носителе", + "", + "24.01.25", + "04.02.25" + ], + [ + "Документы", + "Трудовой договор", + "ТД_бланк.doc", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "5", + "09.00", + "Подписание на бумажном носителе", + "", + "25.01.25", + "05.02.25" + ] + ], + "Корпоративные группы Клиники в Телеграмм ::ЛА Медсестра": [ + [ + "", + "", + "", + "", + "", + "", + "", + "", + "ФИО 1 / дата", + "ФИО 2 / дата", + "ФИО 3 / дата" + ], + [ + "", + "", + "", + "Сообщение, с которым передается инфо", + "День", + "Время", + "Форма контроля" + ], + [ + "Группа", + "Медсестры", + "https://t.me/+b4r6GQYh-PllZGIy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"Медсестры \". \n\nВ группе обсуждаются рабочие вопросы относительно пожеланий по графику работы, выполнение функционала и любые другие рабочие вопросы", + "1", + "09.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "21.01.25", + "01.02.25" + ], + [ + "Группа", + "Клиника ухо, горло, нос имени профессора Е.Н. Оленевой", + "https://t.me/+vaOifola71owYmYy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"Клиника ухо, горло, нос имени профессора Е.Н. Оленевой\". \n\nВ группе обсуждаются любые внутренние вопросы относительно работы в Клинике.\nВ закрепленном сообщение на этом канале Вы сможете ознакомиться с таким разделами: \n👉Наши сотрудники (https://t.me/c/1414064442/5) - актуальный список всех сотрудников Клиники;\n👉Контакты сотрудников (https://t.me/c/1414064442/39) - номера телефонов сотрудников для скачивания в телефонную книгу;\n👉История клиники (https://t.me/c/1414064442/6)\n👉Структура рабочих чатов (https://t.me/c/1414064442/10)\n👉Инструктаж по пожарной безопасности в Клинике ухо, горло, нос (https://disk.yandex.ru/i/-4B4Sp-TnXXTqQ)\n👉Обратная связь (https://forms.gle/Dfjrb8K1NzzjmW5j7), где каждый сотрудник может оставить свое предложение, пожелание или задать вопрос руководству (анонимно).", + "1", + "10.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "21.01.25", + "01.02.25" + ], + [ + "Группа", + "СЭР Клиника", + "https://t.me/+AkUEGqSi_5IzZDIy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"СЭР Клиника\". \n\nВ группе обсуждаются текущие рабочие вопросы относительно соблюдения порядка санэпид. режима в клинике и подаются заявки на ремонт оборудования и устранение различных поломок", + "2", + "09.00", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля", + "", + "22.01.25", + "02.02.25" + ], + [ + "Инструктаж", + "Пожарная безопасность", + "https://disk.yandex.ru/i/-4B4Sp-TnXXTqQ", + "В разделе Инструктаж по пожарной безопасности в Клинике ухо, горло, нос Вам необходимо изучить материалы по Пожарной безопасности, уделить особое внимание - порядок действий и по каким номерам звонить в случае пожароопасной ситуации. ", + "2", + "10.00", + "Тест, подпись в журнале", + "", + "22.01.25", + "02.02.25" + ], + [ + "Тест", + "Пожарная безопасность", + "https://forms.gle/VLEx2Gf1h8grpXXu5", + "Вам необходимо пройти тест по Пожарной безопасности", + "2", + "11.00", + "Тест, подпись в журнале" + ], + [ + "Документы", + "Должностная инструкция\n", + "ДИ мс без нарк Клиника 19 новая.docx", + "Ознакомьтесь с должностной инструкией по должности \"Медицинская сестра\" и подпишите документ на бумажном носителе", + "3", + "09.00", + "Подписание на бумажном носителе", + "", + "23.01.25", + "03.02.25" + ], + [ + "Документы", + "Согласие на обработку персональных данных", + "Согласие работника на обр персональных данных измен.docx", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "3", + "10.00", + "Подписание на бумажном носителе", + "", + "23.01.25", + "03.02.25" + ], + [ + "Документы", + "Этические нормы поведения персонала", + "приказ клиника этические требования к персоналу 2021-1.docx", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "4", + "09.00", + "Подписание на бумажном носителе", + "", + "24.01.25", + "04.02.25" + ], + [ + "Документы", + "Трудовой договор", + "ТД_бланк.doc", + "Ознакомьтесь и подпишите документ на бумажном носителе ", + "5", + "09.00", + "Подписание на бумажном носителе", + "", + "25.01.25", + "05.02.25" + ] + ], + "Корпоративные группы Клиники в Телеграмм ::ЛА Администратор": [], + "Корпоративные группы Клиники в Телеграмм ::ЛА Врач-Сурдолог": [ + [ + "", + "", + "Тема обучения", + "Начало адаптации", + "Длительность процесса", + "Окончание адаптации", + "Вид обучения", + "Ответственный", + "Форма контроля", + "Итог обучения" + ], + [ + "", + "Требования к образованию: высшее медицинское образование, специальность \"Педиатр\", \"Врач общей практики\", \"Терапевт\" " + ], + [], + [], + [ + "Обучение", + "Общая программа обучения", + "1. Переподготовка по специальности \"сурдология-оториноларингология\" ", + "", + "3 месяца", + "", + "онлайн-обучение в Центре переподготовки", + "Жуланова Н,А,", + "онлайн" + ], + [ + "", + "", + "2. Аккредитация в аккредитационном Центре", + "", + "2 месяца", + "", + "очная аккредитация", + "Жуланова Н.А., Кузнецова Н.", + "очная " + ], + [], + [ + "", + "Теоретико-практическая база по специальности ", + "1. ЛОР-специализация", + "", + "3 месяца", + "", + "очное в Клинике Цеткин, 9", + "ЛОР-врач-куратор Шайдурова В.Н.", + "очная" + ], + [ + "", + "", + "2. Основы сурдологии", + "", + "1 месяц", + "", + "очное в Клинике, Г.Звезда, 31а", + "врач-сурдолог Семерикова Н.А.", + "очная" + ], + [], + [ + "", + "Основы противопожарной безопасности:" + ], + [ + "", + "", + "Вводный противопожарный инструктаж", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [ + "", + "", + "Первичный противопожарный инструктаж на рабочем месте", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [ + "", + "", + "Теоретическое закрепление основ противопожарной безопасности", + "", + "1 день", + "", + "онлайн", + "Гугл-презентация", + "Гугл-тест" + ], + [ + "", + "", + "Тренинг \"Практическое закрепление противопожарных правил\"", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [], + [ + "", + "Охрана труда", + "Вводный инструктаж по охране труда", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [ + "", + "", + "Инструктаж на рабочем месте по охране труда", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [ + "", + "", + "Тренинг \"Практическое закрепление основ по охране труда\"", + "", + "1 день", + "", + "онлайн", + "Жуланова Н.А.", + "Гугл-тест" + ], + [], + [ + "", + "Правила внутреннего трудового распорядка:" + ], + [ + "", + "", + "Ознакомление с ПВТР (утв. Приказом от «1» июня 2017 г. № 1706-01)", + "", + "2 дня", + "", + "очно", + "Жуланова Н.А.", + "подпись об ознакомлении" + ], + [ + "", + "Этический и деонтологичкий стандрат:" + ], + [ + "", + "", + "Этические нормы поведения персонала при общении с пациентами, их законными представителями, персоналом Клиники", + "", + "1 день", + "", + "очно", + "Жуланова Н.А.", + "тест" + ], + [ + "", + "", + "Правила бесконфликтного приема пациентов и специфика работы частной клиники", + "", + "2 дня", + "", + "очно", + "Жуланова Н.А.", + "тест" + ], + [], + [ + "Материально-технические средства", + "Спецодежда:" + ], + [ + "", + "", + "Получение фирменной спецодежды ", + "", + "1 день", + "", + "", + "Сестра-хозяйка: Захарова В.Ю. (Г.Звезда 31а), Кропотина О.В. (Цеткин, 9)", + "подпись о получении" + ], + [ + "", + "", + "Правила пользования, хранения и чистки фирменной спецодежды (длительность носки, сдача на чистку, содержание индивидуального чехла)", + "", + "1 день", + "", + "", + "Сестра-хозяйка: Захарова В.Ю. (Г.Звезда 31а), Кропотина О.В. (Цеткин, 9)", + "подпись о получении" + ], + [], + [ + "", + "Мед. оборудование:", + "1. Аудиометры Amplivox 270, Интеракустик AA 222", + "", + "3 дня", + "", + "", + "Сёмкина Е.Г." + ], + [ + "", + "", + "2. Тимпанометры Otowave , Интеракустик", + "", + "3 дня", + "", + "", + "Сёмкина Е.Г." + ], + [ + "", + "", + "3. Эндоскопическое и диагностическое оборудование (получение)", + "", + "1 день", + "", + "", + "главная медицинская сестра Гилева В.А." + ], + [ + "", + "", + "3. Эндоскопическое оборудование. (навыки использования)\n", + "", + "1 неделя", + "", + "", + "заведующий отделением Юрков В.С." + ], + [ + "", + "Орг. техника:" + ], + [ + "", + "", + "Базовые навыки владения ПК (вкл./выкл.; MS Office (Word, Excel); интернет-браузеры; эл. почта; создание, хранение, поиск, копирование файлов и т.д.)", + "", + "", + "", + "", + "Старков Д.А." + ], + [ + "", + "", + "Принтер", + "", + "", + "", + "", + "Старков Д.А." + ], + [ + "", + "", + "Сканер", + "", + "", + "", + "", + "Старков Д.А." + ], + [ + "", + "", + "Другое", + "", + "", + "", + "", + "Старков Д.А." + ], + [ + "", + "Программное обеспечение:" + ], + [ + "", + "", + "Эксплуатация программного обеспечения «МИС Полимед»", + "", + "", + "", + "", + "заведующий отделением Юрков В.С., Сёмкина Е.Г." + ], + [], + [ + "Стажировка на рабочем месте", + "Коммуникации Клиники:" + ], + [ + "", + "", + "Добавление данных врача в Telegram-bot Клиники", + "", + "", + "", + "", + "Жуланова Н.А." + ], + [ + "", + "", + "Добавление и ознакомление с корпоративными каналами связи (Telegram-каналы: Клиника ухо, горло, нос; Администраторы; Колл-центр Клиника УГН; др.) ..... каналы для врача-сурдолога", + "", + "", + "", + "", + "Жуланова Н.А., " + ], + [ + "", + "", + "Знакомство с врачами ЛОР-отделений по вопросам взаимодействия подразделений Клиники (участие в еженедельной линейке врачей)", + "", + "", + "", + "", + "заведующий отделением, Юрков В.С." + ], + [], + [], + [], + [ + "Регулярное обучение", + "", + "Разбор профильных медицинских случаев ", + "", + "2 месяца, 1 раз в неделю", + "очно", + "", + "главный врач Терво С.О." + ], + [ + "", + "", + "Тесты по темам: ухо, нос, гортань", + "", + "регулярно", + "", + "", + "заведующий отделением Юрков В.С.", + "онлайн" + ] + ], + "Корпоративные группы Клиники в Телеграмм ::ЛА Оператор": [ + [], + [ + "", + "Название", + "Ссылка", + "Сообщение, с которым передается инфо", + "День", + "Время", + "Форма контроля", + "", + "ФИО оператора", + "ФИО оператора" + ], + [ + "Группа", + "Клиника ухо, горло, нос имени профессора Е.Н. Оленевой", + "https://t.me/+vaOifola71owYmYy", + "Нажмите на ссылку. Подключитесь в рабочую группу \"Клиника ухо, горло, нос имени профессора Е.Н. Оленевой\". \n\nВ группе обсуждаются любые внутренние вопросы относительно работы в Клинике.\nВ закрепленном сообщение на этом канале Вы сможете ознакомиться с таким разделами: \n👉Наши сотрудники (https://t.me/c/1414064442/5) - актуальный список всех сотрудников Клиники;\n👉Контакты сотрудников (https://t.me/c/1414064442/39) - номера телефонов сотрудников для скачивания в телефонную книгу;\n👉История клиники (https://t.me/c/1414064442/6)\n👉Структура рабочих чатов (https://t.me/c/1414064442/10)\n👉Обратная связь (https://forms.gle/Dfjrb8K1NzzjmW5j7), где каждый сотрудник может оставить свое предложение, пожелание или задать вопрос руководству (анонимно).", + "1", + "", + "Написать сообщение в группу по шаблону/или ответить на тест/или иная форма контроля" + ], + [ + "Группа", + "Администраторы", + "https://t.me/adm_clinic", + "", + "1" + ], + [ + "Группа", + "Колл-центр Клиника УГН", + "https://t.me/+dcR63EO8k5A2M2Ni", + "", + "1" + ], + [ + "Группа", + "Сообщения врачам от пациентов", + "https://t.me/+dmMZ8ceQjJJiN2Zi", + "", + "1" + ], + [ + "Группа", + "Пирогов: реклама - контакт центр - админы", + "https://t.me/+GHUwF4-e_p0xNzU6", + "", + "1" + ], + [ + "Документы", + "Договор с самозанятым", + "", + "Ознакомьтесь и подпишите документ на бумажном носителе, отправьте почтой оригинал договора в Клинику.", + "3", + "09.00", + "Подписание на бумажном носителе" + ], + [ + "Документы", + "Справка о самозанятости", + "", + "Скачайте приложение Мой налог и закажите в нем справку о самозанятости. Справку отправьте в телеграм старшему оператору.", + "3", + "", + "Получение справки старшим оператором" + ] + ] +} \ No newline at end of file diff --git a/~$_бланк.docx b/~$_бланк.docx deleted file mode 100644 index 843748201238af49b9866188c6e252aa1767c52e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmWg7%&AOF&d4k-$xqKOb4brk%*@eC&d+7Q3&a^R8FCmZ84?+i88U$EVuliie1>!& tE@N;2(z!qxkP1DZd_Ir|10UoiV;O20Cj3VNFgaxU0y_f}m@hvo4glx?BOL$$