Записи пациентов в 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

Создайте 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 архива
