Проверка кэша интеграций

Мы кэшируем в БД данные о звонках до 00:00 часов сегодня, а о заявках за все время (как работает интеграция с телефонией читайте здесь, с сервисами получения заявок — здесь). 

Если все настройки произведены верно, работа сервисов идет в штатном режиме, и с интернет-соединением все в порядке, информация о звонках и заявках будет сохраняться корректно. Но если сервер какое-то время передавал данные неверно, и проблема не была устранена день в день, информация закэшируется и будет отображаться с ошибками (например, не будет записей разговоров, длительность разговоров будет принимать отрицательное значение). Особенно часто подобные ситуации будут возникать в первые месяцы работы интеграции с собственными сервисами клиники, пока не будут найдены и исправлены все ошибки.

Проверка кэша интеграций помогает увидеть и исправить информацию, которая сохранилась неправильно. Чтобы обнаружить все несовпадения, нужно перейти в «Настройки» (1) → «Интеграции» (2) → «Внешние сервисы» (3) → «Проверка кэша интеграций» (4) (это может делать только сотрудник с правом доступа «Настройка интеграций»). 

Обратите внимание на фильтры справа. Вы можете выбрать интересующий вас период (1). Также у вас есть два варианта просмотра данных (2): можно посмотреть только локальный кэш — то есть только данные, которые сохранились в базе данных клиники, а можно сравнить данные, сохранившиеся у вас, с тем, что есть на сервере

В таблице отображаются данные либо по звонкам, либо по заявкам, в зависимости от того, что вы выберете в «Типе данных» (3). Кроме того, вы можете произвести проверку кэша только по какому-то одному внешнему сервису (4).

Примените фильтр (5). IDENT обратится к серверу, заберет данные и разложит на 4 основные группы (6) по сопоставлению ключевых полей (о «Дубликатах записей» и «С ошибками» мы расскажем ниже)

  • «На добавление» — есть на сервере, но нет в программе. Нужно добавить в программу. 
  • «На изменение» — данные в неключевых полях на сервере и в программе отличаются (какие поля ключевые, а какие вспомогательные, смотрите здесь). Нужно изменить.
  • «На удаление» — есть в программе, но нет на сервере. Можно удалить из программы. Обратите внимание: здесь не стоит галочка «Применить» по умолчанию, чтобы вы могли сначала проверить, что именно удаляете, и не удалили случайно что-то важное, так как некоторые сервисы хранят данные только определенное время (например, заявки у «НаПоправку» хранятся всего 6 дней). 
  • «Без изменений» — данные на сервере и в программе равны. Нет доступных действий.

Строки «На добавление» выделяются зеленым цветом, «На изменение» — желтым, «На удаление» — красным, «Без изменений» — не выделяются цветом.

В группе «На изменение» оранжевым цветом выделяются ячейки, значение в которых изменилось. Вы можете навести мышку на цветную ячейку и увидеть — какое значение пришло с сервера, а какое сохранено в программе. Например:

  • несовпадение времени начала разговора (1);
  • UIS стер запись разговора, и на сервере ничего нет (2).

Данные могут возвращаться с ошибками. Ошибки могут быть двух видов — значение вообще не пришло или пришло, но некорректное.  

Если имеются ошибки в ключевых полях, то такие объекты вообще не попадают на сравнение и выносятся в отдельную группу — «С ошибками» (1) (подробнее ниже), их сохранить нельзя (какие поля ключевые, а какие вспомогательные, мы рассказываем здесь). Во всех остальных группах (кроме «На удаление») объекты, пришедшие с сервера, проходит проверку и попадают в одну из двух подгрупп:

  • Технически корректные (2) — все поля успешно распознаны и соответствуют типам данных, присутствуют значения во всех обязательных полях. 
  • С предупреждениями (3) — значения в полях не соответствуют общепринятому формату (например, неизвестный формат номера телефона), диапазону времени или типу данных (например, в столбцах «Ожидание» и «Длительность» приходят отрицательные значения). Если какое-то поле не проходит проверку, оно будет выделено коралловым цветом.

Номер телефона в неизвестном формате можно сохранить, как есть (1), но при этом важно, чтобы вы обратили внимание на значения, которые со стороны программы кажутся нам некорректными. Данные в столбцах «Ожидание» и длительность будут автоматически исправлены перед сохранением. Так как «Ожидание» (2) является обязательным полем, его нельзя оставить пустым, то неправильное значение меняем на 0. При ошибке в поле «Длительность» значение в нем вообще не сохраняем (3).

В группу «С ошибками», как мы уже говорили выше, попадают все ошибки в ключевых полях: не заполнен номер телефона, с которого звонили, или номер телефона, на который звонили, не удалось определить направление по номерам телефона, не заполнен Id у заявок. Такие объекты не могут быть сохранены в IDENT. Необходимо обращаться к представителям внешнего сервиса с просьбой исправить ошибки на их стороне.

«Дубликаты записей» образуются если сервер возвращает несколько объектов с одинаковыми значениями ключевых полей. Мы сохраним только один из этих объектов, остальные будут исключены. Среди дубликатов также могут быть дубликаты строк из группы «С ошибками» (1), на это стоит обращать внимание. 

Чтобы понять, в чем проблема, представителям внешнего сервиса важно получить информацию по взаимодействию программы с этим сервисом. Для выгрузки этой информации служит кнопка «Подробнее» (2).

Только просмотрев информацию во всех строках и убедившись, что все выбранные изменения корректны (если строки «На удаление» действительно нужно удалить, проставляется соответствующая галочка), вы можете нажать «Применить изменения» — галочка в правом нижнем углу. 

Особенности проверки кэша интеграций у сервисов по сбору заявок

У заявок номер телефона — неключевое поле. Но оно тоже может не прийти (1), тогда заявка автоматически будет помечена как ошибочная (2). Мы ее, все равно, сохраним, но так как администратор не сможет по ней позвонить, то по умолчанию он ее и не увидит (но с помощью фильтра по ошибочным заявкам он сможет ее найти).

Заявок «С предупреждениями» может быть намного больше, чем звонков —  например, начало приема задано (1), а конец не задан (2) (или наоборот), в поле «Врач» пришел какой-то «мусор», и значение не будет сохранено (3).

С каждым несоответствием информации в программе и на сервере, попавшим в группу «Закрытые (изменились)», нужно разбираться вручную, так как эти заявки уже были обработаны администратором и закрыты.

Заявки, попавшие в группу «Закрытые (отсутствуют на сервере)», нельзя удалить, потому что администратор уже позвонил по ним и закрыл их.