Database queries for the shipping LEAD Storage Server schema and the tutorial schema both follow the same pattern:
A sample query is shown below:

Suppose you want to build a query that returns all patient names that contain "Smith", where the PatientSex is "M". The query is identical to the sample query above, with the addition of a WHERE statement:

After defining the Storage Catalog and the CatalogEntity classes for each database table (for the tutorial these are MyPatient, MyStudy, MySeries, and MyInstance), the Leadtools.Medical.DataAccessLayer.SqlProviderUtilities.GenerateWhereStatement() method can be used to generate the WHERE statement of the query. An example showing how to this is provided later in the discussion.
The class MyStorageSqlDataAccessAgent that we create for the tutorial will override many of the StorageSqlDbDataAccessAgent methods that create SQL commands. Examples of each override that prepares an SQL query(without the SQL WHERE statement) are shown below, so that you can understand how these queries are constructed.
protected override void PreparePatientsQueryCommand
BEGINSET NOCOUNT ONCREATE TABLE #PrimaryKeys ( PatientId [int], StudyId [int], SeriesId [int], ImageId [int] )INSERT INTO #PrimaryKeysSELECT MyPatientTable.PatientId, MyStudyTable.StudyId, MySeriesTable.SeriesId, MyInstanceTable.ImageIdFROM MyPatientTableLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyPatientId = MyPatientTable.PatientIdLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesStudyId = MyStudyTable.StudyIdLEFT OUTER JOIN MyInstanceTable ON MyInstanceTable.ImageSeriesId = MySeriesTable.SeriesIdSET NOCOUNT OFFSELECT * FROM MyPatientTable WHERE PatientId IN ( SELECT PatientId FROM #PrimaryKeys )DROP TABLE #PrimaryKeysEND
protected override void PrepareStudiesQueryCommand
BEGINSET NOCOUNT ONCREATE TABLE #PrimaryKeys ( PatientId [int], StudyId [int], SeriesId [int], ImageId [int] )INSERT INTO #PrimaryKeysSELECT MyPatientTable.PatientId, MyStudyTable.StudyId, MySeriesTable.SeriesId, MyInstanceTable.ImageIdFROM MyStudyTableLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientIdLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesStudyId = MyStudyTable.StudyIdLEFT OUTER JOIN MyInstanceTable ON MyInstanceTable.ImageSeriesId = MySeriesTable.SeriesIdSET NOCOUNT OFFSELECT * FROM MyPatientTable WHERE PatientId IN ( SELECT PatientId FROM #PrimaryKeys )SELECT * FROM MyStudyTable WHERE StudyId IN ( SELECT StudyId FROM #PrimaryKeys )DROP TABLE #PrimaryKeysEND
protected override void PrepareSeriesQueryCommand
BEGINSET NOCOUNT ONCREATE TABLE #PrimaryKeys ( PatientId [int], StudyId [int], SeriesId [int], ImageId [int] )INSERT INTO #PrimaryKeysSELECT MyPatientTable.PatientId, MyStudyTable.StudyId, MySeriesTable.SeriesId, MyInstanceTable.ImageIdFROM MySeriesTableLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientIdLEFT OUTER JOIN MyInstanceTable ON MyInstanceTable.ImageSeriesId = MySeriesTable.SeriesIdSET NOCOUNT OFFSELECT * FROM MyPatientTable WHERE PatientId IN ( SELECT PatientId FROM #PrimaryKeys )SELECT * FROM MyStudyTable WHERE StudyId IN ( SELECT StudyId FROM #PrimaryKeys )SELECT * FROM MySeriesTable WHERE SeriesId IN ( SELECT SeriesId FROM #PrimaryKeys )DROP TABLE #PrimaryKeysEND
protected override void PrepareInstanceQueryCommand
BEGINSET NOCOUNT ONCREATE TABLE #PrimaryKeys ( PatientId [int], StudyId [int], SeriesId [int], ImageId [int] )INSERT INTO #PrimaryKeysSELECT MyPatientTable.PatientId, MyStudyTable.StudyId, MySeriesTable.SeriesId, MyInstanceTable.ImageIdFROM MyInstanceTableLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesId = MyInstanceTable.ImageSeriesIdLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientIdSET NOCOUNT OFFSELECT * FROM MyPatientTable WHERE PatientId IN ( SELECT PatientId FROM #PrimaryKeys )SELECT * FROM MyStudyTable WHERE StudyId IN ( SELECT StudyId FROM #PrimaryKeys )SELECT * FROM MySeriesTable WHERE SeriesId IN ( SELECT SeriesId FROM #PrimaryKeys )SELECT * FROM MyInstanceTable WHERE ImageId IN ( SELECT ImageId FROM #PrimaryKeys )DROP TABLE #PrimaryKeysEND
protected override void PrepareDeletePatientsCommand
DELETEFROM MyPatientTableWHERE ( MyPatientTable.PatientId IN( SELECT MyPatientTable.PatientIdFROM MyInstanceTableLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesId = MyInstanceTable.ImageSeriesIdLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientId ))
protected override void PrepareDeleteStudiesCommand
DELETEFROM MyStudyTableWHERE ( MyStudyTable.StudyId IN( SELECT MyStudyTable.StudyIdFROM MyInstanceTableLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesId = MyInstanceTable.ImageSeriesIdLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientId ))
protected override void PrepareDeleteSeriesCommand
DELETEFROM MySeriesTableWHERE ( MySeriesTable.SeriesId IN( SELECT MySeriesTable.SeriesIdFROM MyInstanceTableLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesId = MyInstanceTable.ImageSeriesIdLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientId ))
protected override void PrepareDeleteInstanceCommand
DELETEFROM MyInstanceTableWHERE ( MyInstanceTable.SOPInstanceUID IN( SELECT MyInstanceTable.SOPInstanceUIDFROM MyInstanceTableLEFT OUTER JOIN MySeriesTable ON MySeriesTable.SeriesId = MyInstanceTable.ImageSeriesIdLEFT OUTER JOIN MyStudyTable ON MyStudyTable.StudyId = MySeriesTable.SeriesStudyIdLEFT OUTER JOIN MyPatientTable ON MyPatientTable.PatientId = MyStudyTable.StudyPatientId ))
protected override void PrepareDeletePatientsNoChildStudiesCommand
DELETEFROM MyPatientTableWHERE MyPatientTable.PatientId NOT IN ( SELECT MyStudyTable.StudyPatientId FROM MyStudyTable )
protected override void PrepareDeleteStudiesNoChildSeriesCommand
DELETEFROM MyStudyTableWHERE MyStudyTable.StudyId NOT IN ( SELECT MySeriesTable.SeriesStudyId FROM MySeriesTable )
protected override void PrepareDeleteSeriesNoChildInstancesCommand
DELETEFROM MySeriesTableWHERE MySeriesTable.SeriesId NOT IN ( SELECT MyInstanceTable.ImageSeriesId FROM MyInstanceTable )
protected override void PrepareIsPatientExistsCommand
SELECT StudyStudyInstanceUIDFROM MyStudyTableWHERE StudyStudyInstanceUID='2222'
protected override void PrepareIsStudyExistsCommand
SELECT StudyStudyInstanceUIDFROM MyStudyTableWHERE StudyStudyInstanceUID='2222'
protected override void PrepareIsSeriesExistsCommand
SELECT SeriesSeriesInstanceUIDFROM MySeriesTableWHERE SeriesSeriesInstanceUID='3333'
protected override void PrepareIsInstanceExistsCommand
SELECT SOPInstanceUIDFROM MyInstanceTableWHERE SOPInstanceUID='4444'