Skip to content

Supplement DICOM Object Attributes

Vrinda edited this page Apr 19, 2023 · 4 revisions

Content

Overview

DICOM objects stored from modalities to the archive may not contain certain DICOM attributes in it. Configure following coercion to supplement missing attributes information.

The attributes supplemented to the dataset are only present in the database. It is not coerced in the DICOM files stored on the storage system.

Refer

This howto will provide configuration, test and verification steps for :

although the former is recommended. See Important Notes.

Additionally, refer Where to configure Archive Attribute Coercion rules

Common Configuration

In Configuration menu - Devices tab, add a device (eg. storescu) containing attributes to be supplemented which will be referenced by the archive device dcm4chee-arc

Using archive UI

Using Apache LDAP Directory Studio / ldif scripts

Create an LDIF file for following device and Import Configuration changes in LDAP

version: 1

dn: dicomDeviceName=storescu,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
dicomInstalled: TRUE
dicomIssuerOfPatientID: Site A&1.2.40.0.13.1.1.999.111.1111&ISO
dicomDeviceName: storescu
dicomIssuerOfAdmissionID: Site A&1.2.40.0.13.1.1.999.111.1111&ISO
dicomIssuerOfAccessionNumber: Site A&1.2.40.0.13.1.1.999.111.1111&ISO
dicomInstitutionName: Site A
dicomInstitutionCode: (111.1111, 99DCM4CHEE, "Site A")
objectClass: dicomDevice
objectClass: dcmDevice
dicomPrimaryDeviceType: CT

Coercion using New Archive Attribute Coercion

Configuration

Using archive UI

Using Apache LDAP Directory Studio / ldif scripts

Create an LDIF file for following coercion and Import Configuration changes in LDAP

version: 1

dn: cn=coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - new,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
objectClass: dcmArchiveAttributeCoercion2
cn: coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - new
dcmDIMSE: C_STORE_RQ
dcmURI: sup-from-dev:
dicomTransferRole: SCU
dcmProperty: SendingApplicationEntityTitle=SUP_MISS_NEW
dcmRulePriority: 1
dcmSupplementFromDeviceReference: dicomDeviceName=storescu,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org

Test

Send test study to archive using storescu tool.

storescu -b SUP_MISS_NEW -s PatientID=P123 -s "IssuerOfPatientID=" -s AccessionNumber=ACC123 -s AdmissionID=ADM123 -s "InstitutionName=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/CT/CT2

Verification

In archive server log at $WILDFLY_HOME/standalone/log/server.log

22:26:58,278 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=59353,localport=11112]
22:26:58,302 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) >> A-ASSOCIATE-RQ
22:26:58,303 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) << A-ASSOCIATE-AC
22:26:58,329 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) >> 1:C-STORE-RQ[pcid=5, prior=0
  cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
  iuid=1.3.12.2.1107.5.8.1.12345678.199508041416590861483 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
22:26:58,337 INFO  [org.dcm4chee.arc.coerce.impl.SupplementFromDeviceCoercionProcessor] (EE-ManagedExecutorService-default-Thread-16) Supplement composite object from device: storescu using coercion ArchiveAttributeCoercion2[cn=coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - new, priority=1, DIMSE=C_STORE_RQ, role=SCU, cuids=[], conditions={SendingApplicationEntityTitle=SUP_MISS_NEW}, uri=sup-from-dev:, description=null, onFailure=RETHROW, sufficient=false, attributeUpdatePolicy=MERGE, mergeAttributes=[], deviceCoercionParam=storescu, otherCoercionParams={}]
22:26:58,366 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Patient[pk=28, id=PatientID[pk=28, id=P123, issuer=Site A&1.2.40.0.13.1.1.999.111.1111&ISO], name=COTTA^ANNA]
22:26:58,369 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Study[pk=25, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590859569, id=000001]
22:26:58,371 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Series[pk=25, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590860429, no=0, mod=CT]
22:26:58,373 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Instance[pk=92, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590861483, class=1.2.840.10008.5.1.4.1.1.2, no=1]
22:26:58,374 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Location[pk=183, systemID=fs1, path=2023/04/17/5E9204E8/5E9C00D5/61ED4E7E, tsuid=1.2.840.10008.1.2, size=529498, status=OK, objectType=DICOM_FILE]
22:26:58,374 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Create Location[pk=184, systemID=metadata, path=2023/04/17/5E9204E8/5E9C00D5/E8E833B4, tsuid=null, size=10396, status=OK, objectType=METADATA]
22:26:58,428 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3): Updated DB in 91 ms
22:26:58,432 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-16) No duplicate record with equal Patient ID found Patient[pk=28, id=PatientID[pk=28, id=P123, issuer=Site A&1.2.40.0.13.1.1.999.111.1111&ISO], name=COTTA^ANNA]
22:26:58,434 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) << 1:C-STORE-RSP[pcid=5, status=0H
  cuid=1.2.840.10008.5.1.4.1.1.2 - CT Image Storage
  iuid=1.3.12.2.1107.5.8.1.12345678.199508041416590861483 - ?
  tsuid=1.2.840.10008.1.2 - Implicit VR Little Endian]
