baks

Чистка базы 2015

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

Всем привет!

В очередной раз МИАЦ решил приколоться над нами и прислал очередное творение неограниченного полета мысли. С фондом договориться не судьба... Базу им с барсиком не дали... так что разгребать все придется, как я пинимаю, нам.

Г-жа А...ина мне в телефонном разговоре сказала, что дубли и духов(кто есть в системе, но ни разу не был в поликлинике - предлагаю называть их так) набили наши регистраторы и пускай они самии исправляют свои косяки(остаются после работы ...), на мои предложения взять базу ТФОМСа и сделать выверку, найти дубликаты, забить недостающие данные (полюса, адреса, паспорта) сказала, что это невозможно и вообще нас(регистраторов) надо учить и ничего нам не светит. По всем техническим вопрсам послала в ......... барс )) 

В барсе мне обещали выгрузить все мои карты...(Консультация #1714 в редмайне). Оказалось, что в мисе нет возможности борьбы с данной проблемой.

 

Короче к чему это я все?

У меня под 400 000 карт. Возможности ручной обработки неприемлемы. Задумался об автоматизации данного процесса. Мож у кого есть наработки, идеи? 

 

Мои размышления по данному вопросу(дополняйте, расширяйте) :

1. Найти в списке духов у которых нет карт(т е , которые ни разу не были в поликлинике) и скриптом (наверно imacros или autoit(правда он медленнее)) удалить их из базы. Удаление организовать путем объединения одного с остальными поочереди.

2. Найти опечатки. Только как узнать правильного? Запрос в тфомс? ЕРЗ?

3. Используя базу недействительных полюсов (с фтп фонда) найти у кого полюса недействительны и поменять на нормальные (опять же ЕРЗ), те у кого нет полюсов - хз че с ними делать.

4. Оставшихся прогнать через ЕРЗ, получить недостающие данные и забить их в карточку пользователя(imacros или autoit).

5. Есть база померших... их отметить в МИС (imacros или autoit)

6. Есть прикрепленное население(из фонда) его переприкрепить в МИС. (imacros или autoit)

100. Всех, кто остался пусть грохают.

 

Как получу список начну с п1. 

 

!Вопрос! Как эмулировать программу ЕРЗ никто не в курсе? А то через нее все оч долго получается. Она обменивается с сервером фонда по ХТТП....

 

p/s Еще выяснилось, что невозможно определить пользователя, который создал карту...

 

0. Запихиваем то, что нам прислал в барс в аксесс(у меня 2007). У меня таблица называется bars_users. (При экспорте из экселя необходимо удалить точку в заголовке табл "Дата рожд" на всех листах книги).

-В аксесе создаем публичную функцию в VBA 

 
Public Function D_F(d)
If Format(d, "yy") < 14 Then
  D_F = Format(d, "dd.mm.20yy")
Else
  D_F = Format(d, "dd.mm.19yy")
 End If
End Function
Она нужна для преобразования форматы даты из кривого в тот, что онимает МИС.
Далее с базой можно работать...

 

1. Объединение дублей с одинаковыми полюсами(я хз откуда, но у меня их >700 шт)

 
Пишем запрос в аксесе
 
SELECT bars_users.Полис, bars_users.Фамилия, bars_users.Имя, bars_users.Отчество, D_F(bars_users.[Дата рожд]) AS Выражение1
FROM bars_users
WHERE (((bars_users.Полис) In (SELECT [Полис] FROM [bars_users] As Tmp GROUP BY [Полис] HAVING Count(*)>1 )))
ORDER BY bars_users.Полис;

После получаем табличку. Ее в эксель, убираем все столбцы, кроме полиса, удаляем дубликаты (есть кнопка), 

сохраняем в текстовый файл.Правим пути к текстовику с полюсами в скрипте, прописываем СВОЙ !!!!ЛОГИН И ПАРОЛЬ!!! открываем МИС на окне логина и запускаем.

 

$file = FileOpen("d:\!dubl\Script\dubl_POLIS.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
;проверяем чтоб небыло окна тимвьювера
WinActivate("Mozilla Firefox")
$pixcol = PixelGetColor(482, 319)
if Hex($pixcol, 6)== "008FF6" Then
;MsgBox(0, "color", Hex($pixcol, 6) )
MouseClick("left", 816, 438)
MouseClick("left", 1098, 642)

EndIf




;проверяем чтоб небыло окна авторизации, если оно есть, то
WinActivate("Mozilla Firefox")
$pixcol = PixelGetColor(814, 409)
if Hex($pixcol, 6)== "FFDDAC" Then
;MsgBox(0, "color", Hex($pixcol, 6) )
MouseClick("left", 698, 385)
MouseClick("left", 698, 385)
Send("LOGIN")
Send("{tab}")
Send("PASSWORD")

Send("{enter}")
sleep(4000)
MouseClick("left", 699, 482)
sleep(4000)
MouseClick("left", 76, 209)
sleep($sleeptime2)
MouseClick("left", 96, 455)
EndIf


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", 936, 313)
Sleep($sleeptime3)
Send($chars)
Sleep($sleeptime3)
Send("{ENTER}")
Sleep($sleeptime3)
Sleep($sleeptime1)
Sleep($sleeptime3)
;~ правильный
MouseClick("right", 175, 464)
MouseClick("left", 276, 477)

;~ MouseClick("right", 175, 444)
;~ MouseClick("left", 276, 457)

Sleep($sleeptime3)

;~ неправильный
MouseClick("right", 206, 435)
MouseClick("left", 276, 470)

;~ 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, "Закончено!", "Все Завершено!")

Этот скриптик переделка из более раннего моего скрипта по удалению дублей.

Изменено пользователем baks

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


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

Всем привет!

В очередной раз МИАЦ решил приколоться над нами и прислал очередное творение неограниченного полета мысли. С фондом договориться не судьба... Базу им с барсиком не дали... так что разгребать все придется, как я пинимаю, нам.

Г-жа А...ина мне в телефонном разговоре сказала, что дубли и духов(кто есть в системе, но ни разу не был в поликлинике - предлагаю называть их так) набили наши регистраторы и пускай они самии исправляют свои косяки(остаются после работы ...), на мои предложения взять базу ТФОМСа и сделать выверку, найти дубликаты, забить недостающие данные (полюса, адреса, паспорта) сказала, что это невозможно и вообще нас(регистраторов) надо учить и ничего нам не светит. По всем техническим вопрсам послала в ......... барс )) 

