The Database Manager UI allows the user to display the patient, study, series, and instance information stored in the database. The user can refine the search results by specifying search criteria (i.e. Patient ID, modality, Study ID, Accession Number, etc.).
There are two steps to making the Database Manager work properly with a custom database schema:
Specify the column and column data for each display level
Patient Level
Study Level
Series Level
Image Level
Assign the StorageDatabaseManager.PrepareSearch delegate to a custom search method that uses the new database schema.
An image of the Database Manager in the shipping version of the StorageServerManagerDemo_Original is shown in the following figure:
Note the ten columns displayed for Patient Level.
For each level (Patient, Study, Series, Instance), different columns are displayed. The table below summarizes the columns displayed for each level. There are four configuration files that determine which columns are displayed (one for each display level). If the configuration file does not already exist in the same directory as the StorageServerManagerDemo_Original.exe, then a default version is generated the first time the database manager is displayed at that particular level.
< Display Level |
Columns Displayed |
Configuration File |
---|---|---|
Patient Level |
|
PatientLevel.xml |
Study Level |
|
StudiesLevel.xml |
Series Level |
|
SeriesLevel.xml |
Instance Level |
|
ImagesLevel.xml |
The configuration files contain <mappingTable>
<ColumnName>PatientIdentification</ColumnName>
<FriendlyName>Patient ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
Mapping Table Element |
Description |
---|---|
ColumnName
|
The column name of the DatabaseTable. This corresponds to the <EntityKey> element value in the storage catalog file (MyCatolog.xml), which in turn identifies the DataTable name, and the actual DataTable.Column name.
|
FriendlyName
|
The name of column displayed in the Database Manager
|
Type |
The type of the field |
Visible
|
Set this to ‘true’ to show the column in the Database Manager. Set to ‘false’ to hide the column. |
For the tutorial database, the Database Manager Configuration files need to be modified as follows:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mappingTable">
<xs:complexType>
<xs:sequence>
<xs:element name="ColumnName" type="xs:string" minOccurs="0" />
<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
<xs:element name="Type" msdata:DataType="System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Visible" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<mappingTable>
<ColumnName>PatientIdentification</ColumnName>
<FriendlyName>Patient ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientName</ColumnName>
<FriendlyName>Last Name</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientBirthDay</ColumnName>
<FriendlyName>Birth Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientSex</ColumnName>
<FriendlyName>Sex</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientComments</ColumnName>
<FriendlyName>Comments</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
</NewDataSet>
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mappingTable">
<xs:complexType>
<xs:sequence>
<xs:element name="ColumnName" type="xs:string" minOccurs="0" />
<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
<xs:element name="Type" msdata:DataType="System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Visible" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<mappingTable>
<ColumnName>PatientIdentification</ColumnName>
<FriendlyName>Patient ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientName</ColumnName>
<FriendlyName>Last Name</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientBirthDay</ColumnName>
<FriendlyName>Birth Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientSex</ColumnName>
<FriendlyName>Sex</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyInstanceUID</ColumnName>
<FriendlyName>Study Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDate</ColumnName>
<FriendlyName>Study Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyAccessionNumber</ColumnName>
<FriendlyName>Accession Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyId</ColumnName>
<FriendlyName>Study ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDescription</ColumnName>
<FriendlyName>Study Description</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyReferringPhysiciansName</ColumnName>
<FriendlyName>Referring Physician</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
</NewDataSet>
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mappingTable">
<xs:complexType>
<xs:sequence>
<xs:element name="ColumnName" type="xs:string" minOccurs="0" />
<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
<xs:element name="Type" msdata:DataType="System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Visible" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<mappingTable>
<ColumnName>PatientIdentification</ColumnName>
<FriendlyName>Patient ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientName</ColumnName>
<FriendlyName>Last Name</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientBirthDay</ColumnName>
<FriendlyName>Birth Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientSex</ColumnName>
<FriendlyName>Sex</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyInstanceUID</ColumnName>
<FriendlyName>Study Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDate</ColumnName>
<FriendlyName>Study Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyAccessionNumber</ColumnName>
<FriendlyName>Accession Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyId</ColumnName>
<FriendlyName>Study ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDescription</ColumnName>
<FriendlyName>Study Description</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyReferringPhysiciansName</ColumnName>
<FriendlyName>Referring Physician</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesInstanceUID</ColumnName>
<FriendlyName>Series Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesModality</ColumnName>
<FriendlyName>Modality</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesNumber</ColumnName>
<FriendlyName>Series Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesDate</ColumnName>
<FriendlyName>Series Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesDescription</ColumnName>
<FriendlyName>Series Description</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
</NewDataSet>
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mappingTable">
<xs:complexType>
<xs:sequence>
<xs:element name="ColumnName" type="xs:string" minOccurs="0" />
<xs:element name="FriendlyName" type="xs:string" minOccurs="0" />
<xs:element name="Type" msdata:DataType="System.Type, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="Visible" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<mappingTable>
<ColumnName>PatientIdentification</ColumnName>
<FriendlyName>Patient ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientName</ColumnName>
<FriendlyName>Last Name</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientBirthDay</ColumnName>
<FriendlyName>Birth Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>PatientSex</ColumnName>
<FriendlyName>Sex</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyInstanceUID</ColumnName>
<FriendlyName>Study Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDate</ColumnName>
<FriendlyName>Study Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyAccessionNumber</ColumnName>
<FriendlyName>Accession Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyId</ColumnName>
<FriendlyName>Study ID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyStudyDescription</ColumnName>
<FriendlyName>Study Description</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>StudyReferringPhysiciansName</ColumnName>
<FriendlyName>Referring Physician</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesInstanceUID</ColumnName>
<FriendlyName>Series Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesModality</ColumnName>
<FriendlyName>Modality</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesNumber</ColumnName>
<FriendlyName>Series Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesDate</ColumnName>
<FriendlyName>Series Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SeriesSeriesDescription</ColumnName>
<FriendlyName>Series Description</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>SOPInstanceUID</ColumnName>
<FriendlyName>SOP Instance UID</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageImageNumber</ColumnName>
<FriendlyName>Instance Number</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageFilename</ColumnName>
<FriendlyName>Referenced File</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageLastStoreDate</ColumnName>
<FriendlyName>Storage Date</FriendlyName>
<Type>System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageColumns</ColumnName>
<FriendlyName>Columns</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageRows</ColumnName>
<FriendlyName>Rows</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
<mappingTable>
<ColumnName>ImageBitsAllocated</ColumnName>
<FriendlyName>ImageBitsAllocated</FriendlyName>
<Type>System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
<Visible>true</Visible>
</mappingTable>
</NewDataSet>
The second step to making the Database Manager interact properly with the tutorial database is to define a custom MyPrepareSearch method and assign it to the StorageDatabaseManager.PrepareSearch delegate. After doing this, the search fields in the Database Manager (highlighted below) will properly refine any database manager search.
The PrepareSearchDelegate is defined in Leadtools.Medical.Winforms.dll. It has the following signature:
public delegate void PrepareSearchDelegate(MatchingParameterCollection matchingCollection);
The MyPrepareSearch() method gets the search fields specified in the database manager by calling StorageDatabaseManager.GetDicomQueryParams(). This returns any query parameters specified.
Next, the MyPrepareSearch() method needs to create a MatchingParameterCollection that corresponds to the specified search. Note that the database manager search fields correspond to items contained in the patient, study, and series tables only. There are no search fields that correspond to the image table. Therefore MyPrepareSearch() only needs to add MyPatient, MyStudy, and MySeries objects to the MatchingParameterList. Below is the complete source code for the MyPrepareSearch() method:
private void MyPrepareSearch(MatchingParameterCollection matchingCollection)
{
DicomQueryParams q = __DbManager.GetDicomQueryParams();
try
{
MatchingParameterList matchingList = new MatchingParameterList();
MyPatient patient = new MyPatient();
MyStudy study = new MyStudy();
MySeries series = new MySeries();
matchingList.Add(patient);
matchingList.Add(study);
matchingList.Add(series);
matchingCollection.Add(matchingList);
study.StudyAccessionNumber = q.AccessionNumber;
patient.PatientIdentification = q.PatientId;
if (!string.IsNullOrEmpty(q.PatientName.FamilyName))
patient.PatientName = q.PatientName.FamilyName.TrimEnd('*') + "*";
if (!string.IsNullOrEmpty(q.PatientName.GivenName))
patient.PatientName = q.PatientName.GivenName.TrimEnd('*') + "*";
if (!string.IsNullOrEmpty(q.Modalities))
series.SeriesModality = q.Modalities.Replace(",", "\\"); ;
if (!string.IsNullOrEmpty(q.SeriesDescription))
series.SeriesSeriesDescription = q.SeriesDescription.TrimEnd('*') + "*";
if (!string.IsNullOrEmpty(q.ReferringPhysiciansName.FamilyName))
study.StudyReferringPhysiciansName = q.ReferringPhysiciansName.FamilyName.TrimEnd('*') + "*"; ;
if (!string.IsNullOrEmpty(q.ReferringPhysiciansName.GivenName))
study.StudyReferringPhysiciansName = q.ReferringPhysiciansName.GivenName.TrimEnd('*') + "*"; ;
if (q.StudyFromChecked || q.StudyToChecked)
{
DateRange studyDateRange = new DateRange();
if (q.StudyFromChecked)
{
studyDateRange.StartDate = q.StudyFromDate;
}
if (q.StudyToChecked)
{
studyDateRange.EndDate = q.StudyToDate;
}
study.StudyStudyDate = studyDateRange;
}
if (q.StorageDateChecked)
{
MyInstance instance = new MyInstance();
DateRange dateRange = new DateRange();
DateRangeFilter StorageDateRangeFilter = q.StorageDateRange;
string startDate = StorageDateRangeFilter.DateRangeFrom;
string endDate = StorageDateRangeFilter.DateRangeTo;
if (StorageDateRangeFilter.SelectedDateFilter == DateRangeFilter.RangeFilterType.DateRange)
{
if (!string.IsNullOrEmpty(startDate))
{
dateRange.StartDate = DateTime.Parse(startDate);
}
if (!string.IsNullOrEmpty(endDate))
{
dateRange.EndDate = DateTime.Parse(endDate);
}
}
else if (StorageDateRangeFilter.SelectedDateFilter == DateRangeFilter.RangeFilterType.Months)
{
DateTime lastMonthsDate = DateTime.Now.SubtractMonths(Convert.ToInt32(StorageDateRangeFilter.LastMonths));
dateRange.StartDate = lastMonthsDate;
dateRange.EndDate = DateTime.Now;
}
else
{
TimeSpan subtractionDays = new TimeSpan(Convert.ToInt32(StorageDateRangeFilter.LastDays),
DateTime.Now.Hour,
DateTime.Now.Minute,
DateTime.Now.Second,
DateTime.Now.Millisecond);
dateRange.StartDate = DateTime.Now.Subtract(subtractionDays);
dateRange.EndDate = DateTime.Now;
}
instance.ImageLastStoreDate = dateRange;
matchingList.Add(instance);
}
study.StudyStudyId = q.StudyId;
}
catch (Exception exception)
{
throw exception;
}
finally
{
// do nothing ;
}
}