22:26:58,436 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) >> A-RELEASE-RQ
22:26:58,436 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-16) DCM4CHEE<-SUP_MISS_NEW(3) << A-RELEASE-RP
22:26:58,487 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-3) DCM4CHEE<-SUP_MISS_NEW(3): close Socket[addr=view-localhost/127.0.0.1,port=59353,localport=11112]

In archive UI

Coercion Configuration using Legacy Archive Attribute Coercion

Using archive UI

Using Apache LDAP Directory Studio / ldif scripts

Create an LDIF file for following coercion and Import Configuration changes in LDAP

version: 1

dn: cn=coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - legacy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
objectClass: dcmArchiveAttributeCoercion
cn: coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - legacy
dcmDIMSE: C_STORE_RQ
dicomTransferRole: SCU
dcmProperty: SendingApplicationEntityTitle=SUP_MISS_LEGACY
dcmRulePriority: 1
dcmSupplementFromDeviceReference: dicomDeviceName=storescu,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org

Test

Send test study to archive using storescu tool.

storescu -b SUP_MISS_LEGACY -s PatientID=P456 -s "IssuerOfPatientID=" -s AccessionNumber=ACC456 -s AdmissionID=ADM456 -s "InstitutionName=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/US/US2

Verification

In archive server log at $WILDFLY_HOME/standalone/log/server.log

22:32:14,637 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=51181,localport=11112]
22:32:14,654 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) >> A-ASSOCIATE-RQ
22:32:14,654 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) << A-ASSOCIATE-AC
22:32:14,679 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) >> 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]
22:32:14,704 INFO  [org.dcm4chee.arc.conf.ArchiveAttributeCoercion] (EE-ManagedExecutorService-default-Thread-15) Merge attributes using coercion [cn=coerce-c-store-rq - all2vna - supplementMissingAttrsFromDev - legacy]
22:32:14,704 INFO  [org.dcm4chee.arc.mima.SupplementAssigningAuthorities] (EE-ManagedExecutorService-default-Thread-15) Supplement entity Instance by coercion org.dcm4chee.arc.mima.SupplementAssigningAuthorities@5ed37a10
22:32:14,704 INFO  [org.dcm4chee.arc.mima.SupplementAssigningAuthorities] (EE-ManagedExecutorService-default-Thread-15) Supplement composite object from device: storescu
22:32:14,724 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Patient[pk=29, id=PatientID[pk=29, id=P456, issuer=Site A&1.2.40.0.13.1.1.999.111.1111&ISO], name=HD11^SAMPLE IMAGES]
22:32:14,726 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Study[pk=26, uid=1.2.840.113543.6.6.4.1.623691791684870846611353555872217279695, id=20]
22:32:14,728 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Series[pk=26, uid=1.2.840.113543.6.6.4.1.323691791684870846611353555872217279695, no=1, mod=US]
22:32:14,729 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Instance[pk=93, uid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686, class=1.2.840.10008.5.1.4.1.1.6.1, no=4]
22:32:14,730 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Location[pk=185, systemID=fs1, path=2023/04/17/F18C0EF9/96892936/2BBF1DCE, tsuid=1.2.840.10008.1.2, size=1441924, status=OK, objectType=DICOM_FILE]
22:32:14,731 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Create Location[pk=186, systemID=metadata, path=2023/04/17/F18C0EF9/96892936/2BBF1DCE.json, tsuid=null, size=4103, status=OK, objectType=METADATA]
22:32:14,755 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4): Updated DB in 51 ms
22:32:14,757 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-15) No duplicate record with equal Patient ID found Patient[pk=29, id=PatientID[pk=29, id=P456, issuer=Site A&1.2.40.0.13.1.1.999.111.1111&ISO], name=HD11^SAMPLE IMAGES]
22:32:14,759 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) << 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]
22:32:14,762 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) >> A-RELEASE-RQ
22:32:14,762 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-15) DCM4CHEE<-SUP_MISS_LEGACY(4) << A-RELEASE-RP
22:32:14,812 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-3) DCM4CHEE<-SUP_MISS_LEGACY(4): close Socket[addr=view-localhost/127.0.0.1,port=51181,localport=11112]

In archive UI

Clone this wiki locally