© Сорокин Б.Б. 2016 г.

Обработка данных РЗН

Думаю, проблема обработки данных РЗН будет интересна всем, кто так или иначе связан с реализацией лекарственных средств.

История вопроса.

С начала февраля 2010 года началась регистрация цен на жизненно необходимые и важнейшие лекарственные средства. Регистрацию проводит Росздравнадзор РФ. На начало мая 2010 года уже зарегистрировано 6281 наименование. Естественно что такой объем данных крайне проблематично обрабатывать в ручную. Хочется создать некое подобие базы данных, которую потом использовать в качестве опорно-справочной информации для работы самых разных бухгалтерских и складских программ. Первый шаг на этом пути - получение указанных данных в формате Excel (о DBF мы даже и не мечтаем). Видимо народные чаяния дошли до ушей наших чиновников и где то с начала марта они стали публиковать вместе с приказом в формате PDF и файл Excel с данными регистрации*. Вот счастье-то какое, но радоваться оказалось рано! Дело в том что в файле Excel цены проставлены в текстовом формате и никаким образом математические операции делать с ними нельзя. Учитывая, что там бывает до 800 строк записей, в голове начала бродить мысль как автоматизировать процесс преобразования "текстовых" цен в "числовые" и свести затраты человеко/часов к минимуму.

И так, рассмотрим решение проблемы на реальном примере.

Берем последний приказ РЗН № 3572 от 29.04.2010 года. Там в приложении есть файл 3572.xls с табличкой на 104 строки. Привожу фрагмент содержимого

фрагмент файла 3572.xls

Как видите цена действительно не в цифровом формате.

Первым делом меняем точку в значении цены на запятую. Для этого выделяем столбец с ценой и производим замену всех точек на запятую.

фрагмент файла 3572.xls

Жмем "Заменить все" и получаем результат.

фрагмент файла 3572.xls

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

фрагмент файла 3572.xls

Далее, зная позицию пробела, можно отобрать все левые символы до позиция пробела, см. строку формул на рисунке.

фрагмент файла 3572.xls

Теперь осталось только преобразовать текст в числовой формат с помощью функции ЗНАЧЕН(), см. строку формул на рисунке.

фрагмент файла 3572.xls

Для тех, кто уже "набил руку" в Excel, не составит труда объединить все вышеописанные шаги в одну формулу, см. строку формул на рисунке.

фрагмент файла 3572.xls

Не могу удержаться от еще одного "камня" адрес наших чиновников. В приведенном примере цены на препараты проставлены как рублях так и в долларах США, а еще там есть евро. Сразу возникает вопрос, а по какому курсу пересчитывать цену в рубли. На это наши чиновники очень важно отвечают: "Надо пересчитывать по курсу на день пересечения препаратом границы Российской Федерации"?!!. И вот тут полный ступор. Откуда бедная адыгейская аптека, находящаяся в ауле Блечепсин и имеющая одну штатную единицу во всех должностях сразу, может получить эту информацию. А чиновники опять отвечают "А вы уточните у поставщика". Поставщик на такие вопросы дать ответ тоже не может т.к. он далеко не единственный в цепочке, да и вообще это "коммерческая тайна". Может все-таки было бы проще поднапрячься нашему Российскому здравнадзору и самому пересчитать цену в рубли для конечного исполнителя, уж они то могут узнать, когда препарат был ввезен на территорию Российской Федерации, а не узнают, своя рука владыка, изобретут какой-нибудь другой критерий. Всем сразу станет легче!

Файл с приведенными выше формулами можно скачать для примера. Желаю всем успехов в преодолении последствий непрофессионализма вышестоящих чиновников!!!

* Прим. автора: Информация по состоянию на 2010 год. С тех пор многое изменилось в лучшую сторону