← Навигация по документации

Обзор

Записи пациентов в DCM4CHEE 5 идентифицируются по первичному идентификатору пациента. Для случаев, когда модальности сохраняют DICOM-объекты в архив без DICOM-атрибута Patient ID (0010,0020) в нём, пользователи могут настроить следующее принуждение для подстановки отсутствующего Patient ID с использованием Patient Name (0010,0010) и хеш-значения Study Instance UID (0020,000D).

Если принуждение не настроено, пациентам с отсутствующим Patient ID (0010,0020) присваиваются значения, формируемые генератором Patient ID ID Generator, т. к. по умолчанию значение Accept Missing Patient ID архива равно CREATE

Patient ID, принуждённый в наборе данных, присутствует только в базе данных. В DICOM-файлах, хранящихся в системе хранения, он не принуждается.

См. - Archive Coercions Basic Overview для общего понимания принуждений атрибутов архива. - Merge or Nullify Dataset Attributes для понимания этого типа принуждения.

Это практическое руководство описывает настройку, тестирование и проверку для : - New Archive Attribute Coercion

См. Important Notes.

Дополнительно см. Where to configure Archive Attribute Coercion rules

Настройка

Через UI архива

С помощью Apache LDAP Directory Studio / LDIF-скриптов

Создайте LDIF-файл для следующего принуждения

version: 1

dn: cn=coerce-c-store-rq - allModalities2vna - ensurePatientID - new,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
objectClass: dcmArchiveAttributeCoercion2
cn: coerce-c-store-rq - allModalities2vna - ensurePatientID - new
dcmDIMSE: C_STORE_RQ
dcmURI: merge-attrs:
dicomTransferRole: SCU
dcmProperty: SendingApplicationEntityTitle=ENSURE_PID_NEW
dcmProperty: PatientID!=.+
dcmRulePriority: 1
dcmMergeAttribute: PatientID={PatientName}-{StudyInstanceUID,hash}

и импортируйте его в LDAP с помощью утилиты командной строки ldapmodify

ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f config.ldif

Тест

Отправьте тестовое исследование в архив с помощью инструмента storescu.

storescu -b ENSURE_PID_NEW -s "PatientID=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/US/US2

Проверка

В журнале сервера архива $WILDFLY_HOME/standalone/log/server.log

17:38:49,614 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=57559,localport=11112]
17:38:49,637 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) >> A-ASSOCIATE-RQ
17:38:49,651 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) << A-ASSOCIATE-AC
17:38:49,690 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) >> 1:C-STORE-RQ[pcid=5, prior=0
  cuid=1.2.840.10008.5.1.4.1.1.6.1 - Ultrasound Image Storage
  iuid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
17:38:49,847 INFO  [org.dcm4chee.arc.coerce.impl.MergeAttributesCoercionProcessor] (EE-ManagedExecutorService-default-Thread-5) Merge Attributes using ArchiveAttributeCoercion2[cn=coerce-c-store-rq - allModalities2vna - ensurePatientID - new, priority=1, DIMSE=C_STORE_RQ, role=SCU, cuids=[], conditions={PatientID!=.+, SendingApplicationEntityTitle=ENSURE_PID_NEW}, uri=merge-attrs:, description=null, onFailure=RETHROW, sufficient=false, attributeUpdatePolicy=MERGE, mergeAttributes=[PatientID={PatientName}-{StudyInstanceUID,hash}], deviceCoercionParam=null, otherCoercionParams={}]
17:38:49,962 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Create Patient[pk=177, id=PatientID[pk=176, id=HD11^SAMPLE IMAGES^^^-F18C0EF9, issuer=null], name=HD11^SAMPLE IMAGES]
17:38:49,970 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Create Study[pk=139, uid=1.2.840.113543.6.6.4.1.623691791684870846611353555872217279695, id=20]
17:38:49,977 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Create Series[pk=168, uid=1.2.840.113543.6.6.4.1.323691791684870846611353555872217279695, no=1, mod=US]
17:38:49,982 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Create Instance[pk=350, uid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686, class=1.2.840.10008.5.1.4.1.1.6.1, no=4]
17:38:49,988 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Create Location[pk=603, systemID=fs1, path=2023/04/21/F18C0EF9/96892936/79C7289C, tsuid=1.2.840.10008.1.2, size=1441916, status=OK, objectType=DICOM_FILE]
17:38:50,058 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1): Updated DB in 211 ms
17:38:50,069 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-5) No duplicate record with equal Patient ID found Patient[pk=177, id=PatientID[pk=176, id=HD11^SAMPLE IMAGES^^^-F18C0EF9, issuer=null], name=HD11^SAMPLE IMAGES]
17:38:50,077 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) << 1:C-STORE-RSP[pcid=5, status=0H
  cuid=1.2.840.10008.5.1.4.1.1.6.1 - Ultrasound Image Storage
  iuid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
17:38:50,080 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) >> A-RELEASE-RQ
17:38:50,081 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_PID_NEW(1) << A-RELEASE-RP
17:38:50,132 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-3) DCM4CHEE<-ENSURE_PID_NEW(1): close Socket[addr=view-localhost/127.0.0.1,port=57559,localport=11112]

В UI архива