- ListDicomDirPatientElem::const_iterator it;
- uint16_t tmpGr,tmpEl;
- DictEntry *dictEntry;
- ValEntry *entry;
-
- ListDicomDirPatientElem const & elemList =
- Global::GetDicomDirElements()->GetDicomDirPatientElements();
- SQItem *s = new SQItem(0);
-
- // for all the DicomDirPatient Elements
- for( it = elemList.begin(); it != elemList.end(); ++it )
- {
- tmpGr = it->Group;
- tmpEl = it->Elem;
- dictEntry = GetPubDict()->GetDictEntryByNumber(tmpGr, tmpEl);
- entry = new ValEntry( dictEntry );
- entry->SetOffset(0); // just to avoid further missprinting
- entry->SetValue( it->Value );
-
- // dealing with value length ...
-
- if( dictEntry->GetGroup() == 0xfffe)
- {
- entry->SetLength(entry->GetValue().length());
- }
- else if( dictEntry->GetVR() == "UL" || dictEntry->GetVR() == "SL" )
- {
- entry->SetLength( 4 );
- }
- else if( dictEntry->GetVR() == "US" || dictEntry->GetVR() == "SS" )
- {
- entry->SetLength(2);
- }
- else if( dictEntry->GetVR() == "SQ" )
- {
- entry->SetLength( 0xffffffff );
- }
- else
- {
- entry->SetLength( entry->GetValue().length() );
- }
- s->AddDocEntry( entry );
- }
-
- DicomDirPatient *p = new DicomDirPatient(s, &TagHT);
- Patients.push_front( p );
-
- return p;