Skip to content

Ensure Accession Number

Vrinda edited this page Apr 20, 2023 · 1 revision

Content

Overview

An Accession Number is a RIS generated number that identifies the order for the Study. At times the DICOM objects stored from modalities to the archive may not contain Accession Number (0008,0050) DICOM attribute in it.

In such cases, configure following coercion to coerce missing Accession Number using a static prefix and hash value of Study Instance UID (0020,000D).

The Accession Number coerced in the dataset is 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

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 - allModalities2vna - ensureAccNo - new,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
objectClass: dcmArchiveAttributeCoercion2
cn: coerce-c-store-rq - allModalities2vna - ensureAccNo - new
dcmDIMSE: C_STORE_RQ
dcmURI: merge-attrs:
dicomTransferRole: SCU
dcmProperty: SendingApplicationEntityTitle=ENSURE_ACC_NEW
dcmProperty: AccessionNumber!=.+
dcmRulePriority: 1
dcmMergeAttribute: AccessionNumber=ACC-{StudyInstanceUID,hash}

Test

Send test study to archive using storescu tool.

storescu -b ENSURE_ACC_NEW -s "AccessionNumber=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/CT/CT2

Verification

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

07:52:42,278 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=58587,localport=11112]
07:52:42,320 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) >> A-ASSOCIATE-RQ
07:52:42,321 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) << A-ASSOCIATE-AC
07:52:42,366 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) >> 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]
07:52:42,375 INFO  [org.dcm4chee.arc.coerce.impl.MergeAttributesCoercionProcessor] (EE-ManagedExecutorService-default-Thread-6) Merge Attributes using ArchiveAttributeCoercion2[cn=coerce-c-store-rq - allModalities2vna - ensureAccNo - new, priority=1, DIMSE=C_STORE_RQ, role=SCU, cuids=[], conditions={AccessionNumber!=.+, SendingApplicationEntityTitle=ENSURE_ACC_NEW}, uri=merge-attrs:, description=null, onFailure=RETHROW, sufficient=false, attributeUpdatePolicy=MERGE, mergeAttributes=[AccessionNumber=ACC-{StudyInstanceUID,hash}], deviceCoercionParam=null, otherCoercionParams={}]
07:52:42,408 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Create Patient[pk=114, id=PatientID[pk=114, id=SMS530102, issuer=null], name=COTTA^ANNA]
07:52:42,411 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Create Study[pk=99, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590859569, id=000001]
07:52:42,414 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Create Series[pk=114, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590860429, no=0, mod=CT]
07:52:42,416 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Create Instance[pk=281, uid=1.3.12.2.1107.5.8.1.12345678.199508041416590861483, class=1.2.840.10008.5.1.4.1.1.2, no=1]
07:52:42,417 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Create Location[pk=534, systemID=fs1-tar, path=2023/04/20/5E9204E8/5E9C00D5/C42DFB83, tsuid=1.2.840.10008.1.2, size=529502, status=OK, objectType=DICOM_FILE]
07:52:42,476 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2): Updated DB in 100 ms
07:52:42,482 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-6) No duplicate record with equal Patient ID found Patient[pk=114, id=PatientID[pk=114, id=SMS530102, issuer=null], name=COTTA^ANNA]
07:52:42,485 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) << 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]
07:52:42,489 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) >> A-RELEASE-RQ
07:52:42,489 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-6) DCM4CHEE<-ENSURE_ACC_NEW(2) << A-RELEASE-RP
07:52:42,540 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-3) DCM4CHEE<-ENSURE_ACC_NEW(2): close Socket[addr=view-localhost/127.0.0.1,port=58587,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 - allModalities2vna - ensureAccNo - legacy,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org
changetype: add
objectClass: dcmArchiveAttributeCoercion
cn: coerce-c-store-rq - allModalities2vna - ensureAccNo - legacy
dcmDIMSE: C_STORE_RQ
dicomTransferRole: SCU
dcmProperty: SendingApplicationEntityTitle=ENSURE_ACC_LGCY
dcmProperty: AccessionNumber!=.+
dcmRulePriority: 1
dcmMergeAttribute: AccessionNumber=ACC-{StudyInstanceUID,hash}

Test

Send test study to archive using storescu tool.

storescu -b ENSURE_ACC_LGCY -s "AccessionNumber=" -c DCM4CHEE@localhost:11112 ~/work/testdata/DICOM/modality/US/US2

Verification

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

07:53:34,793 INFO  [org.dcm4che3.net.Connection] (EE-ManagedExecutorService-default-Thread-1) Accept connection Socket[addr=/127.0.0.1,port=43973,localport=11112]
07:53:34,899 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) >> A-ASSOCIATE-RQ
07:53:34,899 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) << A-ASSOCIATE-AC
07:53:34,965 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) >> 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]
07:53:34,988 INFO  [org.dcm4chee.arc.conf.ArchiveAttributeCoercion] (EE-ManagedExecutorService-default-Thread-11) Merge attributes using coercion [cn=coerce-c-store-rq - allModalities2vna - ensureAccNo - legacy]
07:53:35,041 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Create Patient[pk=115, id=PatientID[pk=115, id=54321, issuer=null], name=HD11^SAMPLE IMAGES]
07:53:35,045 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Create Study[pk=100, uid=1.2.840.113543.6.6.4.1.623691791684870846611353555872217279695, id=20]
07:53:35,048 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Create Series[pk=115, uid=1.2.840.113543.6.6.4.1.323691791684870846611353555872217279695, no=1, mod=US]
07:53:35,052 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Create Instance[pk=282, uid=1.2.840.113543.6.6.4.1.61040196993270176841010767760672527419686, class=1.2.840.10008.5.1.4.1.1.6.1, no=4]
07:53:35,053 INFO  [org.dcm4chee.arc.store.impl.StoreServiceEJB] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Create Location[pk=535, systemID=fs1-tar, path=2023/04/20/F18C0EF9/96892936/2BBF1DCE, tsuid=1.2.840.10008.1.2, size=1441922, status=OK, objectType=DICOM_FILE]
07:53:35,118 INFO  [org.dcm4chee.arc.store.impl.StoreServiceImpl] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3): Updated DB in 130 ms
07:53:35,123 INFO  [org.dcm4chee.arc.patient.impl.PatientServiceEJB] (EE-ManagedExecutorService-default-Thread-11) No duplicate record with equal Patient ID found Patient[pk=115, id=PatientID[pk=115, id=54321, issuer=null], name=HD11^SAMPLE IMAGES]
07:53:35,126 INFO  [org.dcm4che3.net.Dimse] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) << 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]
07:53:35,130 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) >> A-RELEASE-RQ
07:53:35,130 INFO  [org.dcm4che3.net.Association] (EE-ManagedExecutorService-default-Thread-11) DCM4CHEE<-ENSURE_ACC_LGCY(3) << A-RELEASE-RP
07:53:35,181 INFO  [org.dcm4che3.net.Association] (EE-ManagedScheduledExecutorService-default-Thread-5) DCM4CHEE<-ENSURE_ACC_LGCY(3): close Socket[addr=view-localhost/127.0.0.1,port=43973,localport=11112]

In archive UI

Clone this wiki locally