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

Большинство людей, застрахованных по корпоративной медицинской программе, носят с собой страховую карту и почти ничего о ней не знают: что именно покрывает страховка, сколько денег осталось и чем они уже воспользовались. Чтобы это узнать, обычно приходится звонить в HR или страховую компанию и ждать ответа.
Я хотел, чтобы эта информация была доступна в одно нажатие — прямо в личном кабинете, которым человек уже пользуется.
Проблема: полис, который вам не принадлежит
Обычную страховку показать просто. Вы её купили, в договоре указано ваше имя, а национальный страховой реестр возвращает этот полис, когда мы запрашиваем информацию о вас.
С корпоративной медицинской страховкой всё иначе. Работодатель заключает один договор, а сотрудники становятся его участниками — поэтому когда сайт спрашивал: «Какие полисы принадлежат этому человеку?», честный ответ был: «Никакие». Информация существовала, но находилась в совершенно другой системе — той, которой медицинский отдел пользуется каждый день для работы с обращениями и страховыми случаями.
Как это работает
Каждый раз, когда пользователь открывает список своих полисов, происходит четыре шага:
- Кто вы? Личность берётся из собственного подтверждённого профиля авторизованного пользователя — сначала используется его национальный ID, а паспортные данные являются только резервным вариантом. Паспорт можно заменить, а ID-номер остаётся неизменным.
- Участвуете ли вы в корпоративной программе? Мы спрашиваем медицинскую систему, является ли этот человек участником программы.
- Что включает ваша программа? Второй запрос возвращает общий лимит покрытия, уже использованную сумму, сумму по обращениям в обработке, список покрываемых услуг и всю историю обращений.
- Показываем это как обычный полис. В списке появляется стандартная карточка, а внутри неё — отдельная страница с индикатором остатка, списком покрытий и историей обращений.
Что оказалось сложнее, чем выглядит
- Чьи это данные? Система, к которой я обращаюсь, может по одному ID-номеру вернуть имя, работодателя и медицинскую историю любого человека. Поэтому этот номер никогда не приходит из браузера — он берётся только из собственного подтверждённого профиля авторизованного пользователя. Это правило появилось в первой же строке кода, а не после обнаружения проблемы.
- Лимиты, которые нельзя складывать. У каждого вида лечения может быть собственный лимит, и эти лимиты находятся внутри общего лимита программы. Если просто сложить их, результат будет выглядеть логично, но окажется совершенно неверным — пользователь увидит в два раза больше покрытия, чем у него действительно есть. Поэтому используются только итоговые значения самой программы.
- Ноль не всегда означает отсутствие покрытия. Некоторые виды лечения покрываются без ограничения по сумме и приходят из системы с лимитом 0. Если показать это буквально, «0 сум» выглядит как «не покрывается». Поэтому такие услуги вынесены в отдельный список включённых услуг.
- Когда человек увольняется. Страховое покрытие заканчивается вместе с трудовыми отношениями. Поэтому карточка становится неактивной и показывает дату окончания, но история остаётся доступной — она всё ещё может понадобиться человеку.
Почему я этим горжусь
Система корректно переживает проблемы. Если сервис, который хранит лимиты, недоступен, карточка всё равно отображается со всей остальной известной информацией, и один медленный сервис не может повесить всю страницу.
А лучший комплимент для этой функции — когда её вообще никто не замечает: она выглядит и работает так же, как любой другой полис в личном кабинете. Пользователю не нужно знать, что эта информация на самом деле пришла из совершенно другой системы, — именно этого я и хотел добиться.