В разработке есть такой термин, как жизненный цикл программного обеспечения - от технического задания до снятия системы с эксплуатации. Моя система прошла все этапы жизненного цикла. Хочу рассказать, как появилась, запускалась и работала система, какой опыт при ее внедрении приобрел, какие эмоции получил и какие уроки извлек. История о том, как в одиночку создать приложение, понравиться пользователям, но проиграть как менеджер.
От идеи до внедрения… как это было
Генератором идей сам никогда не был - воплощал, как правило, чужие идеи. Система электронной истории болезни появилась благодаря идее и инициативе руководителя кардиологической клиники и ведущего статистика. Клиника располагалась в довольно скромном 4-этажном здании, но имела свою лабораторию и занималась функциональной диагностикой, а также только-только начинала проводить эндоваскулярные операции. Главврач предложил сделать "Word для врачей", облегчить бумажную рутину плюс собрать статистику лечения по профилю. Идея укладывалась в простое решение – открытие электронной карточки пациента, куда в несколько полей должна вводиться информация о состоянии пациента, проведённых обследованиях, анализах и лечении. Для статистики были заведены справочники, разработаны отчёты. По завершении приёма врач кнопкой "Печать" формирует "историю болезни". Незамысловато и просто для 2010 года. Техническое задание сформировали на 10 страницах, зафиксировав общие договоренности. Оплата за разработку составила месячную заработную плату разработчика на заводе, где я в это время работал. Сложностей в разработке не было.
Реализация не затянулась, и спустя некоторое время мы с женой начали заниматься в клинике внедрением программы и обучением специалистов. Запуск системы оказался тяжёлым. К объективным трудностям при запуске программы прибавились пользовательские проблемы владения ПК: сложности с интерфейсом; неудобно и непонятно, жаловались специалисты, которых мы обучали. На основной работе пришлось взять трудовой отпуск. Бились (иначе не скажешь) две недели. Вернулся на завод, а жена продолжала работу в клинике ещё на протяжении такого же времени. Успешно запустить программу, научить пользователей и не развестись, не разбежаться был наш челлендж. Почти как ремонт, когда все на нервах. Накал страстей и эмоций был действительно велик, возникало много вполне естественных вопросов и проблем. В этот момент у пользователей вдруг возникло недоверие к программе – то, чего мы никак не ожидали. Да, была допущена ошибка, которая, в некоторых случаях, приводила к искажению данных в истории болезни. Ошибка, конечно, была быстро найдена и исправлена, важнее стало восстановить доверие к программе; не сразу, но удалось и это.
Технически программа представляла собой приложение на Delphi с базой данных Firebird версии 1.5. Программа Электронный эпикриз проработала около трёх лет, не получив особо интересных развитий в части интерфейса. Это было основное окно программы.
В 2015 году кардиологическая клиника расширилась, образовался кардиохирургический центр, включивший в себя и клинику с Эпикризом. В новом здании появились новые отделения. Руководство предложило новый контракт на развитие системы. Мы сформировали ТЗ для разработки более серьёзной программы, в которой уже должны работать врачи-хирурги, средний медицинский персонал, лаборатория, сотрудники склада медпрепаратов. Программа получила название КардиоКарта. Функционал значительно расширился за счёт ввода дополнительных отделений - реанимации, трансфузиологии, электрофизиологических исследований и целого комплекса консультационно-диагностических услуг. Не справляясь уже с нагрузкой по доработке программы вечерами, решил уволиться с завода и перейти в кардиохирургический центр на полную ставку, приняв предложение руководства медучреждения.
Появилась возможность уделять больше времени доработке интерфейса, удобству программы и новому функционалу. Каждодневно общаясь с врачами и медперсоналом, с головой погрузился в изучаемую тему, отмечая для себя все нюансы далекой от меня профессии. Создал пусть не универсальную, но востребованную на тот момент программу, учитывая желания и требования врачей.
Руководство кардиохирургического центра генерировало идеи, и мне это нравилось. Центр приобрёл лабораторное оборудование в Турции, с самописной интеграцией. Мы интегрировались системами через переводчика на ломаном английском. Общими усилиями интеграция взлетела и работала все последующие годы. Единственное, что ломалось в связке, — это COM-порты на оборудовании.
Следующими этапами было подключение отделений фармакологии, анестезиологии, трансфузиологии с учётом гемаконов, онлайн -доступа к системе. Параллельно появилось несколько вспомогательных программ для работы фармакологии: печать лейблов на препаратах для выдачи пациентам и взаимодействие с бухгалтерской системой в виде фоновых задач для справочников и переноса остатков.
С онлайн - доступом был интересный случай. За неделю до приезда высокого начальства директор решил их удивить показом не только программы, но и сайта, на который можно зайти по телефону и просмотреть истории. Понимая, что быстро создать сайт нереально, он предложил сделать муляж со статичным контентом. Даже начали выбирать пациентов для отображения. Я воспринял это как вызов и за пару ночей с фреймворком Django, Bootstrap сделал более - менее рабочий вариант сайта с нормальным функционалом: список пациентов, просмотр дневников, анализов, инструментальных исследований, ну и, конечно, сверху небольшой логотип с сердечком. В итоге удалось не просто удивить, а сделать дополнительное средство работы с системой. Онлайн - версия стала развиваться дальше. Сейчас, оглядываясь назад и вспоминая то время, удивляюсь, как мы вообще избежали взломов и атак со стороны вредителей. Защита была на собственном сервере, никаких специалистов по безопасности не было.
В 2016-2017 годах в Республике Казахстан начался переход на электронный документооборот. В большей части это касалось госорганов и социальных служб. Медицина по-прежнему вела бумажные эпикризы. Вся документация была представлена в бумажном виде. Не знаю точных ежемесячных затрат на бумагу, но, думаю, они были значительные. Директор предложил своё видение этой проблемы: раз страна идет на цифровизацию, то и на местах следует проявить инициативу. Решение не заставило себя ждать: руководство объявило о прекращении ведения бумажной истории болезни. Выписной эпикриз печатали пациенту в сокращенном виде и выдавали при выписке. Остальная документация оставалась исключительно в электронном виде. Это был важный этап для нас и для нашей программы: нам и нашей системе доверяли. К этому времени была проведена большая работа по защите и журнализации данных. Ситуации были разные: смерть пациента, прокурорские расследования по историям болезни. В системе была журнализация, которая за всем следила. Делал её сначала для себя, чтобы обезопасить себя относительно изменения данных. Пароли делали надёжные плюс вход по ЭЦП. Работа с ЭЦП реализована через библиотеку криптопровайдера CC Kalkan, основанную на исходном коде продукта OpenSSL. Криптопровайдер CC Kalkan - это разработка Национального удостоверяющего центра для сторонних приложений для работы с ЭЦП.
Достаточно много технических вызовов было при работе с новой системой. В подчинении состояли три технических специалиста, которые занимались железом, консультациями по офисным программам, сети и прочим делам. На мне было администрирование домена, планы архивации, закупки оборудования, а также периодическое решение проблем с медоборудованием.
Госзакупки
Работа в штате не айтишной компании была тяжёлой и стала напрягать: много задач, не соответствующих моей специализации. Плюс в этот момент получил российское гражданство. Решил открыть ИП и сосредоточиться на разработке. Руководство было лояльно к этой идее. Однако возник вопрос интеллектуальной собственности. Претензий на софт у кардиохирургического центра не было. Исходные коды остались за мной. ИП и права интеллектуальной собственности оформил на родственника. Интеллектуальная собственность на нерезидента стала ещё тем испытанием. Мы с женой занялись бухгалтерией, разработкой и сопровождением.
По оплате договорились превратить сумму заработной платы в стоимость сопровождения и перейти к форме взаимодействия через юридические лица. Однако здесь была засада. Центр был частично государственным. Это значит, что все контракты должны проходить через госзакупки. А госзакупки, надо сказать, - это отдельная история с большими проблемами, особенно, когда ты один занимаешься этим архисложным вопросом и делаешь это в первый раз. Разыграли первый конкурс, и, конечно же, я проиграл. Сопровождать систему без исходных кодов набралось около 5-6 разных компаний. Выиграл конкурс предприниматель из Алматы, направил своих технических специалистов на знакомство с программой. Но без исходников вносить изменения не получилось. Решили отправить менеджеров договариваться, предложив мне 40% от стоимости договора. Не смогли договориться; в итоге кардиохирургическому центру пришлось судиться с ними из-за невозможности получить услугу по договору. Суд принял сторону медучреждения, рекомендовав в будущем использовать защищённые интеллектуальные права на программу и заключать договор напрямую с пометкой об интеллектуальной собственности. Оставь я права на свой софт в центре, утратил бы уже при первом закупе и центр, и своё приложение. Потеряв месяц в судебных тяжбах и разбирательствах, в следующей итерации закупок мы уже указали требование на привязку к интеллектуальной собственности и наличии исходных кодов для внесения изменений. Благо, контракт заключается на весь год; на год я забыл о проблемах и сосредоточился на работе.
На рынке быть – по-волчьи выть
Пользователи программы - врачи-функционалисты, кардиохирурги - на городских и областных конференциях делились впечатлениями и успехами использования программы. Директор центра на своем уровне также подчёркивал достижения в автоматизации выполнения медперсоналом рутинных вещей; в качестве доказательства, что с использованием программы далеко ушёл от своих коллег, демонстрировал "мобильное приложение". И в какой-то момент ко мне пришли с деловым предложением адаптации системы к двум другим больницам. Работы было довольно много, были организованы совместные встречи, диалоги с заинтересованными лицами. Обозначился круг проблем, которые предстояло решить, - интеграция с лабораторией, где оборудование сильно отличалось от того, что использовалось в кардиохирургическом центре, отсутствие модуля взаимодействия с железом лаборатории на низком уровне, изменение профиля программы с кардиологического на общий.
На встречах впервые услышал фразу: "Мы же с вами бизнесмены, давайте договариваться". Это значило, что необходимо заплатить деньги, чтобы пройти конкурс, который был бы организован в рамках тендера. Гарантий принятия акта выполненных работ никто, конечно же, не обещал. Это уже зависело от самих работ по запуску системы. Вопроса такого ранее не возникало, я оставался разработчиком, а не бизнесменом, который должен ещё и платить деньги заказчику за продукт. Было несколько встреч вне рамок лечебного учреждения (прямо как в фильмах о шпионах), где озвучивалась сумма. Она была весьма демократичная, видимо, хотели получить премию к заработной плате. До сих пор меня это удивляет, что не жадничали они.
Конкурс - сложная процедура, требующая предоставления большого количества документов. И это не только список работающих в фирме сотрудников, но и полная их характеристика - какую работу выполняют, какими знаниями обладают. В общем, говоря современным языком, имеются ли ресурсы для участия в проекте. Всё было сделано как надо: два разработчика, сотрудник технической поддержки, руководитель. Для нового большого проекта я готов был нанять людей и платить им.
Конкурс был проигран по стоимости. Участвовало несколько компаний, в том числе и российская, но победила в конкурсе компания с южного Казахстана. Она же занялась адаптацией своей системы. Через определённое время они запустились, но сложности были с оборудованием лабораторий. Проигранный конкурс не стал шоком и не вызвал никаких других чувств, кроме желания и необходимости двигаться дальше.
Второе предложение было более лояльным. Мы договорились о внедрении готовой программы в клинику гораздо большего формата. Наученные горьким опытом предыдущих конкурсов и тендеров, решили пойти по проторенной дорожке: устроиться работать разработчиком и внедрять программу в рамках своих обязанностей без передачи интеллектуальной собственности клиенту, таким образом оставив за собой будущую доработку и сопровождение. Всё шло по плану до тех пор, пока мы не встретились с финансовым директором клиники. И без объяснения причин расстались. Не было негатива, предложений об откате, претензий, просто один отработанный день - и до свидания. Предполагаемая причина - это наступление конкурентов, которые шли не просто по пятам, а с опережением.
Конкуренция на рынке
Конкуренты начали не с поликлиник и медцентров, а с местного департамента здравоохранения с целью охвата всех клиник под одно надёжное крыло. Предлагаемая система ориентирована на онлайн, потребности департамента и создания единого центра получения отчётности. Изначально правильный подход с централизацией и задействованием административного ресурса сверху.
Первая система, с которой конкурировали, заменила поликлиническую часть КардиоКарты. Приложение было написано также на Delphi, с базой данных на Oracle. Внедрение было очень долгим, тяжёлым. Требовалось новое железо с выделенным тестовым сервером. Руководство очень удивлялось разнице в подходах при запуске программ. В моём случае использовалось имеющееся оборудование, у «новых» всё по правилам: новая задача - новое железо, новые затраты и лицензии на софт. Внедрение ещё и усложняли мои старые пользователи, которые не хотели перехода. Не со зла, а от привычки к программе, которая стала для них удобной и понятной. Переучиваться пришлось полностью. Часть поликлиники осталась за КардиоКартой, потому как функциональная диагностика стационарных больных проводилась в ней. Пользователи работали сразу в двух программах. В случаях сбоев переходили в КардиоКарту. С технической поддержкой конкурентов установились тёплые отношения, общались, помогали друг другу. Их заинтересовало несколько практических решений по удобству заполнения протоколов осмотров в моей программе. В их системе была похожая функциональность, но выглядела она сложно и путано.
Я старался объективно оценить программу конкурентов, и всё же она казалась мне громоздкой. Это был некий конструктор, из которого можно было всё собрать, настроить окна. Некая 1С в сфере медицины. Справочники содержались в одной большой таблице с типом справочника. Позже, разобравшись в их системе, даже консультировал пользователей. Система прожила около года. Поменялось руководство в департаменте - пришли и новые менеджеры с новой системой.
Следующая компания готова была автоматизировать медицину комплексно. Вот это уже были более сильные конкуренты. Полностью онлайн - система с серверами у местного монополиста связи с резервированием, безопасностью и всем необходимым для работы качественной системы. Руководство центра держалось и просило отсрочку запуска у себя с мотивацией, что имеется собственная система, которая удовлетворяет их полностью. Все понимали, что процесс запущен и его не остановить. Активной разработки с моей стороны уже не было, новый функционал не требовался. Основная работа состояла в поддержке, консультациях, анализе исторических данных. В системе накопился большой объём аналитических данных, которые можно использовать в защите диссертаций и исследований.
Скучная статистика по системе и инструменты работы
Размер базы данных |
50 Гб |
Количество таблиц |
170 |
Общее количество пользователей |
630 |
Активное количество пользователей (ежедневно) |
70 |
Количество историй болезни |
38703 |
Количество уникальных поликлинических записей |
34560 |
Записей журнала изменений |
190М записей |
Кодовая база |
290 файлов |
Срок эксплуатации |
~10 лет |
База данных |
Firebird 2.5 |
Среда разработки |
Delphi 2010, Python, Ibexpert |
Где система сейчас?
Система официально снята с эксплуатации. Исторические данные доступны в системе. Анализ данных добрался и до медицины среди интересующихся врачей и статистиков. В поликлинике периодически используется во время простоя основной системы при осмотрах для формирования и печати функциональных обследований. Сопровождение продолжалось после расторжения контракта ещё несколько месяцев, но в итоге сошло на нет.
Было несколько публикаций о программе в местных интернет изданиях: раз и два.
Найти новых клиентов для программы сложно по причине жёсткой привязки к единственному заказчику. Плюс особенности программы для медучреждений Казахстана усложняют адаптацию для России.
Профит
На протяжении всего времени (а это без малого 10 лет!) кардиохирургический центр зарекомендовал себя как надёжный партнёр, с которым было приятно работать, реализовывать их идеи и пожелания. Результаты нашей совместной работы были видны сразу. Врачам становилось проще работать, статистикам - собирать данные. Недостаточно хорошо, правда, был охвачен финансовый учёт, причина в отсутствии заинтересованности у финансового отдела.
Успех программы очень прост: она разрабатывалась под конкретное предприятие с учётом его специфики и пожеланий пользователей, дорабатывалась оперативно и в срок. Могу сказать, что, работая в штате медицинского учреждения, достиг максимального погружения в специфику медицинской профессии. Руководство центра поступило очень обдуманно, предложив реализовать сначала простое приложение, с незамысловатым интерфейсом, подготовив пользователей к более сложному решению. Внедрение последующих систем шло проще среди подготовленных пользователей.
Как специалист получил технические знания в области Python, настройки серверов, администрирования баз данных, оптимизации запросов.
Возможно, не было сделано главного – не удалось собрать, создать команду, которой под силу было бы решение сложных и трудных задач. Мы могли бы сделать больше. Были специалисты технической поддержки, в том числе и моя жена, но программа так и осталась программой одного разработчика. Не было видения развития системы хотя бы в обозримом будущем, вне клиники с кардиологическим уклоном. Не ухватил идею развития системы онлайн. Причина утраты влияния программы видится и в отсутствии управленца. Приходилось работать с заказчиком, а вечером реализовывать его требования и предложения. Наутро же снова становишься менеджером и общаешься по госзакупкам. Быть в одном лице разработчиком, менеджером и бизнесменом сложно. В долгой перспективе, как показал мой опыт, у меня не получилось. И все же этот опыт бесценен. Вопреки расхожему мнению, что один в поле не воин, берусь утверждать обратное. Смысл жизни в том и состоит, чтобы реагировать на вызовы, любить свою работу и ловить при этом кураж.
Комментарии (17)
Thomas_Hanniball
16.06.2023 20:24+3Хороший пример того, что недостаточно просто создать хороший продукт, чтобы он взлетел и стал популярным.
VladimirViktorovich
16.06.2023 20:24+4Спасибо, что поделились своим опытом!
Вы молодец, что сделали такие позитивные выводы. И полностью согласен с тем, что: "Смысл жизни в том и состоит, чтобы реагировать на вызовы, любить свою работу и ловить при этом кураж".
msdos9
16.06.2023 20:24Приложение на Delphi, юзеров 630. Как происходило обновление?
Filyushin Автор
16.06.2023 20:24Рабочих мест по количеству одновременно работающих. 630 это всего пользователей. Исполняемый файл на файловом хранилище, на рабочих местах ярлыки вынесены. Обновление ранним утром. У кого сессии висят - принудительно завершал, перезапускались потом.
zetroot
16.06.2023 20:24+2А как в Казахстане обстоят дела с регистрацией софта как медизделия?
В России с 2017 года начали методично закапывать такие вышедшие из in-house разработки проекты требованием наличия РУ Росздравнадзора. Получить его можно, но это долго, дорого и очень бюрократично.
Без РУ можно было бы пользоваться, если это полностью внутренняя разработка медучереждения, но вот поставлять через тендеры уже никак.
Filyushin Автор
16.06.2023 20:24+3В то время не было никаких стандартов в этой части, никто не следил. Сейчас понимаю, что и перс.данные и истории болезней, у которых срок хранения и формат хранения бумажный. Как удалось избежать этого - большой вопрос к руководству. Директор консультировался с департаментом, запрета не было на использование. Что не запрещено, то разрешено.
beduin01
16.06.2023 20:24Мне интересно как вообще кому то ума хватило участвовать в закупке услуг на поддержку софта без исходных кодов? Чем эти люди думали? Или в их действиях была какая то логика?
Кстати вопрос. А в требованиях к закупке нельзя было прописать необходимость наличия у исполнителя исходных кодов?)
Filyushin Автор
16.06.2023 20:24+1Требование исходного кода намекает на одного поставщика, что в закупках уже ограничение и подходят к этому с неохотой. Всегда же можно найти автора и платить ему % от суммы договора, как первые и решили делать.
beduin01
16.06.2023 20:24Понял, а допустим как на счет требования знания экзотических языков или каких то других редких компенсаций? Я так понимаю комиссия не может проверить нужно ли это реально или притянуто за уши
Filyushin Автор
16.06.2023 20:24+2Сфера госзакупок это сплошные требования и судебные тяжбы против них. Как выставить требование чтобы не попасть под лоббирование интересовов компании?
Было множество историй при покупке программного обеспечения через госзакупки в то время. Я вам лучше отвечу небольшой историей. Историей о приобретении антивирусного программного обеспечения для той же самой кардиоклиники. Нашёлся в Казахстане один "крутой" производитель собственного антивируса, который выигрывал все закупы антивирусов. Выходил на госзакупки от лица ИП, который занимался только распространением. Затем делал запрос к компании, в которой был разработчиком этого антивируса и подтверждал, что данный тип ПО подходит под требования закупок. Первое, что он говорил на досудебке и на суде: я национальный поставщик, импортозамещение и прочее, прочее. Знакомо?
Дело доходило до суда, он демонстрировал рекламные проспекты, в которых были указаны возможности отражения любых атак и любых вирусов. Таким образом, его ПО подходило абсолютно под все требования закупок антивирусного обеспечения. С ним судились долго, его это не расстраивало нисколько. Больницы и поликлиники сидели в это время без антивирусов.
Мы с ним тоже судились и нашли, вот прямо, совсем мелкое утверждение у него на коробке, которое не соответствовало действительности. Но большинство договаривалось с ним, что один раз он продаёт свою лицензию, а в следующий раз не участвует в закупках. И лежали эти коробки с софтом у них невостребованные.
Спустя год-другой только смогли найти лазейку и понять как всё работает. Стали продлевать лицензии и в рамках продления уже докупать недостающие. Соответственно, и поставщики нужны были занимающиеся оф. дистрибьюцией.
Понимаете о чём я? В нашем случае госзакупки были борьбой снаряда и брони.
eton65
16.06.2023 20:24Вы так много вкладываетесь в один отдельно взятый продукт (для одного потребителя), что даже жалко, что вам потом приходится из него уходить. Не думали перейти на создание и распространение одного продукта для многих покупателей его?
Filyushin Автор
16.06.2023 20:24Не хватило универсальности ко всему сказанному в статье ещё.
Asdf2002
16.06.2023 20:24прочёл вашу заметку с большим удовольствием. Просто снимаю шляпу перед разработчиками от б-га, которые на 3 головы выше меня, и которые делают реально полезные вещи. Но я также задумался и о том, что будущее за конструкторами типа 1С или SAP, увы. Пропало место под солнцем для крафтового софта
Filyushin Автор
16.06.2023 20:24Очень много сфер для автоматизации, которые повторяются и унифицированы. Они, конечно же, могут быть автоматизированы при помощи конструкторов. При общении с другими клиниками прослеживались идентичные процессы: дневники осмотров, оценки боли, темп. листы и прочее.
Это какими нужно быть крутыми разработчиками, чтобы предусмотреть все нюансы будущего использования и пожелания по доработке (плагины и дополнения)? Потому как у каждой клиники есть свои пожелания.
У конкурентов были другие проблемы: низкая скорость реагирования ТП, невозможность обучить всех пользователей лично, знания передавались между пользователями. Большие объёмы поставки имеют другие проблемы.
quaer
16.06.2023 20:24+2Если создавать софт, которым пользуется сам автор ПО, не так грустно, когда оно никому не надо.
Travisw
Сколько заработал?
Filyushin Автор
Ни тогда, ни сейчас не считал этого. Жили на эти деньги с семьёй, переезд, устройство в новом городе. Чтобы купил дом или квартиру - нет. Денег хватало, чтобы не заниматься другими проектами.