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.
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
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 ))
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'
SELECT StudyStudyInstanceUIDFROM MyStudyTableWHERE StudyStudyInstanceUID='2222'
SELECT SeriesSeriesInstanceUIDFROM MySeriesTableWHERE SeriesSeriesInstanceUID='3333'
SELECT SOPInstanceUIDFROM MyInstanceTableWHERE SOPInstanceUID='4444'
|
|

Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.