#include namespace creaImageIO { const int table_size = 5; const char* const table[] = { "DATABASE", "PATIENT" , "STUDY", "SERIES", "IMAGE" }; // PATIENT const int mandatory_patient_fields_size = 1; const Field::Description mandatory_patient_fields[] = { Field::Description("ID",0,0,"Database ID",1) }; const int default_patient_fields_size = 4; const Field::Description default_patient_fields[] = { Field::Description("A0010_0010",0x0010,0x0010,"Name",0), Field::Description("A0010_0020",0x0010,0x0020,"Patient ID",0), Field::Description("A0010_0040",0x0010,0x0040,"Sex",0), Field::Description("A0010_0030",0x0010,0x0030,"Birthday",0) }; const int patient_query_fields_size = 4; // STUDY const int mandatory_study_fields_size = 2; const Field::Description mandatory_study_fields[] = { Field::Description("ID",0,0,"Database ID",1), Field::Description("PARENT_ID",0,0,"Parent database ID",1) }; const int default_study_fields_size = 7; const Field::Description default_study_fields[] = { Field::Description("A0020_0010",0x0020,0x0010,"Study ID",0), Field::Description("A0008_0020",0x0008,0x0020,"Study Date",0), Field::Description("A0008_0030",0x0008,0x0030,"Study Time",0), Field::Description("A0020_000D",0x0020,0x000D,"Study Instance UID",0), Field::Description("A0008_0050",0x0008,0x0050,"Study Accession Number",0), Field::Description("A0008_1030",0x0008,0x1030,"Study Description",0), Field::Description("A0008_0005",0x0008,0x0005,"Specific Character Set",0) }; const int study_query_fields_size = 4; // SERIES const int mandatory_series_fields_size = 2; const Field::Description mandatory_series_fields[] = { Field::Description("ID",0,0,"Database ID",1), Field::Description("PARENT_ID",0,0,"Parent database ID",1) }; const int default_series_fields_size = 11; const Field::Description default_series_fields[] = { Field::Description("A0008_0021",0x0008,0x0021,"Series Date",0), Field::Description("A0008_0031",0x0008,0x0031,"Series Time",0), Field::Description("A0008_0060",0x0008,0x0060,"Modality",0), Field::Description("A0020_000E",0x0020,0x000E,"Series Instance UID",0), Field::Description("A0008_103E",0x0008,0x103E,"Description",0), Field::Description("A0008_0080",0x0008,0x0080,"Institution Name",0), Field::Description("A0008_0081",0x0008,0x0081,"Institution Adress",0), Field::Description("A0008_1010",0x0008,0x1010,"Station Name",0), Field::Description("A0008_1048",0x0008,0x1048,"Physician of Record",0), Field::Description("A0008_1050",0x0008,0x1050,"Performing Physician s Name",0), Field::Description("A0018_1030",0x0018,0x1030,"Protocol Name",0) }; const int series_query_fields_size = 4; // IMAGE const int mandatory_image_fields_size = 2; const Field::Description mandatory_image_fields[] = { Field::Description("ID",0,0,"Database ID",1), Field::Description("PARENT_ID",0,0,"Parent database ID",1) }; const int default_image_fields_size = 27; const Field::Description default_image_fields[] = { Field::Description("A0004_1500",0x0004,0x1500,"File name",0), Field::Description("FullFileName",0,0,"Full file name",0), Field::Description("A0008_0008",0x0008,0x0008,"Image Type",0), Field::Description("A0008_0023",0x0008,0x0023,"Content Date",0), Field::Description("A0008_0033",0x0008,0x0033,"Content Time",0), Field::Description("A0020_0013",0x0020,0x0013,"Image Number",0), Field::Description("A0020_0032",0x0020,0x0032,"Image Position Patient",0), Field::Description("A0020_0037",0x0020,0x0037,"Image Orientation Patient",0), Field::Description("A0020_0052",0x0020,0x0052,"Frame Reference UID",0), Field::Description("A0020_1041",0x0020,0x1041,"Slice Location",0), Field::Description("A0020_4000",0x0020,0x4000,"Image Comments",0), Field::Description("A0028_0002",0x0028,0x0002,"Sample per pixels",0), Field::Description("A0028_0004",0x0028,0x0004,"Photometric Interpretation",0), Field::Description("A0028_0006",0x0028,0x0006,"Planar Configuration",0), Field::Description("A0028_0008",0x0028,0x0008,"Number of Frames",0), Field::Description("A0028_0010",0x0028,0x0010,"Rows",0), Field::Description("A0028_0011",0x0028,0x0011,"Columns",0), Field::Description("A0028_0030",0x0028,0x0030,"Pixel Spacing",0), Field::Description("A0028_0100",0x0028,0x0100,"AlocatedBits",0), Field::Description("A0028_0101",0x0028,0x0101,"StoredBits",0), Field::Description("A0028_0103",0x0028,0x0103,"Pixel Representation",0), Field::Description("A0028_1052",0x0028,0x1052,"Rescale Intercept",0), Field::Description("A0028_1053",0x0028,0x1053,"Rescale Slope",0), Field::Description("A0050_0004",0x0050,0x0004,"Calibration Image",0), Field::Description("A0008_0016",0x0008,0x0016,"SOP Class UID",0), Field::Description("OWNER", 0, 0, "Owner",0), Field::Description("REGISTRATION",0, 0, "Registration",0) }; const int image_query_fields_size = 1; // Indexation const int mandatory_fields_size[5] = { 0, mandatory_patient_fields_size, mandatory_study_fields_size, mandatory_series_fields_size, mandatory_image_fields_size }; const Field::Description* mandatory_fields[5] = { 0, mandatory_patient_fields, mandatory_study_fields, mandatory_series_fields, mandatory_image_fields }; const int default_fields_size[5] = { 0, default_patient_fields_size, default_study_fields_size, default_series_fields_size, default_image_fields_size }; const Field::Description* default_fields[5] = { 0, default_patient_fields, default_study_fields, default_series_fields, default_image_fields }; const int query_fields_size[5] = { 0, patient_query_fields_size, study_query_fields_size, series_query_fields_size, image_query_fields_size }; int DicomDatabaseStructure::TableBegin() { return DicomNode::Patient; } int DicomDatabaseStructure::TableEnd() { return DicomNode::Image+1; } const char* DicomDatabaseStructure::Table(int i) { return table[i]; } int DicomDatabaseStructure::NbMandatoryFields(DicomNode::Type c) { return mandatory_fields_size[c]; } const Field::Description& DicomDatabaseStructure::MandatoryField(DicomNode::Type c, int i) { return mandatory_fields[c][i]; } int DicomDatabaseStructure::NbDefaultFields(DicomNode::Type c) { return default_fields_size[c]; } const Field::Description& DicomDatabaseStructure::DefaultField(DicomNode::Type c, int i) { return default_fields[c][i]; } int DicomDatabaseStructure::NbQueryFields(DicomNode::Type c) { return query_fields_size[c]; } const Field::Description& DicomDatabaseStructure::QueryField(DicomNode::Type c, int i) { return default_fields[c][i]; } } // namespace creaImageIO