Решил опубликовать старые записи на публичном форуме. Если кто узнает себя, не обижайтесь. Надеюсь кому-нибудь будет полезно. Часть текста может идти потоком сознания, но отдельные истории отделены друг от друга.
it 21.08.2013 17:17 Про медицинское оборудование
Небольшой оффтоп не связанный с МИС, но связанный с автоматизацией медицинской организации. По мотивам некоего функционала http://oldmann.livejournal.com/21012.html У нас в организации в разных отделениях есть различное медицинское оборудование, периодически оно начинает ломаться, глючить и прочие прелести. Теоретически его ремонтом должны заниматься специально обученные люди от поставщиков, но на практике в таком оборудовании используются обычные компьютеры с вездесущей Windows, поэтому IT-отдел нашей ЛПУ доблестно отправляется на выявление недолжного рабочего состояния этого оборудования. А если у прибора кончилась гарантия, то вообще всё может быть ужасно. Итак несколько небольших историй.
1) Некий прибор суточного мониторирования АД или ЭКГ. Нет связи с прибором. Приехал сертифицированный инженер, проверил прибор - все нормальное, проверил кабель - все нормально, значит виноват компьютер, вызывается IT-отдел. Смотрим на все это безобразие, смотрим как подключен прибор, через com-порт. Берем обычный провод, подключаем, замыкаем контакты 2-3, запускаем hyperterminal пишем текст. На экране текст отображается, значит порт работает. Берем кабель от прибора, прозваниваем контакты, связь есть только на двух из трех проводов.
Кто не в курсе, в последовательном порту, он же COM, он же Serial Port, он же RS232 используется три основных провода, для сигнала в одну сторону, в обратную, и общий земля.
В кабеле от прибора был оборван сигнальный кабель от компьютера к прибору.
Ну все понятно, кабель виноват. Звоним поставщику, говорим все, что о них думаем и требуем новый кабель. Приезжает инженер с новым кабелем, подключает. На наш вопрос: Вы прозванивали кабель? - Да - Ну там же три провода, а прозванивается только два. - А я думал двух достаточно... Занавес... Теперь мы эту фразу "А я думал двух достаточно" используем наравне с "некий функционал"
2) опять прибор суточного мониторирования. Купили еще парочку приборов для другого отдельного кабинета. Приехал инженер, поставил свой софт на компьютер, подключил SD-карточку с прибора, софт данных не видит. Взяли приборы из старого кабинета, нету данных. Принесли новые приборы в старый кабинет, все нормально. Внезапно выяснилось для софта к приборам нужен отдельный аппаратный LPT-ключ. У поставщика этих ключей нет и похоже не будет. Вызывается IT-отдел, ваши предложения - ну надо подумать. В течение недели находится эмулятор Sentinel ключей, делается дамп прошивки, и все работает на новом рабочем месте.
Такая история повторяется еще несколько раз.
Если кому нужно, есть софт и прошивки SCHILLER MT-100, MT-200, Medilog DARWIN, cardy analyzer 05
3) прибор для томографии глаза. В одно прекрасное утро компьютер с прибором перестает загружаться, винда показывает синий экран при загрузке и уходит в рестарт, по кругу... Пациенты ждут, прием стоит, вызывается IT-отдел. Стандартная процедура, проверка жесткого диска, есть бэдблок. Тк прибор на гарантии сказали, пусть меняют жесткий диск. тк нужно продолжать прием - сделали remap, компьютер заработал... Спустя полгода ситуация один в один, жесткий диск не поменяли с прошлого раза. На вопрос почему ответа нет. Гарантия кончилась, поставили новый жесткий диск и записали на него копию со старого. Старый носитель отключили и оставили в системном блоке, как копию на всякий случай. Через неделю приезжает инженер. О его приезде узнаем мы и приходим узнать, чего как и зачем, если все уже работает. Узнаем: инженер поменял жесткие диски местами, те отключил новый диск, и на старый сбойный диск установил систему с нуля. Мы задаем логичный вопрос, зачем? А я думал это специально новый диск приготовили вместо старого.... ... После очередного приезда инженера не печатал принтер. Выяснилось, что для принтера не установлены драйвера, в самой программе не настроен принтер. Куда дел старые драйвера инженер, история умалчивает, видимо съел после профилактической установки системы с нуля.
4) Есть у нас в двух кабинетах замечательные приборы урофлоуметры Urocap-III. Меряют они объем и скорость мочеиспускания, подключены к компьютерам через com-порт. Технически они реализованы как стакан на весах, на компьютер передаются показания весов, и программа рисует красивые графики. У этих приборов есть одна проблема, периодически у них слетает калибровка весов. Без калибровки графики не строит. Калибровка осуществляется с помощью программы с командами вида: поставьте пустой стакан, налейте в стакан пол-литра. Медсестра эту хитрую процедуру осуществить не может, поэтому вызывают сами знаете кого. Калибровка слетает без системы, иногда два дня подряд, а иногда и через несколько недель. Видимо кто-то все-таки осилил пожаловаться поставщику, и к нам пришла замечательная бумага из сервиса Цитата: При выполнении работ по договору №ХХХ, а именно диагностика неисправности урофлоуметра "Urocap III" (заводской номер 070614ХХ, Канада, 2009 г.) выявлено несоответствие программного обеспечения урофлоуметра "Urocap III" и компьютера. Программное обеспечение урофлоуметра "Urocap III" дает сбой при работе с операционной системой «Windows Vista», установленной на компьютере. Рекомендуется замена операционной системы компьютера «Windows Vista» на операционную систему Windows ХР 32 бит, или Windows 7 32 бит. С учетом того, что компьютер с предустановленной Vista, будь она не ладна, поставлялся вместе с прибором изначально. А во вторых, параметры калибровки хранятся в самих весах, и сам софт никакого непосредственного участия в калибровке не принимает, тк весы принимают только несколько команд вида слать показания весов, калиброваться, даже сам текст Put an empty container приходит с самих весов на компьютер. Это было выяснено через замечательную программу Sysinternals Portmon. То я даже не знаю как реагировать...
5) про кольпоскоп. Однажды приехал инженер в субботу поменять камеру в кольпоскопе. А кольпоскоп, как говорится, состоит из совокупности рычагов, освещения, оптики Carl Zeiss, и камеры, подключенной к компьютеру. Камеру, он, наверное, поменял, но вот на следующем элементе у него возникла загвоздка. Подключив новый переходник между камерой и компьютером, у него видимо не нашлось драйверов для windows XP, и был вызван сотрудник IT-отдела для нехитрой операции установки windows 7 вместо ХР. Сотрудник эту нехитрую операцию сделал, инженер кольпоскопа камеру подключил, поставил свой мега-софт на компьютер и был таков. В понедельник обнаруживается, что изображение с камеры все СИНЕЕ. Опять зовутся бойцы из нашего отдела. В процессе выясняется, что камера выдает сигнал по S-video кабелю, который подключается к usb-адаптеру видеозахвата. Что новую камеру можно было спокойно подключить к старому переходнику без переустановки системы. Кольпоскоп в компьютере работает как обычная web-камера, на которой можно настроить баланс белого. Баланс белого настроить можно только через специальный софт для видеозахвата Virtualdub или от майкрософта AMCAP. В самой мега-программе для кольпоскопа таких настроек нет, зато это мега-программа требует аж аппаратный hasp-ключ, чтобы не украли.
Крутили ползунки настроек цветности туда-сюда, вроде стало лучше, но все равно что-то не так. Сервис по телефону опять внятно ничего сказать не может. И вдруг случайно, в самом низу кольпоскопа обнаруживается замечательная кнопка White Balance, после нажатия которой свершается чудо, цвет человеческой кожи из мертвецки синего становится живительно-розовым...
А еще однажды врачи умудрились раздавить реостат регулировки яркости лампы, но это уже была другая история...
6) МРТ, да у нас есть мрт на 1,5 Тесла :cool: очередная история по мотивам анекдота
Цитата
Сломался туристический автобус, водитель два часа копается - не может починить. Весь на нервах. А тут мальчик - а я знаю чего мы не можем ехать, а я знаю чего мы не можем ехать. Водитель весь на нервах - ну чего? Мальчик - автобус... сломался!
Все, наверное, видели томограф, большое кольцо в виде тора, оно же бублика. В это кольцо помещается пациент с помощью платформы-койки под названием стол. Эта платформа двигается горизонтально внутрь бублика, и вертикально, поднимая лежачего пациента с пола на уровень центра томографа. Так вот однажды после одного пациента эта платформа перестала двигаться, то ли он весил выше допустимого значения для платформы, то ли спрыгнул с нее, об этом врачи умалчивают. Сотрудники нашего технический отдела разобрали корпус томографа, нашли зажеванную механизмом пластиковую ленту от какой-то заглушки, вытащили ее. Тк они же собирали томограф вместе с инженерами установщика, то примерно знают, что откуда и куда собирать. В общем убрали "лишнюю" деталь, начали проверять платформу, горизонтально она двигается, а вертикально только вверх, вниз приходится ее опускать вручную. После некоторого изучения выяснилось, что не срабатывает какой-то датчик, и если просто рукой потянуть за край платформы, то слышно как щелкает реле, и платформа начинает двигаться.
Через некоторое время приехал инженер для диагностики данного высоко-технологического программно-аппаратного комплекса и выдал очередную гениальную бумажку:
Цитата
Не работает стол.
И уехал, видимо, за специальными инженерами по ремонту столов.
7) про табло Есть у нас такое большое во всю стену черно-зеленое электронное табло с расписанием врачей в регистратуре. Табло управляется с компьютера через специальную программу. Когда его ставили, от нас попросили дословно "любой системный блок с материнкой, в которую вставляются две видеокарты PCI-E, и установленной win7" Поставщик собрал панели, вставил две видеокарты в комп, подключил к 4 DVI-портам свои мегапереходники, и уже от переходников оптические кабели к табло. Также в переходники вставляются занятные DVI-заглушки, имитирующие подключение монитора к видеокарте. И вот эти занятные заглушки через некоторое время начали сгорать, компьютер начинает думать, что к видеокарте подключен монитор с небольшим разрешением, выходная картинка скукоживается, на табло расписания появляются квадраты. Первая отмазка у сборщика была, дескать у вас винда нелицензионная. Потом они осилили написать официальное письмо: несоответствующая конфигурация компьютера. С учетом вышесказанной фразы "любой блок" мы им также официально отписали: укажите требуемую конфигурацию. В общем на этом все и закончилось, заглушки начали реже сгорать...
8) про DICOM-принтер Kodak DryView 8700 Это длинная по времени история, когда-то этот принтер до 2009 года стоял вместе с рентгеновским томографом. Сам томограф к тому времени благополучно сдох. Томограф поменяли, но новый аппарат не смог печатать на этом принтере, хотя инженеры из Toshiba, когда проектировали установку комплекса, заявляли их совместимость. Компании пришлось предоставить новый принтер с большой скидкой. Героя истории уволокли куда-то в рентгеновское отделение. Через некоторое время этот принтер снова решили применить для печати снимков уже с другого рентгеновского аппарата, и он снова не работал. Приезжал инженер по софту из кодака, dicom-печать работала только из специальной софтины, еще можно было распечатать через jdicom, а из Kodak E-film не работало. В итоге инженер сказал, вот такой вот dicom у вендоров. Прошло еще некоторое время, в лучевом отделении появился новый рентген-аппарат от Toshiba, и свершилось чудо, принтер ожил. Но принтер жил своей интересной жизнью, ящик размером с холодильник скрипел, жужжал, крутил своими внутренними колесиками, иногда печатал разные коды ошибок на своем маленьком экранчике. Нужно было периодически придти, открыть боковую крышку, закрыть снова, какой-нибудь внутренний датчик отлипал и принтер продолжал печатать. Иногда под конец дня это уже не помогало, и лаборанты с техотделом выключали его с надеждой, что завтра он заработает. На следующий день обычно он работал. К самому принтеру-огромному ящику подключался не менее брутальный системный блок компьютера. Компьютер был уровня Pentium II, на нем была установлена Windows NT 4.0, из софта там было несколько служб для обмена данными с принтером. В компьютере была спец интерфейсная плата с двумя оптическими выходами на принтер. Однажды софт перестал отправлять данные на принтер, пока прыгали вокруг принтера, стал известен ценник выезда инженера для ремонта - 50тыс р. Но мы взяли заранее сделанный образ жесткого диска и развернули на комп, все заработало... спасибо Clonezilla... Еще через год принтер выдал новую ошибку на своем экранчике. Звонок в сервис - принтер давно снят с производства, его ремонтом мы не занимаемся. Попросили тех документацию на устройство. Код ошибки означает сбой какого-то внутреннего датчика, искать этот датчик ни у кого желания уже не было. И принтер снова уволокли в дальний угол... конец На самом деле не конец, через еще пару лет списанный принтер уехал в регионы, и как говорят, начал снова шуршать своими колесиками.
9) Еще у нас есть dicom принтер Agfa DRYSTAR 5302 Была с ним забавная ситуация, когда в принтере зависла очередь печати. В статусе было две ошибки одновременно. Принтер требовал выполнить калибровку лотков, и поэтому не печатал входящие задания. Принтер не мог выполнить калибровку, тк в очереди заданий были задачи. Через панель управления на самом устройстве очистить очередь не удавалось. Кое-как зашли через веб-интерфейс, кое-как нашли пароль для входа, но все-таки удалили задания и сделали несчастную калибровку.
Также у принтера требуется для каждой новой пачки пленки делать калибровку. Новая пачка определяется по счетчику распечатанных пленок и RFID-чипу из пачки. В нашем устройстве считыватель меток был каким-то образом отключен или заблокирован, и калибровка требовалась редко, зато пленка застревала часто. И даже после калибровки пленка могла все равно застрять. Но однажды после, наконец, ремонта механизма протяжки принтер стал требовать новые RFID-метки из пачек. В каждой новой пачке 100 пленок лежат на картонке, в углу картонки наклеяна метка. Лаборанты пленку клали непонятно как. Иногда положат не всю пачку, а часть, а счетчик в принтере уже отсчитал свою долю и требовал новую метку. Иногда подложку положат неправильной стороной. Приходилось вытаскивать загруженные пленки и класть новую картонку, а метка все равно не считывалась, потому что эта картонка уже побывала в принтере. В итоге вокруг куча вскрытых коробок из под пленки, а принтер чего-то требует. Со временем все-таки научились загружать свежую пленку...
Ну еще в довесок маленькая особенность этих DICOM-принтеров. Так же у нас есть принтеры, новая модель KODAK DryView5800, и какой-то от Sony В разных версиях E-film 2.0 ; 3.0 ; 3.1 работает печать на одних принтерах, и при этом не работает печать на других принтерах. Нужно было подбирать версию под определенный принтер. Как сейчас обстоят дела с версией 3.4 не могу сказать. Внутри KODAK DryView5800 стоит windows.
10) про рентгеновский аппарат Toshiba из истории 8, который оживил древний принтер. Примерно года полтора после установки аппарат в принципе работал и есть особо не просил, пока однажды он перестал включаться. Пришли, увидели, что не может загрузиться windows (sic! опять венда на медицинском оборудовании) Загрузились со своих LiveCD дисков, smart у харда нормальный, бэд-блоков вроде нет. ERD Commander в логах винды тоже ничего подозрительного не нашел. Перезагрузили - все заработало. Через некоторое время ситуация повторилась один в один. Внезапно выяснилось, что управляющий компьютер выключается не через софт, а через тумблер на столе лаборанта. Объяснили, что нельзя так делать, сначала завершаем работу в софте, потом обесточиваем установку, вроде помогло на некоторое время.
Но однажды, ВНЕЗАПНО, выключилось электричество при работе. Компьютер после этого загружался, но вот софт для работы показывал ошибку базы данных и выключался. Подключились к встроенному MS SQL серверу, увидели три базы из четырех в режимах emergency и suspect mode. Восстановили их вот таким способом
Код
/* * create a database of equal size to the one you're trying to attach * shutdown the server * swap in the old mdf file * bring up the server and let the database attempt to be recovered and then go into suspect mode * put the database into emergency mode with ALTER DATABASE * run DBCC CHECKDB (dbname, REPAIR_ALLOW_DATA_LOSS) which will rebuild the log and run full repair */
alter database template set emergency go alter database template set single_user; go
dbcc checkdb ('template',REPAIR_ALLOW_DATA_LOSS) go
alter database template set multi_user
Запускаем заново, опять ошибка, но уже на следующем этапе, явно что-то аппаратное сдохло в самой установке. Приехавший позже инженер менял съемочную камеру в самом аппарате. На логичный вопрос, где должны быть бесперебойники, никто ответить не может, их даже в проекте не было.
Ладно, поставили бесперебойники. Но вот проблема осталась, периодически стали вылетать базы на sql-сервере, то одна в suspect mode, то другая, а периодически они вообще исчезали!
Тех поддержка кроме совета, восстановить все из образа Acronis, ничего сказать не могла. Поменяли жесткий диск, поставили SQL Server 2008 вместо 2005, ничего не поменялось. Начали смотреть через SQL Profiler, чего же такого делает софт, что базы бесследно исчезают. А делало оно примерно так:
... куча селектов вида select top 1 * from images select top 1 * from series select top 1 * from studies
BACKUP DATABASE [local] TO DISK = 'S:\Disk\Databases\local.bak' WITH FORMAT BACKUP DATABASE [global] TO DISK = 'S:\Disk\Databases\global.bak' WITH FORMAT BACKUP DATABASE [history] TO DISK = 'S:\Disk\Databases\history.bak' WITH FORMAT
как видно отключаются базы успешно, а вот с подключением их возникают проблемы...
пока проблему так и не решили :confused:
it 10.09.2013 20:05 в продолжение истории 5 про кольпоскоп. Вчера техотдел два часа боролся с прибором, но он так и не хотел отдавать видеоизображение. Меняли кабель, usb-переходник, ничего не помогало. Внезапно вспомнили об одной мелочи, переходник имеет два входа: S-Video и Composite, и тип входа нужно указывать через софт видеозахвата. В штатной фирменной софтине нет такой опции. Почему-то настройка входного сигнала сбилась на обоих адаптерах, и тот, который был в работе, и на том, который лежал запасным на полке. По подозрительной случайности на приборе был снова раздавлен реостат регулировки яркости лампы.
11) про рентгеновский комплекс DIRA Комплекс этот состоит из рентгеновского стола с доп оборудованием, рабочего места лаборанта с пультом, рабочих мест врачей, и сервера. Оборудование вроде как немецкое, но собрано в России, или собрано в Германии русскими это отдельная легенда. Как надежно и стабильно работает железная часть аппаратуры, как надо прыгать вокруг нее для запуска - это тоже отдельная история. В данном случае хотелось бы рассказать про софт. И так на сервере стоит база Interbase, расшарены диски для хранения снимков в своем внутреннем формате, расшарены диски для хранения некоторой текстовой информации об исследованиях с описаниями в бинарно-текстовом виде. На рабочих местах лаборанта и врачей стоит свой специализированный софт. С рабочих мест можно отправить снимок по протоколу DICOM на внешнее хранилище. Для этого клиентское ПО отправляет сообщение COM-сервису на сервер, и сервис перекодирует снимок из своего формата в общепринятый. Для наладки данного механизма несколько раз приезжали инженеры, не без танцев с бубном это реализовали. с сентября 2008 набралось 34 тыс пациентов 48 тыс исследований объем изображений примерно 1Тб И вот последние года два софт у пользователей начал ужасно тормозить. Приезжал инженер и выдвинул два тезиса 1) прибор не рассчитан на такой объем исследований, удаляйте старые. 2) У вас версия, условно 2,8. Есть версия 2.9 которая работать должна быстрее, но не факт. Но в новой версии есть некоторые неисправленные ошибки, и ваша старая версия работает стабильней, поэтому я обновлять не советую. Вот и все, выхода нет... В очередной раз после плача пользователей, что все ужасно, нельзя же так работать, были проведены некоторые изыскания. Лаборант перед и после исследования текущего пациента вынужден открывать список всех исследований. Повторю, ВСЕХ! Фильтр по исследованиям по датам, как нам привычно в медиалоге, сохранить навсегда невозможно, после нового пациента он сбрасывается. А исследований этих набралось уже более 40 тысяч, и каждый раз клиент скачивает все эти 40 тысяч записей. Это занимает 20 секунд! Вбить нового пациента, 20 секунд ожидания! Перейти на форму исследований, снова 20 секунд, Выйти из исследования, опять до 30 секунд.
В попытках узнать, что же за запросы идут к базе, начали искать привычный многим здесь SQL Profiler. Для баз Interbase такой найден не был, шел 2013 год... На помощь пришел старый добрый инструмент под названием Wireshark, запустили его на сервере, сделали фильтр по протоколу Interbase, увидели запросы.
Код
SELECT COUNT( DISTINCT FILLCOMPPATIENT.ID) FROM "FILLCOMPPATIENT"('TOMO002') FILLCOMPPATIENT WHERE ( FILLCOMPPATIENT.ARCHIV <> 0 OR FILLCOMPPATIENT.KOLZAP = 2 ) AND ( ( DATLASTREC BETWEEN '16.05.2013' AND '17.05.2013') OR DATLASTREC IS NULL ) ORDER BY KOLZAP DESC, DATLASTREC DESC
этот запрос выполнялся 21 секунду. Размер базы Interbase 200 Мегабайт, да, именно 200 мегабайт. Открыли базу, нашли это процедуру и ужаснулись.
Код
BEGIN FOR SELECT ATRPATIENT.FIRSTNAME AS FIRSTNAME, ATRPATIENT.SECONDNAME AS SNAME, ATRPATIENT.TREENAME AS TNAME, PATIENT.DATLASTREC AS DATLASTREC,( SELECT NAME FROM SEX WHERE SEX.SEX = ATRPATIENT.SEX ) AS SEX, ATRPATIENT.DATEBIRTH AS DATEBIRTH, ( SELECT NAME FROM CONTINGENT WHERE CONTINGENT.ID = ATRPATIENT.STATUS ) AS ALLSTATUS, ATRPATIENT.PASSPORT AS PASSPORT, ATRPATIENT.NUMERIB AS NUMIB, ATRPATIENT.POLIC AS POLIC, ( SELECT NAME FROM FACTORY WHERE FACTORY.ID = ATRPATIENT.IDFACTORY ) AS FACTORY, ( SELECT NAME FROM REGION WHERE REGION.ID = ATRPATIENT.IDREGION) AS REGION, ( SELECT NAME FROM TOWN WHERE TOWN.ID = ATRPATIENT.IDTOWN) AS TOWN, ATRPATIENT.STREET AS STREET, PATIENT.ID AS ID , ATRPATIENT.TELEFON AS TELEFON, ( SELECT NAME FROM FACELEMENT WHERE FACELEMENT.ID = ATRPATIENT.IDFACELEMENT ) AS FACELEMENT, ATRPATIENT.WORKS AS WORKS, ( SELECT NAME FROM POST WHERE POST.ID = ATRPATIENT.IDPOST ) AS POST, ATRPATIENT.COMM AS COMM, ATRPATIENT.FREE1 AS FREE1, ATRPATIENT.FREE2 AS FREE2, ( SELECT NAME FROM PATIENTDOP1 WHERE PATIENTDOP1.ID = ATRPATIENT.IDFREE1 ) AS CBFREE1, ( SELECT NAME FROM PATIENTDOP2 WHERE PATIENTDOP2.ID = ATRPATIENT.IDFREE2 ) AS CBFREE2, ( SELECT NAME FROM MILITARY WHERE MILITARY.ID = ATRPATIENT.IDMILITARY) AS MILITARY, ( SELECT NAME FROM MEDCOM WHERE MEDCOM.ID = ATRPATIENT.IDMEDCOM ) AS MEDCOM, ( SELECT NAME FROM COUNTRY WHERE COUNTRY.ID = ATRPATIENT.IDCOUNTRY) AS COUNTRY, ATRPATIENT.DATEB AS DATEB, ATRPATIENT.IDCOUNTRY AS IDCOUNTRY, ATRPATIENT.IDREGION AS IDREGION, ATRPATIENT.IDTOWN AS IDTOWN, ATRPATIENT.IDFACTORY AS IDFACTORY, ATRPATIENT.IDMEDCOM AS IDMEDCOM, PATIENT.DATCR AS DATCR, PATIENT.DiAGNOS AS BMP, PATIENT.ARCHIV AS ARCHIV, ATRPATIENT.STATUS, PATIENT.KOLZAP, PATIENT.WARD, ATRPATIENT.TEXTPROTEC, PATIENT.PROTEC, ATRPATIENT.TEXTSTOR, ATRPATIENT.TEXTDIAG FROM ATRPATIENT INNER JOIN PATIENT ON ATRPATIENT.IDPAT = PATIENT.ID INNER JOIN BMP ON BMP.IDPAT = PATIENT.ID INNER JOIN PARAPP ON PARAPP.TYPES = BMP.IDCAMERA WHERE BMP.IDPAT = PATIENT.ID AND PARAPP.COMP = :COMP UNION SELECT ATRPATIENT.FIRSTNAME AS FIRSTNAME, ATRPATIENT.SECONDNAME AS SNAME, ATRPATIENT.TREENAME AS TNAME, PATIENT.DATLASTREC AS DATLASTREC,( SELECT NAME FROM SEX WHERE SEX.SEX = ATRPATIENT.SEX ) AS SEX, ATRPATIENT.DATEBIRTH AS DATEBIRTH, ( SELECT NAME FROM CONTINGENT WHERE CONTINGENT.ID = ATRPATIENT.STATUS ) AS ALLSTATUS, ATRPATIENT.PASSPORT AS PASSPORT, ATRPATIENT.NUMERIB AS NUMIB, ATRPATIENT.POLIC AS POLIC, ( SELECT NAME FROM FACTORY WHERE FACTORY.ID = ATRPATIENT.IDFACTORY ) AS FACTORY, ( SELECT NAME FROM REGION WHERE REGION.ID = ATRPATIENT.IDREGION) AS REGION, ( SELECT NAME FROM TOWN WHERE TOWN.ID = ATRPATIENT.IDTOWN) AS TOWN, ATRPATIENT.STREET AS STREET, PATIENT.ID AS ID , ATRPATIENT.TELEFON AS TELEFON, ( SELECT NAME FROM FACELEMENT WHERE FACELEMENT.ID = ATRPATIENT.IDFACELEMENT ) AS FACELEMENT, ATRPATIENT.WORKS AS WORKS, ( SELECT NAME FROM POST WHERE POST.ID = ATRPATIENT.IDPOST ) AS POST, ATRPATIENT.COMM AS COMM, ATRPATIENT.FREE1 AS FREE1, ATRPATIENT.FREE2 AS FREE2, ( SELECT NAME FROM PATIENTDOP1 WHERE PATIENTDOP1.ID = ATRPATIENT.IDFREE1 ) AS CBFREE1, ( SELECT NAME FROM PATIENTDOP2 WHERE PATIENTDOP2.ID = ATRPATIENT.IDFREE2 ) AS CBFREE2, ( SELECT NAME FROM MILITARY WHERE MILITARY.ID = ATRPATIENT.IDMILITARY) AS MILITARY, ( SELECT NAME FROM MEDCOM WHERE MEDCOM.ID = ATRPATIENT.IDMEDCOM ) AS MEDCOM, ( SELECT NAME FROM COUNTRY WHERE COUNTRY.ID = ATRPATIENT.IDCOUNTRY) AS COUNTRY, ATRPATIENT.DATEB AS DATEB, ATRPATIENT.IDCOUNTRY AS IDCOUNTRY, ATRPATIENT.IDREGION AS IDREGION, ATRPATIENT.IDTOWN AS IDTOWN, ATRPATIENT.IDFACTORY AS IDFACTORY, ATRPATIENT.IDMEDCOM AS IDMEDCOM, PATIENT.DATCR AS DATCR, PATIENT.DiAGNOS AS BMP, PATIENT.ARCHIV AS ARCHIV, ATRPATIENT.STATUS, PATIENT.KOLZAP, PATIENT.WARD, ATRPATIENT.TEXTPROTEC, PATIENT.PROTEC, ATRPATIENT.TEXTSTOR, ATRPATIENT.TEXTDIAG FROM ATRPATIENT INNER JOIN PATIENT ON ATRPATIENT.IDPAT = PATIENT.ID WHERE PATIENT.KOLZAP = 2 INTO :FIRSTNAME, :SNAME, :TNAME, :DATLASTREC, :SEX, :DATEBIRTH, :ALLSTATUS, :PASSPORT, :NUMIB, :POLIC, :FACTORY, :REGION, :TOWN, :STREET, :ID, :TELEFON, :FACELEMENT, :WORKS, :POST, :COMM, :FREE1, :FREE2, :CBFREE1, :CBFREE2, :MILITARY, :MEDCOM, :COUNTRY, :DATEB, :IDCOUNTRY, :IDREGION, :IDTOWN, :IDFACTORY, :IDMEDCOM, :DATCR, :BMP, :ARCHIV, :STATUS, :KOLZAP, :IDWARD, :TEXTPROTEC, :PROTEC, :TEXTSTOR, :TEXTDIAG DO SUSPEND; END
Запрос использует множество подзапросов, используется UNION к одной и той же таблице по факту Используется INNER JOIN к таблице снимков, которая в 1,5 раза больше количества пациентов, И к этому всему поверх клиент постоянно отправляет запрос вида COUNT DISTINCT Недолго думая, отредактировали процедуру, убрали все подзапросы и union. Результат 1,5 секунды! Но это был еще не конец... Лаборанты сразу заметили разницу. У врачей же - все так же печально.
В диспетчере задач процесс ibserver от БД постоянно прыгает до 100% Сервер рентгена с двухъядерным процессором. Пробовали погонять эту же базу на новом 8-ядерном сервере, тот злосчастный запрос выполняется 19 секунд вместо 21, разница невелика. Увеличивали параметр БД-сервера DATABASE_CACHE_PAGES разницы нет. Еще есть неприятная особенность, параметры оказанных исследований хранятся не в базе, а в расшаренном каталоге, этих файлов там 46 тысяч в одном каталоге Есть еще каталог архивированных исследований, в нем еще 46 тысяч каталогов в одном месте. Эти каталоги на сервере открываются с задержкой, еще медленней они должны открываться клиентским софтом. Что же делать в данной ситуации мало понятно.
it 17.10.2013 19:00 12) про цифровой маммограф поставили нам его в июле сего года. Как всегда это кучка самого рентгеновского оборудования, рабочее место лаборанта - брендовый DELL системник в стойке, а лаборант стоя работает. Однако, новая тенденция сам рентгеновский аппарат подключается через отдельную сетевую Ethernet-карту, а не как раньше через специализированные PCI-карты. DICOM-принтер Рабочее место врача с двумя дополнительными Hi-Res мониторами, фирменным DELL системником и забавным пультом управления. Пульт подключается к компу USB-кабелем, у которого с обоих концов USB Male Type A. При поставке этот уникальный кабель удивительным образом куда-то уполз, через неделю новый привезли. В момент настройки софта приходим мы и требуем указать наши IP-адреса специально выделенной подсети, чтобы снимки можно было отправлять на наш сервер. После некоторого сопротивления это сделано. Но с отправкой снимков начались проблемы. Снимки передаются только на один адрес, либо на комп врача, либо на сервер. На рабочем месте врача стоит софт Fuji AXON, красивенький и кнопки большие. Настроить софт врача для получения снимков с сервера с пол-пинка не удается. Установщики вроде как все установили, снимки на компьютере врача видны, врач как всегда уже обучен, инженер на наши проблемы забивает болт, акт подписан без нас. Мы тоже забиваем на все болт, тк всем пофиг уже, в кабинете врача стоит три компа и 6 мониторов... Мы делаем ставки через сколько времени мы придем в этот кабинет...
Внезапно. 17 октября кончается место на диске рабочей станции врача, диск заполнился исследованиями с 15 июля. В рабочей станции установлены два диска в RAID1 по 136GB...
Под пользователем зайти в настройки софта нельзя. Для администратора нужен пароль. После некоторых изысканий находим отдельный логин администратора в SQL-базе, быстро подбирается пароль совпадающий с логином, и мы лицезреем оригинальное по сути окно, которое говорит, что у нас кончилась лицензия для администрирования системы.
Меня терзают смутные сомнения, что диски там стоят все-таки большие, только не видны они без включенного 48 bit LBA Сначала подумал, что не бывает хардов на 137Гигов, бывают на 120 и 250. Вот сейчас посчитал на калькуляторе, там диски на 150ГБ=137ГиБ :( 150?1.000?1.000?1.000?1.024?1.024?1.024=139 Ну 3 месяца это мало для хранения снимков. Придется теперь бороться с их DICOM
it 28.10.2013 19:42 продолжение про 3) прибор для томографии глаза. После очередного приезда инженера не печатал принтер. Выяснилось, что для принтера не установлены драйвера, в самой программе не настроен принтер. Куда дел старые драйвера инженер, история умалчивает, видимо съел после профилактической установки системы с нуля. Оптический когерентный томограф RS-3000 После очередного приезда инженера не работает софт. При запуске ярлыка появляется сообщение "программа не найдена!" Куда делась программа? Кто унес, как посмел? Что делал инженер? После мучительных процессов выяснили, инженер поставили антивирус на компьютер. Антивирус программу для работы с прибором отправил в карантин! :D Зачем антивирус на отдельно стоящий комп, в который даже флешку не вставляют, сложно сказать, но значит это кому-нибудь нужно.
it 02.12.2013 16:20 продолжение про 12) про цифровой маммограф работы по установке двух новых дисков заказчика, без цены самих дисков - 42 тыс рублей... рабочее места врача еще на гарантии.
13) про УЗИ аппарат Siemens — Acuson X300 симптомы принтер не печатает изображения, бумажка вылезает из термопринтера совсем белой. При нажатии кнопки тест на самом принтере нормально печатается растровая сетка.
После загрузки системы при нажатии ctrl+alt+del появляется стандартный выбор действия Windows XP. Выбор диспетчера задач не помогает, тк его окно остается позади окна оболочки управления УЗИ. Logoff тоже не помогает, тк снова начинается автозаход с автозагрузкой в систему. Немного потыкавшись между окнами принудительного завершения работы и диспетчером задач, удается закрыть оболочку, и успев прервать перезагрузку попадаем на рабочий стол Windows XP, которая даже не Embedded как у предыдущего аппарата. Повезло, теперь не надо загружаться с LiveCD и править реестр, чтобы выключить автозагрузку. И видим забавную картину, на диске C (system) свободно 400Кб из 20Gb, на диске D (data) свободно 99 Gb из 100Gb. Через бесплатную утилитку Windirstat смотрим, кто съел все место. В каталоге одной из программ есть каталог temp, в котором почти 10 тыс картинок bmp по 1,5мб. На картинках зафиксированы измерения объектов на УЗ-снимках, такие же как обычно печатаются. Почему эти файлы не сохраняются на диск data или не очищаются непонятно, но в сумме все они занимали 20гб и заполнили весь диск С. Очистили немного места, печать стала работать нормально. При свободных 400кб картинки не печатаются в системе, некуда сохранять задание на принтер.
Внезапно вспомнили, что полгода назад приезжал инженер для обслуживания именно этого аппарата, и у него была такая же ситуация с свободным местом на диске С. Инженер недолго думая в профилактических целях запустил восстановление системы из своего образа...
В общем, мы тоже не долго думая переместили каталог с диска С на диск D, и сделали Junction Point на директорию с данными. На пару лет хватит.
Сообщение отредактировал naves - Вторник, 15.Янв.2019, 20:19
it 20.06.2014 18:32 продолжение про 10) про рентгеновский аппарат Toshiba из истории 8, который оживил древний принтер. похоже опять с ноги выключили аппарат, так что повредилась база master переустановили SQL теперь под пользователем оператора не работает рентгеновский софт. Базу detach делает, а обратно attach уже не может, у sql-сервера не хватает прав на чтение файлов БД. В каталоге стоят права полный доступ для всех, включено наследование, а у файлов БД права слетают. бред какой-то... там настроен автологин юзера-оператора, софт подключается к базе встроенной аутентификацией грузимся под оператором, получаем ошибку, заходим под админом, подключаюсь к SQL, делаю аттач, пишет нет прав. смотрю права на файлы, там настройки полного доступа сбросились, и теперь прописан один пользователь - оператор. сервис должен запускаться от встроенной учетной записи (не успел проверить, пациенты набежали) вот доступа к файлам и нет. короче надо еще потыкать. исправление осложняется еще тем, что софтина получив ошибку, после нажатия ОК начинает выключать компьютер, а нужно очень быстро отлогиниться и зайти под админом. добавил для SQL-пользователя оператора роль sysadmin, теперь все работает. хотя для всех баз и так были права db_owner и backupadmin на файлах БД теперь есть право доступа для пользователя MSSQL-что-то-там такие дела. Toshiba, блин.
С базой Interbase от другого прибора разобрались, В базе две таблицы пациентов: основная с главным ключом и дополнительная, в которой primary key создан как foreign key к первой таблице. В половине запросах с использованием связей пациент->атрибуты пациента->снимки этот индекс в упор не хотел работал и делалось полное сканирование таблицы. Снимков около 60 тыс, пациентов около 40 тыс. Связь этих трех таблиц считалась по 30 секунд, потом к этому еще сверху в запросах добавляли повторно count distinct... мрак и ужОс... Отредактировали exe-файл программы, убрали лишние связи в лишних местах в определенных запросах, все буквально взлетело. Раньше чтобы из архива за прошлый год посмотреть снимок нужно было буквально ждать 15 минут, теперь за полминуты все грузится.
А разработчиков из Питера это все не касается :( они наклепали еще пару версий с такой же проблемой.
it 27.06.2014 20:22 Тут что-то пятничная мысль пришла в голову из серии, что делать и кто виноват. Кто как вообще решает вопросы интеграции медицинских приборов в некую общую медицинскую систему, решают ли эти вопросы вообще, или эти вопросы даже никто не задает. К нам в прошлом году приезжали товарищи из http://www.medesk.md/ru/ и предлагали типа обмениваться медицинскими исследованиями с другими поликлиниками. У кого-то есть приборы, но нет врачей, а у нас вроде как есть врачи с нужной специальностью. Рассказывали как все будет замечательно, облачные технологии, интернет, прозрачный финансовый учет описанных исследований, и всякое такое. На практике все заглохло. Для такой системы есть несколько основных проблем: 1) Организационные - составить кучу договоров и все согласовать, с кем согласовывать с поставщиком системы или другими поликлиниками, как проводить эти доходы, непонятная новая услуга, описание исследования без самого пациента и тд. 2) Техническая, даже если опустить проблему обмена самими файлами по 300мб через интернет, то остается проблема, чем открыть сам файл исследования. С каждым прибором идет свой софт, который стоит отдельных денег, требует свою активацию, и иногда свой аппаратный ключ, который поставщик даже отдельно продать не может. 3) наверное это организационная проблема, но я выделил в отдельный пункт. У врача нет времени смотреть чужие исследования, когда в поликлинике у него есть свой немаленький поток пациентов. Конечно в разных местах по-разному, но одно дело когда весь день забит пациентами по 30 минут на КТ, и когда врач в больнице может по паре часов рассматривать сложный перелом.
Чем это мысля была навеяна. 1) На неделе была проблема с комьютером, к которому был подключен кольпоскоп (про который выше уже писал) Заодно посмотрел базу специальной супер-пупер фирменной софтины, там куча пациентов, только снимков нет, не ведут они историю снимков, неинтересна она никому.
2) Заявка из функциональной диагностики, хотят сделать новую услугу, результаты ЭКГ в цифровом виде для пациента. В дополнение можно и на термобумаге экономить, описывая данные на самом компьютере без распечатки. прибор Fukuda Cardimax FX-7402. Вроде и новый прибор, только софта нет. В теории подключить возможно, на практике PCMCIA Ethernet Card не работает. И чем потом открывать ECG-файлы тоже непонятно.
3) Стоит задача отправлять DICOM исследования зубов с рентгеновского томографа Toshiba Activion 16 в стоматологическую клинику. У стоматологов стоит свой ортопантомограф Planmeca и они используют с ним просмотровщик Planmeca Romexis Viewer. Проблема в том, что их просмотровщик не умеет открывать DICOMDIR с КТ, хотя работа с данным форматом заявлена. Был выбор либо купить полную версию Planmeca Romexis за 250 тыс рублей, или помучаться с Efilm Сделали экспорт исследования из Efilm в нужный формат, врачу нужно будет нажать почти одну кнопку. Вот только результаты стоматологам не нравятся, или томограф делает плохие снимки зубов, или режим съемки в настройках дентальной программы на самом томографе не настроен, или им вообще ничего не нравится. Рентгенологам вообще ничего не нравится, им подавай советский РУМ-20, когда трава была зеленей.
it 20.01.2015 17:18 В декабре приезжали забавные товарищи из одной российской фирмы рентген-техники. Подключали к нашему уже упоминавшемуся рентгену Toshiba отдельную приемную пластину цифровой детектор. Пластина вставляется в стол, на котором лежит пациент и через Wi-Fi передает снимок на компьютер.
Первые полгода они приезжали со своей матрицей и тестировали ее. Наконец нашим врачам понравились снимки с нее, непонятные полосы засветки исчезли, и на снимок полностью влезали широкие кости пациентов в отличие от штатного детектора. В один прекрасный день инженеры начали подключать новую купленную матрицу. Настраивали по большой и длинной инструкции: компьютер с софтом, вторая новая сетевая карта, точка доступа, сама матрица. Связи нет, и пинга тоже нет. Приезжало сразу 4 человека, как обычно, один работает, двое сидят в ноутбуках, самый главный все время разговаривает по телефону. Шел четвертый час, связи все не было, отключили внешнюю сеть на компьютере, сбросили и заново настроили точку доступа - связи нет. Наконец мы уже не вытерпели и начали смотреть, что же происходит. В инструкции на первой же странице было две ошибки, не успел сфоткать, но суть примерно такова: Сначала предлагалось поменять адрес Wi-Fi точки с 192.168.1.1 на 192.168.200.1, потом добавить дополнительный адрес на сетевой карте компьютера на 192.168.200.2, а после этого зайти в настройки точки доступа по адресу 192.168.200.2, и начать настраивать пароли на беспроводную сеть. Тут-то и была первая проблема, видимо ее быстро обошли, но связи с детектором не было. Причем в инструкции была ссылка на таблицу под номером 1 с адресами устройств, а сами адреса были в другой таблице.
В какой-то момент появился вопрос. - А откуда матрица знает, что ей надо подключиться к сети rentgen с паролем abrakadabra? - Ну как же, вот мы ввели название, пароль, адреса, она должна подключиться, у нее уже есть адрес - Да, но откуда она знает именно этой пароль и именно это название сети. - нууу И после нескольких звонков в офис внезапно выяснилось, что матрицу привезли вообще не настроенную, и чтобы настроить к ней нужно подключаться кабелем. Через еще пару часов связь все-таки появилась :rolleyes:
Про инженера из Toshiba за некоторое время до этого на самой тошибе странным образом слетел софт, снимки делать можно, но если зайти в список пациентов для печати на пленке, то софт зависал намертво, только перезагрузка. Приехал инженер, посмотрел на это, увидел посторонний софт в системе (ага Process explorer и Victoria для проверки диска) пришел к стандартному решению, восстановить все из образа, который кто-то делал из его фирмы ранее. Загрузился он с диска Acronis, нажал кнопку восстановить, а тот не видит жесткие диски. Позвали нас, почему диски не видит, куда дели, диск сломался, надо новый заказывать. Заходим в BIOS переключаем режим RAID в IDE, диск появился. Инженер произвел высокотехнологичную операцию по восстановлению системы из образа, снова позвали нас. После перезагрузки появляется синий экран, у вас образ битый! Заходим в BIOS переключаем режимы обратно IDE в RAID, система загружается. (чудеса-то какие-то просто) И тадам! рентгеновский софт вообще отказывается работать. Версия софта где-то внутри не совпадает с версией прошивки детектора. Если до приезда инженера мы могли просто снимать но без печати, то теперь мы вообще ничего не можем. Инженер может только опять предложить заказывать новый диск. Мучительные пытки выяснения, кто и когда обновлял здесь софт, результата не дают, известно только, что меняли трубку по гарантии два раза. В конце дня мелькает шальная мысль, зачем там RAID был включен, может где-то внутри второй диск... При вскрытии внезапно находится второй диск со старой системой, который оставили перед предыдущими экспериментами по обновлению SQL-сервера. Диск с софтом полностью рабочий, ну кроме проблемы отваливающихся баз...
Зачем приезжал инженер непонятно, жесткие диски менять он не был уполномочен, как и вскрывать корпус. Дистрибутивов софта у него нет и не бывают, тк жесткие диски заказываются уже предустановленными. Пользоваться своим же акронисом от фирмы тоже не умеем...
Сообщение отредактировал naves - Вторник, 15.Янв.2019, 20:10