alexeykash

Дубли от МИАЦ

58 сообщений в этой теме

После строки ButSearchPatient выпадает таймаут. Щито делать? При первом запуске он даже кого то удалял :)

Это он наткнулся на неудаляемого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу видео от Vasilij_Kozlov. Вспомнилось, что подобных случаев в дублях очень много, в данном, конкретном случае, первая буква фамилии скорее всего написана латиницей. И у нас такое встречалось, и это нормально. Другое дело, что программа для выявления таких случаев, должна быть другого уровня. И даже, если, такая программа выявит похожий случай, решать удалять ли дубль должен человек, благо таких пунктов должно быть немного. От человека можно избавится только при наличии специально обученного ИИ. Проблема академического масштаба. Вот моя нейронная сеть сейчас пылится в магнитных кластерах HDD на уровне реализации 10^-6 :D  от 100.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Написал, небольшой скрипт, не автоматизирующий, но значительно ускоряющий работу по объединению контрагентов. Скрипт берет из предварительного сформированного списка ФИО и дату рождения контрагента, который требует объединения и заносит их в соответствующие поля поиска. Вам остается лишь выбрать какой правильный, какой не правильный и объединить.

Выкладываю инструкцию (надеюсь пригодится).

Вам понадобятся редактор скриптов AutoIt http://www.autoitscript.com/site/autoit/downloads/ Ms Excel (я использовал 2007) и файлы во вложении.

Для начала нужно скопировать список для объединения в файл 1.xls (пример во вложении).

Далее нужно открыть файл duplsearch.au3 в редакторе AutoIt, также запустить AutoIt Window Info и открыть файл со списком. Из AutoIt Window Info переносим Finder Tool на окно с Открытым списком Excel. Получившееся значение Title копируем в 14 строку в редакторе как показано на скриншоте.

534b028fb75d4126053bd50d9b26a8c3.png

Точно также нужно отредактировать 24 и 25 строки(внести заголовок браузера).

 

Теперь самое важное. Нужно запустить браузер и открыть в МИС раздел объединение контрагентов. В AutoIt Window Info перейти на вкладку Mouse, с помощью Finder Tool навести курсор на поле фамилия (примерно между первым и вторым символом), как на скриншоте, и внести координаты из свойства Position в редактор AutoIt на 28 строке.

f3b4f07cdb447acab08c1eef22383eb6.png

На этом подготовка закончена.

Для работы необходимо закрыть файл Excel со списком, в окне с МИС переключить раскладку клавиатуры на русский и запустить скрипт из редактора Tools -> Go.

Как уже писалось выше скрипт внесет данные контрагента, а вы его объедините. Чтобы перейти к следующему достаточно развернуть окно со списком Excel. Прервать работу скрипта можно из трея или из редактора AutoIt Tools -> Stop Executing. Чтобы начать не с первой строки из списка нужно отредактировать 12 строку в редакторе.

 

У меня было около 500 дубликатов (регулярно удалял ранее). На их удаление ушло около 4 часов. Теоретически можно написать скрипт полностью автоматизированно удаляющий дубликаты и даже сделать чтобы он это делал вдумчиво (выбирал кого удалить а кого оставить), но у меня их было не много и мне подошел полуавтоматический режим.

 Буду рад, если кто-то доработает/улучшит/оптимизирует/использует/напишет отзыв о работе скрипта.

Вот мое творение. Работает коректно на разрешении экрана 1366*768 На броузере мазилла. Перед запуском открыть объединение контрагентов. Из барса в текстовик скопировать дубли. Заморочка с цветами и с экселем на мой взгляд избыточна.

 

 

$file = FileOpen("D:\!!!!bars\dubl.txt", 0)

$sleeptime1=1500

$sleeptime2=1000

$sleeptime3=500

; Check if file opened for reading OK

If $file = -1 Then

MsgBox(0, "Error", "Unable to open file.")

Exit

EndIf

; Read in 1 character at a time until the EOF is reached

While 1

MouseWheel("up", 3)

MouseWheel("up", 3)

MouseWheel("up", 3)

$chars = FileReadLine($file)

If @error = -1 Then ExitLoop

;MsgBox(0, "Polis> ", $chars)

WinActivate("Mozilla Firefox")

MouseClick("left", 1237, 331)

Sleep($sleeptime3)

MouseClick("left", 311, 313)

Sleep($sleeptime3)

Send($chars)

Sleep($sleeptime3)

Send("{ENTER}")

Sleep($sleeptime3)

Sleep($sleeptime1)

Sleep($sleeptime3)

;~ правильный

MouseClick("right", 175, 444)

MouseClick("left", 276, 457)

;~ MouseClick("right", 175, 444)

;~ MouseClick("left", 276, 457)

Sleep($sleeptime3)

;~ неправильный

MouseClick("right", 206, 465)

MouseClick("left", 276, 500)

;~ MouseClick("right", 206, 465)

;~ MouseClick("left", 276, 500)

Sleep($sleeptime3)

MouseWheel("down", 3)

MouseWheel("down", 3)

Sleep($sleeptime2)

MouseClick("left", 119, 687)

;~ онажать объеденить

MouseClick("left", 119, 687)

Sleep($sleeptime2)

;~ нажать ок

MouseClick("left", 758, 467)

MouseClick("left", 758, 479)

Sleep($sleeptime2)

Sleep($sleeptime1)

Sleep($sleeptime1)

MouseClick("left", 847, 467)

MouseClick("left", 874, 480)

MouseClick("left", 265, 686)

MouseWheel("up", 3)

MouseWheel("up", 3)

MouseWheel("up", 3)

MouseWheel("up", 3)

MouseWheel("up", 3)

WEnd

FileClose($file)

MsgBox(0, "Закончено!", "Все Завершено! С новам ГОдОМ!")

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а можно как то убрать ограничение на 15 пациентов которые не объединяются ? потом просто скрипт виснет и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь? не?

post-154-0-64603500-1434629788_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здесь? не?

 

это отображение :-) черерез данный скрипт, браузер вообще запускать не нужно, только командную строку, и вот в ней он сам объединяет, вот только иногда, встречаются такие пациенты, которые не объединяются, он их пропускает записывая себе в память, когда набирает 10-15 штук, останавливается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, я так полагаю, в скрипте убрать кусок кода, который "их пропускает записывая себе в память". Т.е. скорее всего найти логическое условие и закомментировать его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Есть такой продукт - phantomjs, служит для тестирования веб — приложений.

Удалось его средствами организовать автоматизацию удаления дубликатов карт,

реализована эта функция не «интеллектуально», т. е. сравнивает полное ФИО

и дату рождения, что, вообщем и требуется на данном этапе.

Я понимаю, вопрос об автоматизации данной функции на стороне базы данных,

уже стал риторическим. Но, осадок остаётся и хочется задать вопрос. Может я что — то упустил, может в этом есть своя логика недоступная мне для понимания?

 

Ладно, тут интереснее другое, сама технология phantomjs, давно присматривался к ней и мечтал её опробовать. Но, не сложилось... до данного момента.

Было бы замечательно, если кто-нибудь опробовал данную программу на разных дистрибутивах Linux.

Программа не совершенна, и я не знаю, стоит ли заниматься ей дальше.

Выложил с инструкцией - http://it.sarmedic.net/files/file/17-udalenie-dublej/

 

Спасибо, что открыл для меня phantomjs

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас