Ensure Assigning Authority for Patient Identifier
Content
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.
Depending on the application requirements, users can coerce issuer either using the default configured coercion explained below or by using any of the following use cases :
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 and Import Configuration changes in LDAP
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
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
DCM4CHEE 5 Documentation