Получение Worklist-ов с сервера РИС рентгеном Электрон - Форум медтехников

Среда, 20.Мар.2019, 12:12
Medteh. info
Главная Регистрация Вход
Приветствую Вас, Гость · RSS

[ Новые сообщения форума · Участники · Правила форума · Поиск · RSS ]
Перевести эту страницу






  • Страница 1 из 1
  • 1
Модератор форума: renmaster, Алекс-200  
Форум медтехников » Медицинское оборудование (тех. разделы) » Рентгеновское оборудование. » Получение Worklist-ов с сервера РИС рентгеном Электрон (под управлением ЭОС 4.0)
Получение Worklist-ов с сервера РИС рентгеном Электрон
AndreySm1996Дата: Вторник, 12.Мар.2019, 18:18 | Сообщение # 1
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
Доброго времени суток, уважаемые форумчане. У меня стоит задача настроить правильную передачу ворклистов c DCM4CHEE (если важно, сервер используется dcm4che arc light 5) в непосредственно рентгеновский аппарат.

Верификацию соединение проходит и на сервере присутствуют ворклисты вида (отправляются туда через апи JSON-ом):
[
{
"00080005": {
"vr": "CS",
"Value": [
"ISO_IR 144"
]
},
"00080050": {
"vr": "SH",
"Value": [
"RIS_NUMBER_123"
]
},
"00080090": {
"vr": "PN",
"Value": [
"Имя Фамилия Отчество врача"
]
},
"00100020": {
"vr": "LO",
"Value": [
"8888-9999"
]
},
"00400100": {
"vr": "SQ",
"Value": [
{
"00400001": {
"vr": "AE",
"Value": [
"QWERTY "
]
},
"00400002": {
"vr": "DA",
"Value": [
"20190308"
]
},
"00400003": {
"vr": "TM",
"Value": [
"120000.000"
]
},
"00400007":{
"vr": "LO",
"Value": [
"Легкие"
]
},
"00400009":{
"vr": "SH",
"Value": [
"88005553535Any"
]
},
"00400020": {
"vr": "CS",
"Value": [
"SCHEDULED"
]
},
"00080060": {
"vr": "CS",
"Value": [
"DX"
]
}
}
]
},
"0020000D": {
"vr": "UI",
"Value": [
"1.2.856.0.1.3646043.2.634.30.1.63143.20190308111000"
]
},
"00401001": {
"vr": "SH",
"Value": [
"16286"
]
},
"00321060": {
"vr": "LO",
"Value": [
"Легкие в 2-х пр"
]
}
}
]

где "8888-9999" номер истории пациента

Логи самого аппараты выглядят следующим образом:
2019-03-12 14:42:55.83 File: WorklistSCU.cpp, Line: 236, ErrorCode: 0(0x0000) Open connection
2019-03-12 14:42:55.83 File: WorklistSCU.cpp, Line: 632, ErrorCode: 0(0x0000) Connection is set
2019-03-12 14:42:55.85 File: WorklistSCU.cpp, Line: 531, ErrorCode: 0(0x0000) Association accepted
2019-03-12 14:42:55.85 File: WorklistReciever.cpp, Line: 80, ErrorCode: 0(0x0000) Send C-FIND Request
2019-03-12 14:42:55.85 File: WorklistSCU.cpp, Line: 341, ErrorCode: 0(0x0000) C-FIND request is sent
2019-03-12 14:42:55.86 File: WorklistReciever.cpp, Line: 130, ErrorCode: 0(0x0000) 0 new items gotten
2019-03-12 14:42:55.86 File: WorklistSCU.cpp, Line: 632, ErrorCode: 0(0x0000) All items were processed, no new data
2019-03-12 14:42:55.86 File: WorklistSCU.cpp, Line: 376, ErrorCode: 0(0x0000) Send release request
2019-03-12 14:42:55.86 File: WorklistSCU.cpp, Line: 632, ErrorCode: 0(0x0000) A release response has been gotten
2019-03-12 14:42:55.86 File: WorklistSCU.cpp, Line: 403, ErrorCode: 0(0x0000) Close the connection
2019-03-12 14:43:02.80 File: WorklistSCU.cpp, Line: 236, ErrorCode: 0(0x0000) Open connection
2019-03-12 14:43:02.82 File: WorklistSCU.cpp, Line: 632, ErrorCode: 0(0x0000) Connection is set
2019-03-12 14:43:02.82 File: WorklistSCU.cpp, Line: 531, ErrorCode: 0(0x0000) Association accepted
2019-03-12 14:43:02.82 File: WorklistReciever.cpp, Line: 80, ErrorCode: 0(0x0000) Send C-FIND Request
2019-03-12 14:43:02.82 File: WorklistSCU.cpp, Line: 341, ErrorCode: 0(0x0000) C-FIND request is sent
2019-03-12 14:43:02.84 File: WorklistReciever.cpp, Line: 163, ErrorCode: 6(0x0006) Item processing failed
2019-03-12 14:43:02.84 File: WorklistReciever.cpp, Line: 130, ErrorCode: 0(0x0000) 0 new items gotten
2019-03-12 14:43:02.84 File: WorklistSCU.cpp, Line: 611, ErrorCode: 6(0x0006) Database Error
2019-03-12 14:43:02.84 File: WorklistSCU.cpp, Line: 376, ErrorCode: 0(0x0000) Send release request
2019-03-12 14:43:02.84 File: WorklistSCU.cpp, Line: 632, ErrorCode: 0(0x0000) A release response has been gotten
2019-03-12 14:43:02.84 File: WorklistSCU.cpp, Line: 403, ErrorCode: 0(0x0000) Close the connection

Тестировал сервер программой IQ_DICOMTest, и она отображала все ворклисты,но без запланированной процедуры (что странно, т.к. у некоторых записей разные AET конечных устройств), уже и не знаю как еще попробовать заставить эту связь работать, предполагаю, что ошибка в шаблоне ворклиста, хранимого на сервере, раз он обращается к нему и не получает никакие записи, но как правильно не знаю и нигде не нашел. Буду очень признателен за любую помощь, заранее спасибо.
 
navesДата: Вторник, 12.Мар.2019, 20:01 | Сообщение # 2
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
Модальность аппарата совпадает с модальностью исследований из листа?
проверяет ли клиент соответствие (0008,0090) Referring Physician‘s Name вообще неизвестно.
И что-то мне не нравится строчка Database Error. Раньше электрон костылил для dicom какие-то отдельные базы в mdb, и если к ним не было доступа, то обмен переставал работать, но это было в древних версиях.
 
AndreySm1996Дата: Среда, 13.Мар.2019, 10:42 | Сообщение # 3
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
В чем странность, что модальность у аппарата в настройках станции стоит DX, у сервисов ее нельзя изменить с CR (при изменении и сохранениии меняет обратно). Я пробовал ворклисты и с той и другой модальностью, результат один и тот же. Мне вот лично казалось, что дело именно в теге "00401001", т.к. я за все время изучения документации, так и не понял откуда брать ID процедуры.
И ведь, поправьте если ошибаюсь, разве в логах рентгена не написано, что он устанавливает соединение с сервером и делает вид, что там как-будто нет worklist-ов.


Сообщение отредактировал AndreySm1996 - Среда, 13.Мар.2019, 10:45
 
navesДата: Среда, 13.Мар.2019, 12:54 | Сообщение # 4
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
Цитата AndreySm1996 ()
что там как-будто нет worklist-ов.

кстати, да.
надо смотреть какое условие фильтра идет к серверу. Либо включать дебаг на сервере, либо смотреть через wireshark
 
AndreySm1996Дата: Среда, 13.Мар.2019, 15:35 | Сообщение # 5
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
Вот кстати говоря логи сервера:

2019-03-12 14:42:58,438 INFO [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-2) Accept connection Socket[addr=/192.168.101.1,port=49738,localport=11112]
2019-03-12 14:42:58,439 INFO [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-65) DCM4CHEE<-QWERTY(46) >> A-ASSOCIATE-RQ
2019-03-12 14:42:58,440 INFO [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-65) DCM4CHEE<-QWERTY(46) << A-ASSOCIATE-AC
2019-03-12 14:42:58,444 INFO [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-65) DCM4CHEE<-QWERTY(46) >> 101:C-FIND-RQ[pcid=1, prior=1
cuid=1.2.840.10008.5.1.4.31 - Modality Worklist Information Model - FIND
tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian
2019-03-12 14:42:58,448 INFO [org.dcm4chee.arc.procedure.scp.MWLCFindSCP] (EE-ManagedExecutorService-default-Thread-65) DCM4CHEE<-QWERTY(46): Process MWL C-FIND RQ:
(FFFA,FFFA) SQ [1 Items] DigitalSignaturesSequence
>Item #1
>(0400,0005) US [] MACIDNumber
>(0400,0100) UI [] DigitalSignatureUID
>(0400,0105) DT [] DigitalSignatureDateTime
>(0400,0110) CS [] CertificateType
>(0400,0115) OB [] CertificateOfSigner
>(0400,0120) OB [] Signature
>(0400,0305) CS [] CertifiedTimestampType
>(0400,0310) OB [] CertifiedTimestamp
(0008,0005) CS [] SpecificCharacterSet
(0008,0012) DA [] InstanceCreationDate
(0008,0013) TM [] InstanceCreationTime
(0008,0014) UI [] InstanceCreatorUID
(0008,0016) UI [1.2.840.10008.5.1.4.31] SOPClassUID
(0008,0018) UI [] SOPInstanceUID
(0008,0050) SH [] AccessionNumber
(0008,0080) LO [] InstitutionName
(0008,0081) ST [] InstitutionAddress
(0008,0082) SQ [1 Items] InstitutionCodeSequence
>Item #1
>(0008,0100) SH [] CodeValue
>(0008,0102) SH [] CodingSchemeDesignator
>(0008,0103) SH [] CodingSchemeVersion
>(0008,0104) LO [] CodeMeaning
>(0008,0105) CS [] MappingResource
>(0008,0106) DT [] ContextGroupVersion
>(0008,0107) DT [] ContextGroupLocalVersion
>(0008,010B) CS [] ContextGroupExtensionFlag
>(0008,010D) UI [] ContextGroupExtensionCreatorUID
>(0008,010F) CS [] ContextIdentifier
(0008,0090) PN [] ReferringPhysicianName
(0008,0092) ST [] ReferringPhysicianAddress
(0008,0094) SH [] ReferringPhysicianTelephoneNumbers
(0008,0096) SQ [1 Items] ReferringPhysicianIdentificationSequence
>Item #1
>(0008,0080) LO [] InstitutionName
>(0008,0081) ST [] InstitutionAddress
>(0008,0082) SQ [1 Items] InstitutionCodeSequence
>>Item #1
>>(0008,0100) SH [] CodeValue
>>(0008,0102) SH [] CodingSchemeDesignator
>>(0008,0103) SH [] CodingSchemeVersion
>>(0008,0104) LO [] CodeMeaning
>>(0008,0105) CS [] MappingResource
>>(0008,0106) DT [] ContextGroupVersion
>>(0008,0107) DT [] ContextGroupLocalVersion
>>(0008,010B) CS [] ContextGroupExtensionFlag
>>(0008,010D) UI [] ContextGroupExtensionCreatorUID
>>(0008,010F) CS [] ContextIdentifier

Правильно ли я понимаю, что это и есть условия фильтра?
Не понятно лишь, как все же должен выглядеть worklist, который хочет увидеть на сервере рентген.
 
navesДата: Среда, 13.Мар.2019, 19:00 | Сообщение # 6
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
понятно, что ничего не понятно.
берите wireshark, и сравнивайте запрос из программы и с iQ_DICOMTest

а вы данные для ворклиста откуда берете?
не проще ли conquest запустить, а в нем ворклист сделать в виде sql view к нужной базе данных
8307754.png(164.6 Kb)


Сообщение отредактировал naves - Среда, 13.Мар.2019, 19:06
 
BomberbugДата: Четверг, 14.Мар.2019, 03:53 | Сообщение # 7
Техник
У вас сообщений: 498
engineer
На заявках
Российская Федерация

Россия
Конкретно проверял работу 4.х версии с Ворклиста (источник - пакс от АГФЫ)...ТАкже 3-ей версией ЭОС проверял.
ИТОГ- вобщем все работает за исключением того, что НЕЛЬЗЯ прокручивать списки нормально с пациентами!
Почему-то если более примерно 10 записей получает Электрон, то при попытке пролистывания курсор "улетает" вверх или вниз соот-но, не дает программа ткнуть "посредине".
Единственный вариант - уменьшать список получаемыйх записей до минимума - типа фильтрами отбора.
Однако, это изврат...
Вот как-то так. Изгалялся как мог - в итоге плюнул.
 
AndreySm1996Дата: Четверг, 14.Мар.2019, 10:32 | Сообщение # 8
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
Цитата naves ()
сравнивайте запрос из программы и с iQ_DICOMTest

Спасибо большое, за вашу помощь сегодня сравню. А данные для ворклиста я пока сам составляю и через API сервера заношу в базу.
 
AndreySm1996Дата: Четверг, 14.Мар.2019, 17:35 | Сообщение # 9
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
Попробовал отловить пакеты, с рентгена Wireshark-ом, но ничего не вышло. Он как будто их не ловит, хотя когда я IQ_DICOMTest посылаю на сервер запросы, WS прекрасно это видит, ну также как и на вашем скриншоте отображается последовательность пакетов. И теперь я вот думаю, верификацию то сервисы проходят, что Storage, что Worklist, но WS упорно не обнаруживает пакеты, которые должен слать рентген. Но на сервер исследования то приходят... shok
 
navesДата: Четверг, 14.Мар.2019, 18:19 | Сообщение # 10
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
ах-да, маленькие нюансы.
в вашем логе это чей адрес?
Accept connection Socket[addr=/192.168.101.1,port=49738,localport=11112]
раньше, клиентский софт электрона слал RPC-запросы на свой сервер, и уже там запускались COM-объекты, которые работали по DICOM.
используйте tcpdump на dicom-сервере с записью в pcap-файл, если у вас linux-сервер.
https://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html
только укажите еще фильтр по порту, типа
tcpdump -i <interface> -w <some-file> port 11112


Сообщение отредактировал naves - Четверг, 14.Мар.2019, 18:21
 
AndreySm1996Дата: Пятница, 15.Мар.2019, 13:23 | Сообщение # 11
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
День добрый, tcpdump еще не успел посмотреть, жаль он не показывает содержимое пакета, как WireShark, но ничего.
Цитата naves ()
в вашем логе это чей адрес?
Accept connection Socket[addr=/192.168.101.1,port=49738,localport=11112]

С уверенностью могу сказать, что этот IP ни сервера (192.168.6.30), ни станции (192.168.101.100) станция кстати с двумя сетевыми картами (АРМ лаборанта в серверной конфигурации). Т.к. заканчивается на 1, смею предположить, что это IP роутера, но почему он отображается в логах не могу знать.
 
navesДата: Пятница, 15.Мар.2019, 14:36 | Сообщение # 12
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
tcpdump может показывать содержимое пакетов, но dicom бинарный протокол, и его нужно парсить.
есть консольная версия wireshark
https://www.wireshark.org/docs/man-pages/tshark.html

Цитата AndreySm1996 ()
станция кстати с двумя сетевыми картами (АРМ лаборанта в серверной конфигурации)

обе сетевухи подключены, какие на них адреса?
может просто wireshark не с того интерфейса пакеты смотрит.
 
AndreySm1996Дата: Понедельник, 18.Мар.2019, 10:40 | Сообщение # 13
Стажер
У вас сообщений: 7
Программист
На заявках
Российская Федерация

Санкт-Петербург
Добрый день, я просто по IP сервера пытался ловить пакеты, разве это не верный вариант?
Что же касается сетевух, то одна сетевая АРМа лаборанта для внешней сети как я понимаю (192.168.101.100) и второй IP - внутренняя сеть с сервером, который шел с завода (192.168.4.3). но он даже и не пингуется.
 
navesДата: Понедельник, 18.Мар.2019, 12:33 | Сообщение # 14
Передовик
У вас сообщений: 931
программист
На заявках
Российская Федерация

Москва
Wireshark умеет одновременно захватывать пакеты только с одного интерфейса, и если выбрать неправильный интерфейс то ничего не будет.
Запустите Wireshark и посмотрите какая вообще сетевая активность начинается при нажатии кнопки получить список.
Давным давно меня тоже поставило в тупик, что с компа лаборанта вместо DICOM-пакетов пошли RPC-запросы в сторону сервера электрона. Потом уже только понял, что там накручено.
 
Форум медтехников » Медицинское оборудование (тех. разделы) » Рентгеновское оборудование. » Получение Worklist-ов с сервера РИС рентгеном Электрон (под управлением ЭОС 4.0)
  • Страница 1 из 1
  • 1
Поиск:



Оплата услуг с помощью WebMoney, RBK Money, Деньги@Mail.Ru, WebCreds и Яндекс.Деньги


Статистика Форума
Последние обновления тем: Новые файлы хранилища: Новые участники: Top10 участников:
1. УЗИ Philips HD11 XE[buanatolij (20.Мар.2019)]
2. Fona-1000 LW[bk-bass (20.Мар.2019)]
3. Konica DRYPRO 873[mitaun (20.Мар.2019)]
4. Система гель-документ...[Diman_f (20.Мар.2019)]
5. Стерилизатор паровой ...[sergeislon (20.Мар.2019)]
6. Дефибриллятор Primedi...[yusupovd92 (19.Мар.2019)]
7. УЗИ SAMSUNG SonoAceR3[info_man (19.Мар.2019)]
8. TECAN Sunrise[Fantom_NN (19.Мар.2019)]
9. Toshiba Aplio 300[TsS (19.Мар.2019)]
1. ИВЛ Фаза 7[07.Мар.2019]
2. SES 2000[04.Мар.2019]
3. Accuvix V10 сервис ма...[21.Фев.2019]
4. УСС-УТЕС[17.Фев.2019]
5. ПроСкан v3-2-1-0[12.Фев.2019]
6. ПроСкан v3-2-1-0[12.Фев.2019]
7. OSMOMAT 030 USER GUID...[08.Фев.2019]
8. EcoView Dicom Instal ...[30.Янв.2019]
9. Весы EUROPE 200[10.Дек.2018]
10. System basic and Apli...[19.Ноя.2018]
1. AlexZver[20.Мар.2019]
2. cylan[20.Мар.2019]
3. Oleg1994gelo[20.Мар.2019]
4. percey8888[20.Мар.2019]
5. fedor-63[20.Мар.2019]
6. AVGoryachyi[19.Мар.2019]
7. AndrAlex[19.Мар.2019]
8. Er[19.Мар.2019]
9. noone99[19.Мар.2019]
10. Alexmur[19.Мар.2019]
МастерБаку[501]
Serg74[154]
Dimitrius[127]
Yulana34[122]
генаf[112]
madmac[105]
РОМУЛ[101]
astra[99]
naves[96]
andruka[90]


Все виды текстовых услуг: копирайт, рерайт, магазин статей, наполнение сайтов, переводы, smo — Адвего





   

Вопросы по ремонту медицинской техники | Теоретические основы медицинского приборостроения | Информационный раздел | Информация о сайте | Хранилище файлов | Сертификаты и регистрационные удостоверения | Навигатор по сайту | Написать администратору





Copyright MyCorp © 2008 - 2019