dicom-schema.sql 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. --
  2. -- A simple SQLITE3 database schema for modelling locally stored DICOM files
  3. --
  4. -- Note: the semicolon at the end is necessary for the simple parser to separate
  5. -- the statements since the SQlite driver does not handle multiple
  6. -- commands per QSqlQuery::exec call!
  7. -- Note: be sure to update ctkDICOMDatabase and SchemaInfo Version
  8. -- whenever you make a change to this schema
  9. -- ;
  10. DROP TABLE IF EXISTS 'SchemaInfo' ;
  11. DROP TABLE IF EXISTS 'Images' ;
  12. DROP TABLE IF EXISTS 'Patients' ;
  13. DROP TABLE IF EXISTS 'Series' ;
  14. DROP TABLE IF EXISTS 'Studies' ;
  15. DROP TABLE IF EXISTS 'Directories' ;
  16. DROP INDEX IF EXISTS 'ImagesFilenameIndex' ;
  17. DROP INDEX IF EXISTS 'ImagesSeriesIndex' ;
  18. DROP INDEX IF EXISTS 'SeriesStudyIndex' ;
  19. DROP INDEX IF EXISTS 'StudiesPatientIndex' ;
  20. CREATE TABLE 'SchemaInfo' ( 'Version' VARCHAR(1024) NOT NULL );
  21. INSERT INTO 'SchemaInfo' VALUES('0.5.3');
  22. CREATE TABLE 'Images' (
  23. 'SOPInstanceUID' VARCHAR(64) NOT NULL,
  24. 'Filename' VARCHAR(1024) NOT NULL ,
  25. 'SeriesInstanceUID' VARCHAR(64) NOT NULL ,
  26. 'InsertTimestamp' VARCHAR(20) NOT NULL ,
  27. PRIMARY KEY ('SOPInstanceUID') );
  28. CREATE TABLE 'Patients' (
  29. 'UID' INTEGER PRIMARY KEY AUTOINCREMENT,
  30. 'PatientsName' VARCHAR(255) NULL ,
  31. 'PatientID' VARCHAR(255) NULL ,
  32. 'PatientsBirthDate' DATE NULL ,
  33. 'PatientsBirthTime' TIME NULL ,
  34. 'PatientsSex' varchar(1) NULL ,
  35. 'PatientsAge' varchar(10) NULL ,
  36. 'PatientsComments' VARCHAR(255) NULL );
  37. CREATE TABLE 'Series' (
  38. 'SeriesInstanceUID' VARCHAR(64) NOT NULL ,
  39. 'StudyInstanceUID' VARCHAR(64) NOT NULL ,
  40. 'SeriesNumber' INT NULL ,
  41. 'SeriesDate' DATE NULL ,
  42. 'SeriesTime' VARCHAR(20) NULL ,
  43. 'SeriesDescription' VARCHAR(255) NULL ,
  44. 'Modality' VARCHAR(20) NULL ,
  45. 'BodyPartExamined' VARCHAR(255) NULL ,
  46. 'FrameOfReferenceUID' VARCHAR(64) NULL ,
  47. 'AcquisitionNumber' INT NULL ,
  48. 'ContrastAgent' VARCHAR(255) NULL ,
  49. 'ScanningSequence' VARCHAR(45) NULL ,
  50. 'EchoNumber' INT NULL ,
  51. 'TemporalPosition' INT NULL ,
  52. PRIMARY KEY ('SeriesInstanceUID') );
  53. CREATE TABLE 'Studies' (
  54. 'StudyInstanceUID' VARCHAR(64) NOT NULL ,
  55. 'PatientsUID' INT NOT NULL ,
  56. 'StudyID' VARCHAR(255) NULL ,
  57. 'StudyDate' DATE NULL ,
  58. 'StudyTime' VARCHAR(20) NULL ,
  59. 'AccessionNumber' VARCHAR(255) NULL ,
  60. 'ModalitiesInStudy' VARCHAR(255) NULL ,
  61. 'InstitutionName' VARCHAR(255) NULL ,
  62. 'ReferringPhysician' VARCHAR(255) NULL ,
  63. 'PerformingPhysiciansName' VARCHAR(255) NULL ,
  64. 'StudyDescription' VARCHAR(255) NULL ,
  65. PRIMARY KEY ('StudyInstanceUID') );
  66. CREATE UNIQUE INDEX IF NOT EXISTS 'ImagesFilenameIndex' ON 'Images' ('Filename');
  67. CREATE INDEX IF NOT EXISTS 'ImagesSeriesIndex' ON 'Images' ('SeriesInstanceUID');
  68. CREATE INDEX IF NOT EXISTS 'SeriesStudyIndex' ON 'Series' ('StudyInstanceUID');
  69. CREATE INDEX IF NOT EXISTS 'StudiesPatientIndex' ON 'Studies' ('PatientsUID');
  70. CREATE TABLE 'Directories' (
  71. 'Dirname' VARCHAR(1024) ,
  72. PRIMARY KEY ('Dirname') );