TEST(DicomFormat, Tag) { ASSERT_EQ("PatientName", FromDcmtkBridge::GetName(DicomTag(0x0010, 0x0010))); DicomTag t = FromDcmtkBridge::ParseTag("SeriesDescription"); ASSERT_EQ(0x0008, t.GetGroup()); ASSERT_EQ(0x103E, t.GetElement()); t = FromDcmtkBridge::ParseTag("0020-e040"); ASSERT_EQ(0x0020, t.GetGroup()); ASSERT_EQ(0xe040, t.GetElement()); }
void DicomArray::Print(FILE* fp) const { for (size_t i = 0; i < elements_.size(); i++) { DicomTag t = elements_[i]->GetTag(); std::string s = elements_[i]->GetValue().AsString(); printf("0x%04x 0x%04x [%s]\n", t.GetGroup(), t.GetElement(), s.c_str()); } }
void DicomArray::Print(FILE* fp) const { for (size_t i = 0; i < elements_.size(); i++) { DicomTag t = elements_[i]->GetTag(); const DicomValue& v = elements_[i]->GetValue(); std::string s = v.IsNull() ? "(null)" : v.GetContent(); printf("0x%04x 0x%04x [%s]\n", t.GetGroup(), t.GetElement(), s.c_str()); } }
void DatabaseWrapperBase::SetIdentifierTag(int64_t id, const DicomTag& tag, const std::string& value) { SQLite::Statement s(db_, SQLITE_FROM_HERE, "INSERT INTO DicomIdentifiers VALUES(?, ?, ?, ?)"); s.BindInt64(0, id); s.BindInt(1, tag.GetGroup()); s.BindInt(2, tag.GetElement()); s.BindString(3, value); s.Run(); }
void DatabaseWrapperBase::LookupIdentifier(std::list<int64_t>& target, ResourceType level, const DicomTag& tag, IdentifierConstraintType type, const std::string& value) { static const char* COMMON = ("SELECT d.id FROM DicomIdentifiers AS d, Resources AS r WHERE " "d.id = r.internalId AND r.resourceType=? AND " "d.tagGroup=? AND d.tagElement=? AND "); std::auto_ptr<SQLite::Statement> s; switch (type) { case IdentifierConstraintType_GreaterOrEqual: s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value>=?")); break; case IdentifierConstraintType_SmallerOrEqual: s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value<=?")); break; case IdentifierConstraintType_Wildcard: s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value GLOB ?")); break; case IdentifierConstraintType_Equal: default: s.reset(new SQLite::Statement(db_, std::string(COMMON) + "d.value=?")); break; } assert(s.get() != NULL); s->BindInt(0, level); s->BindInt(1, tag.GetGroup()); s->BindInt(2, tag.GetElement()); s->BindString(3, value); target.clear(); while (s->Step()) { target.push_back(s->ColumnInt64(0)); } }
DcmTagKey ToDcmtkBridge::Convert(const DicomTag& tag) { return DcmTagKey(tag.GetGroup(), tag.GetElement()); }