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

Обзор

Записи пациентов в DCM4CHEE 5 идентифицируются по уникальному первичному идентификатору пациента. Для случаев, когда модальности сохраняют DICOM-объекты в архив без какого-либо assigning authority, т. е. без DICOM-атрибутов Issuer of Patient ID (0010,0021) и/или Issuer of Patient ID Qualifiers Sequence (0010,0024) в нём, архив по умолчанию дополняет issuer, используя принуждение, настроенное по умолчанию и описанное ниже. Оно использует префикс DCM4CHEE и добавляет хеш-значения Patient Name и Patient Birth Date.

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

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

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

для принуждения issuer к идентификатору пациента, настроенному по умолчанию для application entity DCM4CHEE.

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

Принуждение, настроенное по умолчанию

Настройка

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

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

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

version: 1

dn: cn=SupplementIssuerOfPatientID,dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
dcmMergeAttribute: IssuerOfPatientID=DCM4CHEE.{PatientName,hash}.{PatientBirthDate,hash}
dcmDIMSE: C_STORE_RQ
dicomTransferRole: SCU
dcmProperty: IssuerOfPatientID!=.+
dcmProperty: SendingApplicationEntityTitle=ENSURE_ISS_PID
objectClass: dcmArchiveAttributeCoercion2
dcmURI: merge-attrs:
cn: SupplementIssuerOfPatientID

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

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

Тест

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

storescu -b ENSURE_ISS_PID -s PatientBirthDate=19651212 -s PatientID=P123 -s "IssuerOfPatientID=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/US/US2

Проверка

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

13:56:21,965 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=45615,localport=11112]
13:56:22,030 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) >> A-ASSOCIATE-RQ
13:56:22,031 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) << A-ASSOCIATE-AC
13:56:22,097 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) >> 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]
13:56:22,131 INFO  [org.dcm4chee.arc.coerce.impl.MergeAttributesCoercionProcessor] (EE-ManagedExecutorService-default-Thread-6) Merge Attributes using ArchiveAttributeCoercion2[cn=SupplementIssuerOfPatientID, priority=0, DIMSE=C_STORE_RQ, role=SCU, cuids=[], conditions={IssuerOfPatientID!=.+, SendingApplicationEntityTitle=ENSURE_ISS_PID}, uri=merge-attrs:, description=null, onFailure=RETHROW, sufficient=false, attributeUpdatePolicy=MERGE, mergeAttributes=[IssuerOfPatientID=DCM4CHEE.{PatientName,hash}.{PatientBirthDate,hash}], deviceCoercionParam=null, otherCoercionParams={}]
13:56:22,194 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Create Patient[pk=180, id=PatientID[pk=179, id=P123, issuer=DCM4CHEE.7EF143F2.null], name=HD11^SAMPLE IMAGES]
13:56:22,201 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Create Study[pk=142, uid=1.2.840.113543.6.6.4.1.623691791684870846611353555872217279695, id=20]
13:56:22,206 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Create Series[pk=171, uid=1.2.840.113543.6.6.4.1.323691791684870846611353555872217279695, no=1, mod=US]
13:56:22,213 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Create Instance[pk=357, uid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686, class=1.2.840.10008.5.1.4.1.1.6.1, no=4]
13:56:22,216 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Create Location[pk=610, systemID=fs1, path=2023/04/22/F18C0EF9/96892936/59A7CC83, tsuid=1.2.840.10008.1.2, size=1441928, status=OK, objectType=DICOM_FILE]
13:56:22,276 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2): Updated DB in 144 ms
13:56:22,285 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-6) No duplicate record with equal Patient ID found Patient[pk=180, id=PatientID[pk=179, id=P123, issuer=DCM4CHEE.7EF143F2.null], name=HD11^SAMPLE IMAGES]
13:56:22,291 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) << 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]
13:56:22,296 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) >> A-RELEASE-RQ
13:56:22,297 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ISS_PID(2) << A-RELEASE-RP
13:56:22,348 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-3) DCM4CHEE<-ENSURE_ISS_PID(2): close Socket[addr=view-localhost/127.0.0.1,port=45615,localport=11112]

В UI архива