ИС МДЛП (Информационная система мониторинга движения лекарственных препаратов) создана с целью информационного обеспечения маркировки товаров средствами идентификации и мониторинга движения лекарственных препаратов.
Система маркировки лекарственных препаратов охватывает все этапы оборота товара: от производителя до потребителя. На каждом шаге код маркировки проверяется.
Для контроля лекарственных препаратов используется двумерный штрих-код Data Matrix, наносимый на поверхность упаковки. Data Matrix содержит в себе сведения о штрих-коде товара и коде идентификации.
Лекарственные препараты могут быть проданы в упаковке или же расфасованы.
Регистрация лекарственного препарата реализована для ФР Атол и Атол 5.0.
Конфигурирование модуля
Модуль МДЛП активируется параметром mdlp
в конфигурационном файле /linuxcash/cash/conf/ncash.
ini.d/mdlp.ini
в секции [plugins]
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
mdlp | логический |
| Активация модуля МДЛП | По умолчанию off |
[plugins] ; Мониторинг движения лекарственных препаратов ;mdlp = off
Настройка модуля МДЛП производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
.
Каждой аптечной сети Минздрав или Росздравнадзор присваивает идентификатор субъекта обращения в ИС МДЛП. Идентификатор необходимо указать с помощью параметра sid
.
Маска для проверки кода маркировки лекарственного препарата задается параметром dataMatrixMask
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
sid | строковый | Идентификатор места деятельности субъекта обращения | По умолчанию значение не задано |
dataMatrixMask | строковый | Маска для проверки Data Matrix лекарственного препарата | По умолчанию |
[Mdlp] ; Настройки плагина мониторинга движения лекарственных препаратов ; Идентификатор места деятельности субъекта обращения ; По умолчанию "" ;sid = "" ; Маска для проверки DataMatrix лекарственного препарата ; По умолчанию 01\d{14}21[a-zA-Z0-9]{13}91.{4}92.{44} ;dataMatrixMask=01\d{14}21[a-zA-Z0-9]{13}91.{4}92.{44}
Продажа лекарственных препаратов
Добавление лекарственных препаратов
Для определения лекарственного препарата у товара должен быть установлен признак tmctype = 5
(БД Dictionaries
таблица barcodes
). При добавлении товара требуется считывание кода маркировки товара.
Добавление в чек товара с кодом маркировки осуществляется двумя способами:
- Последовательным сканированием штрих-кода товара и кода маркировки:
- если штрих-код товара соответствует коду маркировки, то товар будет добавлен в чек;
- если штрих-код товара не соответствует коду маркировки, то на экран будет выведена ошибка "Код маркировки не соответствует штрих-коду", товар в чек не будет добавлен.
- Сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется) - настраивается с помощью правил разбора штрих-кода.
Добавление лекарственного препарата другими способами (по коду, по наименованию, с помощью горячих клавиш) запрещено.
Так как код маркировки представляет собой уникальный код, то в товарной позиции может быть не более одной единицы товара. Применение модификатора "Изменение количества" к позиции с упаковкой лекарственного препарата запрещено.
Добавление в чек обычного товара по коду маркировки лекарственного препарата определяется параметром oldMedicine
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
:
- при значении
true
товар будет добавлен в чек; - при значении
false
при добавлении товара в чек на экран будет выведена ошибка "У товара не указан признак маркированного лекарственного препарата. Обратитесь в службу техподдержки".
В кассовом ПО Artix существует возможность поиска цены лекарственных препаратов с использованием кода маркировки, для этого необходимо:
- Загрузить цены для лекарственных препаратов в БД
Dictionaries
таблицуprices
(поля для заполнения:barcode
- код маркировки,price
- цена товара,packingprice
- цена товара для расфасовки; остальные поля заполняются по необходимости). - Включить настройку
useMarkToFindPrice
в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/mdlp.ini
.
При добавлении лекарственного препарата в чек поиск цены осуществляется по коду маркировки в БД Dictionaries
таблице prices
:
- если в таблице есть соответствующая запись, то используется цена из поля
price
. При расфасовке используется значение поляpaсkingprice
; - если в таблице нет соответствующей записи, поиск цены осуществляется по умолчанию.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
oldMedicine | логический |
| Добавлять маркированный лекарственный препарат в чек как немаркированный, если признак лекарственного препарата не задан и ввод происходит по коду маркировки | По умолчанию false |
useMarkToFindPrice | логический |
| Использование кода маркировки для поиска цены лекарственного препарата | По умолчанию false |
[Mdlp] ; Настройки плагина мониторинга движения лекарственных препаратов ... ; Добавлять маркированный лекарственный препарат в чек как немаркированный, если признак лекарственного препарата не задан и ввод происходит по коду маркировки ; По умолчанию false ;oldMedicine = false ... ; Использование кода маркировки для поиска цены лекарственного препарата ; По умолчанию false ;useMarkToFindPrice = false
Удаление лекарственных препаратов
При сторнировании лекарственных препаратов требуется считывание кода маркировки товара. После сканирования кода маркировки из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выделена при операции сторнирования. При сторнировании всего чека, содержащего лекарственные препараты, операция выполняется без считывания кодов маркировки.
Возврат лекарственных препаратов
Возврат лекарственных препаратов в аптечную сеть может быть осуществлен в режиме возврата или возврата по чеку продажи.
В режиме возврата добавление лекарственного препарата в чек выполняется аналогично добавлению в чек продажи.
При возврате по чеку продажи позицию для возврата можно выбрать:
- Используя клавиши навигации с подтверждением выбора нажатием клавиши "Ввод" и последующим считыванием кода маркировки товара.
- Считав штрих-код товара и код маркировки.
- Считав код маркировки.
Если при возврате по чеку продажи не используется форма выбора товаров, то при переходе к формированию чека возврата лекарственные препараты удаляются из чека.
Выбор лекарственных препаратов в форме выбора товара для возврата не может быть отменен. Сторнирование лекарственных препаратов в этом случае выполняется в режиме формирования чека возврата.
Вернуть лекарственный препарат, который не был продан невозможно. Возврат лекарственных препаратов по чеку продажи на другой кассе запрещен.
Расфасовка лекарственных препаратов
В упаковке лекарственного препарата может быть несколько блистеров, которые можно продать по отдельности друг от друга. Для таких товаров в кассовом ПО Artix существует возможность применения расфасовки. Подробнее о настройке и применении модификатора можно прочитать в разделе "Расфасовка товара".
При продаже расфасованных лекарственных препаратов необходимо отсканировать код маркировки, который нанесен на упаковку товара.
При продаже/возврате расфасованных лекарственных препаратов осуществляется контроль количества товара. При попытке продать/вернуть большее количество блистеров, чем было в упаковке на экран будет выведена ошибка "Количество товара с кодом маркировки не может превышать количество товара в упаковке".
Если была осуществлена продажа упаковки лекарственного препарата (без расфасовки), то при попытке вернуть лекарственный препарат частично на экран будет выведена ошибка "Нельзя вернуть позицию с расфасовкой. Товар был продан упаковкой".
В упаковке лекарственного препарата 10 блистеров.
Первый покупатель приобретает 3 блистера. Кассир добавляет в чек лекарственный препарат с расфасовкой, указывая количество 3. При добавлении товара необходимо сканировать код маркировки с упаковки.
Второй покупатель приобретает 7 блистеров. Кассир добавляет в чек лекарственный препарат с расфасовкой, указывая количество 7. При добавлении товара необходимо сканировать код маркировки с упаковки.
Последующая продажа лекарственного препарата с данным кодом маркировки невозможна.
Проверка кодов маркировки лекарственных препаратов
Регламент работы по проверке кодов маркировки при продаже/возврате лекарственных препаратов определяется структурой торговой сети. Проверка кодов маркировки предполагает:
- проверку на факт продажи/возврата лекарственных препаратов (в БД кассовой программы),
- проверку статуса кода маркировки на кассовом сервере,
- проверку кода маркировки в "белом" списке на сервере (коды маркировки, разрешенные к продаже).
Структура сети с кассовыми серверами
Структура сети с кассовыми серверами позволяет осуществлять контроль:
- дублирования кодов маркировки (запрет повторной продажи/возврата одной и той же упаковки/блистера),
- разрешенных к продаже кодов маркировки (запрет продажи/возврата товаров, коды маркировки которых не были внесены в "белый" список).
Настройки подключения к кассовому серверу задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
:
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
enableMarkVerify | логический |
| Проверка кодов маркировки на сервере | По умолчанию false |
markVerifyUrl | строковый | Url сервера проверки кодов маркировки | По умолчанию Для работы с КС используется следующий url " | |
markVerifyTimeout | целочисленный | Таймаут обращения к серверу проверки кодов маркировки в секундах | По умолчанию 30 | |
ignoreMarkVerifyErrors | логический |
| Игнорировать ошибки обращения к серверу проверки кодов маркировки | По умолчанию true |
uniqueIdPattern | строковый | Шаблон для формирования уникального идентификатора операции резервирования | По умолчанию "%(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d]) " |
[Mdlp] ; Настройки плагина мониторинга движения лекарственных препаратов ... ; Проверка кодов маркировки на сервере ; По умолчанию false ;enableMarkVerify = false ; Url сервера проверки кодов маркировки ; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/partialmark/" ;markVerifyUrl = http://localhost:8080/ ; Таймаут обращения к серверу проверки кодов маркировки в секундах ; По умолчанию 30 ;markVerifyTimeout = 30 ; Игнорировать ошибки обращения к серверу проверки кодов маркировки ; По умолчанию true ;ignoreMarkVerifyErrors = true ; Шаблон для формирования уникального идентификатора операции резервирования ; По умолчанию %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d]) ;uniqueIdPattern = %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d])
Проверка кодов маркировки на сервере задается при помощи параметра enableMarkVerify
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
:
- при значении
true
осуществляется проверка кода маркировки на сервере; - при значении
false
проверка кода маркировки на сервере не осуществляется.
Для проверки кодов маркировки на сервере торговой сети в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
необходимо задать параметры подключения к серверу:
markVerifyUrl
- URL сервера, где хранятся данные о кодах маркировки;markVerifyTimeout
- таймаут ожидания ответа от сервера при проверке кодов маркировки.
Настройками программы можно разрешать или запрещать продажу/возврат лекарственных товаров при возникновении ошибок обращения к серверу. Возможность игнорирования возникающих ошибок определяется параметром ignoreMarkVerifyErrors
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
:
- при значении
true
в случае возникновения ошибок подключения к серверу они игнорируются, продажа/возврат лекарственных товаров осуществляется без проверки кодов маркировки на сервере; - при значении
false
в случае возникновения ошибок подключения к серверу продажа товара не может быть выполнена. На экран будет выведена ошибка "Нет связи с сервером. Попробуйте позже".
Шаблон для формирования уникального идентификатора операции резервирования определяется параметром uniqueIdPattern
конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini
в секции [Mdlp]
. Идентификатор записывается БД DocumentsAll
таблица partialmark
в поле reserveId
(БД кассового сервера).
При добавлении лекарственных товаров в чек продажи/возврата на кассовый сервер отправляется REST-запрос на получение статуса кода маркировки. Статус кода маркировки может принимать следующие значения:
- 0 - Марка не зарегистрирована в БД;
- 7 - Акцизная марка отсутствует в списке разрешенных к продаже;
- 10 - Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не передан;
- 11 - Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найдено;
- 100 - Повторный запрос подтверждения продажи марки;
- 101 - Заблокирована продажа/возврат марки в справочнике;
- 102 - Превышен лимит продажи товара, который продается частями. Например, продажа блистеров из одной упаковки;
- Любое другое значение - неизвестный статус акцизной марки.
Дальнейшее поведение программы определяется полученным статусом.
Статус кода маркировки | Поведение кассы при продаже | Поведение кассы при возврате |
---|---|---|
Марка не зарегистрирована в БД | Товар с акцизной маркой добавляется в чек и может быть продан. | Если товар был продан, то он будет добавлен в чек возврата. Если товар не был ранее продан, то на экран выводится сообщение "Товар с таким кодом маркировки не был продан", товар не добавляется в чек и не может быть возвращен. |
Акцизная марка отсутствует в списке разрешенных к продаже | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже". | |
Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не передан | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки в белом списке". | |
Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найдено | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найдено соответствие акцизной марки и штрих-кода в белом списке". | |
Повторный запрос подтверждения продажи марки | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. По такому запросу уже было подтверждение продажи марки". | |
Заблокирована продажа/возврат марки в справочнике | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Заблокирована продажа/возврат в справочнике". | |
Превышен лимит продажи товара, который продается частями. Например, продажа блистеров из одной упаковки | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Превышен лимит продажи". | |
Неизвестный статус акцизной марки | Товар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере". |
После добавления товара в чек продажи/возврата код маркировки ставится в резерв на кассовом сервере.
Изменение статуса кода маркировки на кассовом сервере в зависимости от операции выполняется:
- в режиме онлайн (по REST-запросу) - резервирование кода маркировки;
- в режиме оффлайн (через очередь Artix-Queue) - снятие с резерва кода маркировки (сторнирование), после закрытия чека перевод в статус "продан", "возвращен".