Ensure Assigning Authority for Patient Identifier - dcm4che/dcm4chee-arc-light GitHub Wiki
Patient records in DCM4CHEE 5 are identified by a unique primary patient identifier. For cases wherein modalities store DICOM
objects to the archive without any assigning authority i.e. Issuer of Patient ID (0010,0021)
and / or Issuer of Patient ID Qualifiers Sequence (0010,0024)
DICOM attributes in it, archive supplements the issuer by default, using the default configured coercion explained below.
It uses a prefix DCM4CHEE and appends hash values of Patient Name and Patient Birth Date.
The Issuer of Patient ID / Issuer of Patient ID Qualifiers Sequence coerced in the dataset are only present in the database. It is not coerced in the DICOM files stored on the storage system.
Refer
- Archive Coercions Basic Overview for general understanding on archive attribute coercions.
- Merge or Nullify Dataset Attributes for understanding this coercion type.
This howto provides configuration, test and verification steps for :
to coerce issuer to a patient identifier configured by default on DCM4CHEE application entity.
Additionally, refer
Create an LDIF file for following coercion
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
and import it into LDAP using ldapmodify command line utility
ldapmodify -xW -Dcn=admin,dc=dcm4che,dc=org -f config.ldif
Send test study to archive using storescu tool.
storescu -b ENSURE_ISS_PID -s PatientBirthDate=19651212 -s PatientID=P123 -s "IssuerOfPatientID=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/US/US2
In archive server log at $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]
In archive UI