Ejemplo n.º 1
0
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());
}
Ejemplo n.º 2
0
 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());
   }
 }
Ejemplo n.º 3
0
 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());
   }
 }
Ejemplo n.º 4
0
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();
}
Ejemplo n.º 5
0
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));
    }
}
Ejemplo n.º 6
0
 DcmTagKey ToDcmtkBridge::Convert(const DicomTag& tag)
 {
   return DcmTagKey(tag.GetGroup(), tag.GetElement());
 }