File: gdcmWLMFindQuery.cxx

package info (click to toggle)
gdcm 2.6.6-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 29,952 kB
  • ctags: 49,807
  • sloc: cpp: 193,527; ansic: 119,435; xml: 44,906; sh: 7,153; python: 3,670; cs: 2,202; java: 1,344; lex: 1,290; tcl: 677; php: 128; makefile: 119
file content (99 lines) | stat: -rw-r--r-- 3,164 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*=========================================================================

  Program: GDCM (Grassroots DICOM). A DICOM library

  Copyright (c) 2006-2011 Mathieu Malaterre
  All rights reserved.
  See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
#include "gdcmWLMFindQuery.h"
#include "gdcmAttribute.h"
#include "gdcmSequenceOfItems.h"

namespace gdcm
{
WLMFindQuery::WLMFindQuery()
{
  mRootType = ePatientRootType;
  mHelpDescription = "Modality Worklist query";
}

void WLMFindQuery::InitializeDataSet(const EQueryLevel& inQueryLevel)
{
  // no level so no tags to add
  (void)inQueryLevel;
}

  std::vector<Tag> 
WLMFindQuery::GetTagListByLevel(const EQueryLevel& inQueryLevel)
{
  // no level so no tags
  std::vector<Tag> tags ;
  (void)inQueryLevel;
  return tags;
}

bool 
WLMFindQuery::ValidateQuery(bool inStrict) const
{
  //if it's empty, it's not useful
  (void)inStrict;
  const DataSet &ds = GetQueryDataSet();
  if (ds.Size() == 0) return false;

  // in Query somme tags are required other are optional
  // lets check that we have required one's

  bool theReturn = true ;
  DataSet validDs = GetValidDataSet();
  theReturn &= ValidDataSet( ds, validDs );

  return theReturn ;
}

UIDs::TSName WLMFindQuery::GetAbstractSyntaxUID() const
{
  return UIDs::ModalityWorklistInformationModelFIND;
}

DataSet WLMFindQuery::GetValidDataSet() const
{
  DataSet validDataSet ;
  Attribute<0x10,0x10> PatientName;
  validDataSet.Insert( PatientName.GetAsDataElement() );
  Attribute<0x10,0x20> PatientId;
  validDataSet.Insert( PatientId.GetAsDataElement() );

  gdcm::SmartPointer<gdcm::SequenceOfItems> sqItemList = new gdcm::SequenceOfItems();
  gdcm::DataElement scheduledProcedureStepSequence;
  scheduledProcedureStepSequence.SetTag( Tag(0x40,0x0100) );
  scheduledProcedureStepSequence.SetVR( gdcm::VR::SQ );
  scheduledProcedureStepSequence.SetValue( *sqItemList );
  scheduledProcedureStepSequence.SetVLToUndefined();
  validDataSet.Insert( scheduledProcedureStepSequence );


  // Item Separator
  gdcm::Item item; //( Tag(0xfffe,0xe000) );
  item.SetVLToUndefined();

  Attribute<0x8,0x60> Modality ;
  item.GetNestedDataSet().Insert( Modality.GetAsDataElement() );
  Attribute<0x40,0x1, VR::AE, VM::VM1> ScheduledStationAETitle ;
  item.GetNestedDataSet().Insert( ScheduledStationAETitle.GetAsDataElement() );
  Attribute<0x40,0x2> ScheduledProcedureStepStartDate;
  item.GetNestedDataSet().Insert( ScheduledProcedureStepStartDate.GetAsDataElement() );
  Attribute<0x40,0x3> ScheduledProcedureStepStartTime ;
  item.GetNestedDataSet().Insert( ScheduledProcedureStepStartTime.GetAsDataElement() );
  Attribute<0x40,0x6> ScheduledPerformingPhysiciansName ;
  item.GetNestedDataSet().Insert( ScheduledPerformingPhysiciansName.GetAsDataElement() );
  sqItemList->AddItem( item );
  return validDataSet;
}

} // end namespace gdcm