В барсе мне обещали выгрузить все мои карты...(Консультация #1714 в редмайне). Оказалось, что в мисе нет возможности борьбы с данной проблемой.

 

Короче к чему это я все?

У меня под 400 000 карт. Возможности ручной обработки неприемлемы. Задумался об автоматизации данного процесса. Мож у кого есть наработки, идеи? 

 

Мои размышления по данному вопросу(дополняйте, расширяйте) :

1. Найти в списке духов у которых нет карт(т е , которые ни разу не были в поликлинике) и скриптом (наверно imacros или autoit(правда он медленнее)) удалить их из базы. Удаление организовать путем объединения одного с остальными поочереди.

2. Найти опечатки. Только как узнать правильного? Запрос в тфомс? ЕРЗ?

3. Используя базу недействительных полюсов (с фтп фонда) найти у кого полюса недействительны и поменять на нормальные (опять же ЕРЗ), те у кого нет полюсов - хз че с ними делать.

4. Оставшихся прогнать через ЕРЗ, получить недостающие данные и забить их в карточку пользователя(imacros или autoit).

5. Есть база померших... их отметить в МИС (imacros или autoit)

6. Есть прикрепленное население(из фонда) его переприкрепить в МИС. (imacros или autoit)

100. Всех, кто остался пусть грохают.

 

Как получу список начну с п1. 

 

!Вопрос! Как эмулировать программу ЕРЗ никто не в курсе? А то через нее все оч долго получается. Она обменивается с сервером фонда по ХТТП....

 

p/s Еще выяснилось, что невозможно определить пользователя, который создал карту...

Я не понял про духов не понял... Если у человека нет карты значит он не был только у тебя... База то общая

ЕРЗ эмулировать не получится.Ну по крайней мере я способа не вижу какого-либо.

Можно подумать о том чтобы скрипт autoit шарил по базе карт и проверял данные в ЕРЗ, а потом переносил их в карту.... 

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


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

хз. как с аутоит тоже думал. выгрузил из "работы с картами" наш список карт. там опечаток дохрена. и только у нас 8000 болезных. как ерз к этому отнесется... через запросы по 50 отправляли, больше не шло.

 

Так то можно из экселя в ерз, а потом из локал.дбф тем же аутоитом в мис.

 

НО Адресов все равно нет.

 

И по каким именно критериям будет удаляться карта?

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


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

Да чем дальше в лес тем ближе вылез

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


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

 

..

ЕРЗ эмулировать не получится.Ну по крайней мере я способа не вижу какого-либо.

Можно подумать о том чтобы скрипт autoit шарил по базе карт и проверял данные в ЕРЗ, а потом переносил их в карту.... 

 

я именно про это и писал..

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


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

Кто что придумал ? Добавляйте!

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


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

хз. как с аутоит тоже думал. выгрузил из "работы с картами" наш список карт. там опечаток дохрена. и только у нас 8000 болезных. как ерз к этому отнесется... через запросы по 50 отправляли, больше не шло.

 

Так то можно из экселя в ерз, а потом из локал.дбф тем же аутоитом в мис.

 

НО Адресов все равно нет.

 

И по каким именно критериям будет удаляться карта?

делай паузы разного размера между запросами рандомом... все работает...

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


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

я через APUVWIN пробовала  - из МИС беру список своих карт, далее выбираю те у которых заполнено ФИО, д/р и полис. Формирую gapu.dbf , где произвольно заполняю необходимые поля, как если бы это было забитое посещение (дату посещения ставлю текущую, чтобы информация была более актуальная; врачебная специальность одна -  произвольная; n_s -  по порядку). Далее из APUVWIN через "Удаленный контроль" отправляю базу в ТФОМС (по-моему в ТФОМС обрабатывается база не более 250 тыс. записей ). В результате обработки полученных из ТФОМС протоколов получаю:

- информацию о новом полисе, если указанный в МИС погашен (при условии что в МИС ФИО и д/р указаны правильно)

- информацию о верных ФИО и д/р, если указанные в МИС содержат ошибки (при условии что в МИС указан верный полис)

 

Адреса, только через ЕРЗ.

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


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

Есть скрипт autoit+firefox для внесения адреса в МИС. Адреса получены через ЕРЗ, но предварительно название улиц необходимо привести в соответствие с МИС. кому-нибудь интересно это интересно?  подробнее опишу

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


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

Есть скрипт autoit+firefox для внесения адреса в МИС. Адреса получены через ЕРЗ, но предварительно название улиц необходимо привести в соответствие с МИС. кому-нибудь интересно это интересно?  подробнее

Интересно!! Приложи исходники с кратким описанием, у кого вопросы будут - задодут

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


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

 

 

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

 

Возможна ошибка если в карте неправильно указан пол

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


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

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

Возможна ошибка если в карте неправильно указан пол

Прошу прощение, а разрешение экрана какое должно быть?

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


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

 

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

Возможна ошибка если в карте неправильно указан пол

Прошу прощение, а разрешение экрана какое должно быть?

 

а это имеет значение?

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


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

 

 

 

 

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

 

Возможна ошибка если в карте неправильно указан пол

 

Много слипов это не круто, так как много лишнего времени тратится. Нужно отслеживать изменения на страницы и на них реагировать. К сожалению не работал с FF.au3 и не могу сказать, как это лучше сделать. В любом случае за скрипт спасибо.

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


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

народ  а полюса никто не делал автодобавление???

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


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

 

 

 

 

 

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

 

Возможна ошибка если в карте неправильно указан пол

 

Много слипов это не круто, так как много лишнего времени тратится. Нужно отслеживать изменения на страницы и на них реагировать. К сожалению не работал с FF.au3 и не могу сказать, как это лучше сделать. В любом случае за скрипт спасибо.

 

Спасибо, в авральном режиме пришлось Autoit+FF осваивать, поэтому все достаточно примитивно =(  Буду дальше стараться как Вы советуете :)

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


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

народ  а полюса никто не делал автодобавление???

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

только вот он делает его циклом, то есть в окно с полисом непрерывно добавляет полис. пока не удалось решить эту проблему.

если удастся, воткну туда еще адрес и будет ок.

если у кого есть мысли насчет решения проблемы, пишите.

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


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

у нас скрипт умеет почти стабильно прогонять пациентов через ЕРЗ. Потом может обратиться в БД ЕРЗ и извлечь оттуда данные.

Сейчас прогон идет по полисам, но можно сделать и по фио в принципе, чтобы соответственно действующий полис узнать.

Сам прогон кривоват, используются нажатия на клавиши, влево, вправо, энтер..

Люблю кодить, но как-то времени сейчас нет, чтобы усовершенствовать

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


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

а чем прогоняешь? у меня autoit прогоняет 1500-2000 в день, если много надо

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


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

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

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


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

Спасибо за скрипт.(Чистка базы 2015) При определенных условиях работает нормально. Но есть случаи когда скрипт не попадает в кнопки:

1. если например дублей больше 3-х. кнопка Объединить смещается вниз

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

3. все же разрешение экрана имеет значение - особенно если монитор маленький или наоборот большой. (пробывал на 19" и 27" широкоформатных - проблемы с попаданием нетуда были различными)

4. невозможно отбить дубли в которых указан только день рождения.

5. и самый неприятный момент - КАК остановить выполнение скрипта если что-то пошло не так???!!!  может я конечно что-то недопонял....(((

напишите если есть такая кнопка)) если ее нет - то ее надо сделать пожалуйста))

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


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

там же можно в аутоите работать непосредственно с формой. Т.е. искать кнопки и нажимать их, т.е. не кликать координаты, что более надежно. По крайней мере стандартная библиотека работает с IE достаточно нормально. Прогон погашенных полисов в Базе населения операторы с помощью скрипта делают.

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


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

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

а что за скрипт можешь поделиться

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


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

вот текст, там только mouse click менять надо

$file = FileOpen("C:\autoit\1.txt", 0)

; 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
$chars = FileReadLine($file)
If @error = -1 Then ExitLoop

;MsgBox(0, "Polis> ", $chars)
WinActivate("Запросы к регистру застрахованных ТФОМС Саратовской области в режиме on-line")
MouseClick("left", 317, 126)
Send($chars)
Send("{ENTER}")
Sleep(1500)
Send("{ENTER}")
Sleep(2000)

WEnd

FileClose($file)
MsgBox(0, "Закончено!", "Все Завершено!")

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


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

Мой скрипт ЕРЗ прогоняет 36 карт в минуту по ФИО и дате рождения. Легко можно переделать под полисы, будет еще быстрее:). Могу выложить, если нужно, но там три координаты нужно менять, и возможно цвета под ними.

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


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

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

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

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

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


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

Войти

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


Войти сейчас