Как стать автором
Обновить

Комментарии 25

MS SQL Data Quality Services не помогли в разборе и дедупликации?
Не хочу вас расстраивать, но все препараты давно уже отсортированы по МНН в достаточно известных справочниках (доступных как базы данных).
Надо было начать с матчасти, прежде чем городить свои велосипеды :)
Поддерживаю, но объединять по МНН тоже не серебряная пуля.
Ну вот например МНН Дротаверина Гидрохлорид.
Под него попадет как собственно сам Дротаверина Гидрохлорид, так и Но-Шпа а продаются они ой как по разному.
Думаю стоит взять справочник типа Видаль, построить словарь наименований с формами но без дозировок.
И сводить отплясывая от него, это возможно будет понадежнее чем N-граммы или расстояние редактирования.
Хотя я наверно не прав, без дозировок тоже не обойтись
Соглашусь с Вами, что я не большой специалист в Фармацевтике. Я как, Вы говорите, начал с поиска международных баз данных, содержащих МНН, начал изучать SPARQL. Но потом столкнулся с жестокой реальностью: в нашей покупной базе МНН проставлен только для 70% товаров.
К тому же примерно треть продаж в аптеке приходится на не лекарственные препараты (БАДы, косметика и т.д.) которые просто не имеют МНН.
Буду признателен, если приведете пример «известных справочников (доступных как базы данных)», за исключением ГРЛС.
На самом деле у этой задачи нет простого и дешевого решения.
Без ручного сведения все равно не обойтись, можно только сократить объем этой ручной работы.

Можно распердоливать сокращения, сводить по МНН Видалю и всему такому с применением LDA итд — но счастья не будет.
Так я и не говорю, что это 100% решение. После работы алгоритма — провизор все равно руками работает со справочником «Группы товаров», добавляя новое или удаляя лишнее (что напортачил алгоритм :)). НО это лучше чем работать с нуля.
Простое и дешевое решение есть.
Берете полный ассортиментный план какого-нибудь федерального дистрибьютора (например Протека). Каждая позиция его АП содержит код — принимаете его основным.
АП каждого последующего поставщика привязываете к кодам прайса ранее определенного основным. Делаете это через таблички соответствия кодов которые есть практически у каждого поставщика или дистрибьютора*. В результате — у вас привязаны и Донормил 15мг Таб. Х30» производства Upsa Laboratoir Франция и «Донормил таб. 15 мг № 30» Aventis/Bristol-Myers Squibb – Франция к одному и тому же коду. Сравнение цены у разных поставщиков таким образом становится тривиальной задачей.

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

*Не факт что вам их дадут сразу, но всегда есть варианты.
Не подскажете, как обычная аптека может выбросить у того же протека инструмент, который позволит аптеке всегда заказывать препараты по самой низкой цене, а не у протека? При том, что фармдистрибьютеры отлично понимают, что именно системы электронного заказа уронили маржу из-за безумно жёсткой ценовой конкуренции. Особенно в протеке, который этого джинна и выпустил из бутылки.
Кстати, имеет смысл поинтересоваться ценами и условиями у Пермского QWERTY
Возможно это будет оптимальным решением.
Протек приведен лишь в качестве примера. А вообще, есть универсальный алгоритм: если с вами не хочет работать организация — работайте с конкретным человеком в организации.
А что за справочник?
Нужен еще справочник синонимов.
Решения подобного типа есть уже лет так 15, а вы опять с нуля…
Решения подобного типа есть уже лет так 15, а вы опять с нуля…

Может решение где-то и есть, но на фармацевтическом рынке России, в программных комплексах: «е-Фарма» (Спарго Технологии), «Эприка», «Юнико», «1С-Рарус» я этого не нашел :(
А не смотрели в сторону онлайн-сервисов, например inpos.ru/? Они активно работают с аптеками — т.е. ассортимент и связки у них уже есть.
Я ковырял немного — кассовая часть сыровата, но активно допиливается, аналитическая часть уже работает хорошо.
Я не знаю предметную область, но для группировки помимо уже названных способов первое, что приходит в голову — взять состав двух ЛС, отсортировать и «выровнять» как выравниваются ДНК. Иначе говоря, использовать алгоритм сравнения ДНК, где вместо оснований — составляющие ЛС. Это, конечно, относится только к тем товарам, что имеют состав.
Подход интересный, но в прайсах не указывается состав ЛС.
Для решения поставленной задачи есть dqs в ms sql. Даже если он не подходит по причине лицензий, то можно воспользоваться fts, который есть даже в express. Можно банально вытащить термы в таблицу и по совпадениям термов находить похожие препараты. Вообще стоит изучить возможности text mining в ms sql, а потом уже лепить свои велосипеды.

Тоже самое касается и предметной области. Для лекарств уже есть готовые справочники и «инвариантные» наименования.

Описание алгоритмов у вас хорошее, но предметная и техническая область выбраны неверно, ибо в них проблема давно решена.
Для сравнения строк, в которых меняются не отдельные символы, а сразу токены, хорошо подходит Расстояние Жаккара.
image
Сначала бьем две строки на токены, а потом делим количество совпавших на количество уникальных токенов в обеих строках.
>В базе данных это совершенно два разных препарата имеющих разный идентификатор и разное название, НО это одно и тоже.
У вас ассортиментный план кривой, собственно и все. Обычно все живут через привязки того же Протека.
все живут через привязки того же Протека

Но не все же работают в еФарма :) И заказывают товар только через Эприку.
Мы заказываем товары не только в Протеке – в Катрене, Роста, СИА, Пульс, Альянс Хелскеа, Vichy(Мир лечебной косметики), Стелмас, Omron, и т.д.
Как вы видите из списка, так же как и все остальные аптеки мы торгуем, не только фармацевтическими препаратами, но и косметикой, медицинским оборудованием и т.п.

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

О том как работает еФарма знаю только из презентаций. Буду признателен, если расскажите как в ней происходит создание автоматического заказа?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории