Эта функция позволяет выполнять инициируемую планировщиком или пользователем верификацию пациента(ов) относительно внешних поставщиков демографических данных пациента (Patient Demographics Providers). Также предоставляется возможность верифицировать пациента(ов) однократно или периодически.
REST-сервисы Patient Demographics Query
00100021 (Issuer of Patient ID) в качестве одного из
Patient Attributes в PDQ Servicepdq-dicom:<your-external-archive-aet>Кроме того, те же действия, что указаны выше, можно напрямую импортировать в LDAP с помощью следующего ldif
version: 1
dn: dcmPDQServiceID=testHAPI,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dcmPDQService
dcmPDQServiceID: testHAPI
dcmURI: pdq-fhir:HAPI
dicomDescription: Test PDQ with FHIR HL7 External Patient Demographics Supplier - HAPI Server
dcmProperty: XSLStylesheetURI=${jboss.server.temp.url}/dcm4chee-arc/fhir-pat2dcm.xsl
dcmProperty: search._format=xml
dcmProperty: search.identifier.system=https://github.com/synthetichealth/synthea
dn: dcmPDQServiceID=Test HL7 PDQ,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dcmPDQService
dcmPDQServiceID: Test HL7 PDQ
dcmURI: pdq-hl7:HL7SND/DCM4CHEE:HL7RCV/DCM4CHEE
dicomDescription: Test PDQ with External HL7 Patient Demographics Supplier
dcmProperty: XSLStylesheetURI=${jboss.server.temp.url}/dcm4chee-arc/hl7-adt2dcm.xsl
dn: dcmPDQServiceID=Test PDQ,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dcmPDQService
dcmPDQServiceID: Test PDQ
dcmURI: pdq-dicom:EXTERNAL_ARCHIVE_AET
dicomDescription: Test PDQ with External Archive
dcmTag: 00100010
dcmTag: 00100021
dcmTag: 00100040
dcmTag: 00100040
dcmProperty: LocalAET=DCM4CHEE
dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
objectClass: dicomDevice
objectClass: dcmDevice
objectClass: dcmArchiveDevice
dcmPDQServiceID: Test PDQ
dcmPatientVerificationPollingInterval: PT1M
dcmPatientVerificationFetchSize: 150
dcmPatientVerificationAdjustIssuerOfPatientID: TRUE
dcmPatientVerificationPeriod: P1D
dcmPatientVerificationPeriodOnNotFound: P1W
dcmPatientVerificationRetryInterval: PT1H
dcmPatientVerificationMaxRetries: 10
dcmPatientVerificationMaxStaleness: PT2H
с помощью Apache Directory Studio или LDAP Command Line Tools.
Чтобы конфигурация вступила в силу — если она настроена с помощью ldif-фрагмента — используйте UI архива для перезагрузки конфигурации. - Доступно из страницы Configuration — вкладки Control
Проверьте верификацию пациента в журналах Wildfly по истечении настроенного Patient Verification Polling Interval
2018-10-31 14:18:22,090 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler] (EE-ManagedScheduledExecutorService-default-Thread-10) start PatientVerificationScheduler.execute()
2018-10-31 14:18:22,095 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler]
(EE-ManagedScheduledExecutorService-default-Thread-2) Verified Patient[pk=1910, id=P-00000002] against
PDQService{id=Test PDQ, uri=pdq-dicom:TEST}
2018-10-31 14:18:22,295 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler] (EE-ManagedScheduledExecutorService-default-Thread-10) finished PatientVerificationScheduler.execute()
Верификация пациента не выполняется, если пациент в локальном архиве отсутствует во внешнем архиве
2018-10-31 13:58:56,125 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler]
(EE-ManagedScheduledExecutorService-default-Thread-13) Patient[pk=1902, id=MEE4-54798^^^MEE4&1.3.6.1.4.1.12559.11.1.4.1.2&ISO]
not found at PDQService{id=testPDQ, uri=pdq-dicom:TEST} - no verification
Запустите инструмент hl7rcv
с параметром -x (указание таблицы стилей) для генерации ответа путём применения указанной таблицы стилей.
hl7rcv -x ~/dcm4che/etc/hl7rcv/rsp_k22.xsl -b 2576 --ignore
Проверьте верификацию пациента в журналах Wildfly по истечении настроенного Patient Verification Polling Interval
2021-07-05 10:43:47,804 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler] (EE-ManagedScheduledExecutorService-default-Thread-10) start PatientVerificationScheduler.execute()
2021-07-05 10:43:47,870 INFO [org.dcm4che3.hl7.MLLPConnection] (EE-ManagedScheduledExecutorService-default-Thread-10) Socket[addr=localhost/127.0.0.1,port=2576,localport=38415] << MSH|^~\&|HL7SND|DCM4CHEE|HL7RCV|DCM4CHEE|20210705104347.865||QBP^Q22^QBP_Q21|2126109594|P|2.5||||||8859/1|||
2021-07-05 10:43:48,003 INFO [org.dcm4che3.hl7.MLLPConnection] (EE-ManagedScheduledExecutorService-default-Thread-10) Socket[addr=localhost/127.0.0.1,port=2576,localport=38415] >> MSH|^~\&|HL7RCV|DCM4CHEE|HL7SND|DCM4CHEE|20210705104347.952||RSP^K22^RSP_K21|222004739|P|2.5||||||8859/1
2021-07-05 10:43:48,166 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler] (EE-ManagedScheduledExecutorService-default-Thread-10) Verified Patient[pk=182903, id=PDQ-4711e^^^DCM4CHE-TEST&1.2.40.0.13.1.1.999&ISO] against PDQService{id=testhl7pdq, uri=pdq-hl7:HL7SND/DCM4CHEE:HL7RCV/DCM4CHEE}
2021-07-05 10:43:48,166 INFO [org.dcm4chee.arc.pdq.scheduler.PatientVerificationScheduler] (EE-ManagedScheduledExecutorService-default-Thread-10) finished PatientVerificationScheduler.execute()
Проверьте получение запроса QBP^Q22 в окне инструмента hl7rcv и соответствующий ответ, отправленный обратно в архив
10:36:51,035 INFO - Start TCP Listener on 0.0.0.0/0.0.0.0:2576
10:43:47,867 INFO - Accept connection Socket[addr=/127.0.0.1,port=38415,localport=2576]
10:43:47,881 INFO - Socket[addr=/127.0.0.1,port=38415,localport=2576] >> MSH|^~\&|HL7SND|DCM4CHEE|HL7RCV|DCM4CHEE|20210705104347.865||QBP^Q22^QBP_Q21|2126109594|P|2.5||||||8859/1|||
10:43:47,884 DEBUG - Socket[addr=/127.0.0.1,port=38415,localport=2576] >> MSH|^~\&|HL7SND|DCM4CHEE|HL7RCV|DCM4CHEE|20210705104347.865||QBP^Q22^QBP_Q21|2126109594|P|2.5||||||8859/1|||
QPD|IHE PDQ Query|QRY2126109594|@PID.3.1^PDQ-4711e~@PID.3.4.1^DCM4CHE-TEST~@PID.3.4.2^1.2.40.0.13.1.1.999~@PID.3.4.3^ISO|
RCP|I||||||
10:43:48,001 INFO - Socket[addr=/127.0.0.1,port=38415,localport=2576] << MSH|^~\&|HL7RCV|DCM4CHEE|HL7SND|DCM4CHEE|20210705104347.952||RSP^K22^RSP_K21|222004739|P|2.5||||||8859/1
10:43:48,001 DEBUG - Socket[addr=/127.0.0.1,port=38415,localport=2576] << MSH|^~\&|HL7RCV|DCM4CHEE|HL7SND|DCM4CHEE|20210705104347.952||RSP^K22^RSP_K21|222004739|P|2.5||||||8859/1
MSA|AA|2126109594|
QAK|QRY2126109594|OK
QPD|IHE PDQ Query|QRY2126109594|@PID.3.1^PDQ-4711e~@PID.3.4.1^DCM4CHE-TEST~@PID.3.4.2^1.2.40.0.13.1.1.999~@PID.3.4.3^ISO|
PID|||PDQ-4711^^^DCM4CHE-TEST&1.2.40.0.13.1.1.999&ISO||DOE^JOHN||19471111|M|||STREET^^CITY^^4711|||||||ACC-4711^^^DCM4CHE-TEST&1.2.40.0.13.1.1.999&ISO
10:43:48,006 INFO - Close connection Socket[addr=/127.0.0.1,port=38415,localport=2576]
$ docker run -it -p 8780:8080 -d smartonfhir/hapi-5:r4-syntheahttp://localhost:8780/hapi-fhir-jpaserver$ curl http://localhost:8780/hapi-fhir-jpaserver/fhir/Patient?_format=xml | grep -B2 '</identifier>' | head
в результате будет получен ответ
<system value="https://github.com/synthetichealth/synthea"/>
<value value="e925b0f3-8006-43f6-aa31-94bd215e55e7"/>
</identifier>
--
<system value="http://hospital.smarthealthit.org"/>
<value value="e925b0f3-8006-43f6-aa31-94bd215e55e7"/>
</identifier>
--
<system value="http://hl7.org/fhir/sid/us-ssn"/>
<value value="999-22-1962"/>GET /dcm4chee-arc/pdq/testHAPI/patients/e925b0f3%2D8006%2D43f6%2Daa31%2D94bd215e55e7%5E%5E%5Ehttps%3A%2F%2Fgithub%2Ecom%2Fsynthetichealth%2Fsynthea HTTP/1.1 Host: localhost:8880 User-Agent: curl/7.81.0 Accept: /