Обязательная маркировка медицинских изделий — это не задача «купить принтер». Оборудование покупается за неделю. Перестроить учёт под неё за неделю нельзя, и вот почему.

Сразу оговорюсь: мы систем маркировки не внедряли и не будем делать вид, что внедряли. Эта статья — разбор требований и того, что они означают для устройства системы. Мы строим производственные системы, и в них маркировка ложится или не ложится в зависимости от вещей, которые решаются в первый месяц проекта.

Код перестаёт быть наклейкой и становится сущностью

Пока маркировки нет, изделие в учёте — это строка номенклатуры и количество. Сделали двести, отгрузили двести.

С маркировкой каждый экземпляр получает собственный код, и с этого момента он перестаёт быть «одним из двухсот». У него появляется собственная жизнь: код выпущен, нанесён, изделие произведено, отгружено, выведено из оборота. Это не поле в карточке, это отдельная сущность со своим состоянием и своей историей переходов.

Разница видна на простом вопросе: что произойдёт, если изделие вернули. Без маркировки вы прибавляете единицу к остатку. С маркировкой — возвращаете в оборот конкретный код, и система обязана знать, какой именно, и уметь объяснить, почему он снова доступен.

Три места, где обычно ломается

Партия и экземпляр перестают быть одним и тем же. Раньше «партия 240» была удобной абстракцией. Теперь внутри неё двести сорок отдельных объектов, каждый со своим кодом, и половина операций работает с партией, а половина — с экземпляром. Если система не различает эти два уровня с самого начала, различать их придётся людям в голове.

Момент нанесения кода не совпадает с моментом производства. Коды заказываются заранее, лежат неиспользованными, часть портится при печати, часть наносится на брак. Значит нужен учёт кодов до того, как появилось изделие, — и ответ на вопрос, что случилось с кодом, который выпустили и не использовали.

Отгрузка становится операцией с двумя последствиями. Раньше отгрузка меняла остаток. Теперь она ещё и выводит коды из оборота во внешней системе, а внешняя система может ответить не сразу, ответить ошибкой или ответить дважды. То есть отгрузка перестаёт быть мгновенной записью и становится процессом с состояниями «отправлено», «подтверждено», «отклонено» — со всем, что из этого следует для человека, который стоит у ворот с накладной.

Почему это не пристраивается потом

Связь «код — изделие — заказ — партия — отгрузка» либо возникает в момент создания записи, либо не возникает никогда. Восстановить её задним числом по бумагам стоит дороже, чем построить учёт заново: вы не сможете сказать, какой из двухсот кодов принадлежал изделию, которое сейчас вернул клиент.

Отсюда практический вывод для тех, кто сейчас выбирает систему: спрашивайте не «поддерживает ли маркировку», а где в модели данных живёт экземпляр изделия. Если ответ — «в дополнительном поле», к нему стоит отнестись серьёзно.

Обмен с внешней системой: три вопроса, которые решают всё

Про интеграцию обычно спрашивают «есть ли она». Правильный вопрос — как она себя ведёт, когда всё идёт не по плану. Три случая, и все три бывают.

Ответ пришёл дважды. Сеть моргнула, запрос ушёл повторно, и на той стороне операция выполнилась два раза. Система обязана уметь сказать «это тот же самый вывод из оборота, я его уже сделала», а не создать второй. На инженерном языке это называется идемпотентностью, и её либо закладывают в первый месяц, либо потом ловят руками расхождения по ночам.

Ответа нет вовсе. Внешний сервис недоступен полчаса. Вопрос не технический, а организационный: цех останавливается или продолжает работать? Если продолжает — значит, у операции есть состояние «ждёт подтверждения», и кто-то видит очередь таких операций. Если останавливается — это надо знать заранее и написать в регламенте, а не выяснять у ворот.

Ответ — отказ. Код не принят: не тот статус, не та номенклатура, истёк срок. Отказ должен доехать до человека, который может исправить, с текстом, который он поймёт. «Ошибка 400» на экране кладовщика — это не сообщение, это тупик.

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

Что делать, если система уже есть

Три вопроса, на которые стоит получить ответ до того, как начнутся сроки.

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

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

---

Мы строим системы для производств, где изделие делается под конкретного заказчика и обязано быть прослеживаемым: системы для производства — что входит в первую версию, за какой срок и почём. Про маркировку скажем прямо: это отдельный объём, и мы обсуждаем его до старта, а не после.