Closed jesscall closed 3 years ago
The module is working fine on my machine. Maybe you need to apply a patch made by Cecile? here.
-- edit I checked and t2 does not exist in mri_parameter_form. Your error log is truncated, can you paste the complete output?
You're missing the link for "here"
@jesscall are you testing on RB or the CCNA dataset ?
@laemtl running the patch does not fix the error.
Log:
[Thu Sep 03 15:17:00.038746 2020] [php7:warn] [pid 17319] [client ::1:58878] PHP Warning: PDOStatement::execute(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'm.t2' in 'field list' in /var/www/loris/php/libraries/Database.class.inc on line 710, referer: http://localhost:8080/imaging_qc
[Thu Sep 03 15:17:00.039114 2020] [php7:notice] [pid 17319] [client ::1:58878] Could not execute SELECT PSCID, SessionID, cand_id, site, project, subproject, visit_label, scan_type, mri_parameter_form, scan_done, tarchive_loc, scan_location, qc_status, uploaded_by, selected, CommentID, TarchiveID FROM ( SELECT DISTINCT\n c.PSCID,\n s.ID as SessionID,\n s.CandID as cand_id,\n (SELECT name FROM psc WHERE CenterID=s.CenterID) as site,\n s.Visit_label as visit_label,\n 't1' as scan_type,\n t.TarchiveID as tarchiveID,\n CASE\n WHEN EXISTS(\n SELECT\n *\n FROM\n tarchive_series ts\n LEFT JOIN mri_protocol mp ON mp.Scan_type=44\n WHERE\n ts.TarchiveID = t.TarchiveID\n AND (ts.EchoTime BETWEEN mp.TE_min AND mp.TE_max)\n AND (ts.RepetitionTime BETWEEN mp.TR_min AND mp.TR_max) ) THEN 'In DICOM' ELSE 'Missing'\n END as tarchive_loc,\n (SELECT Name FROM Project WHERE ProjectID=s.ProjectID) as project, (SELECT title FROM subproject WHERE SubprojectID=s.SubprojectID)\n as subproject, CASE\n WHEN m.Data_entry_completion_status='Incomplete' THEN 'Incomplete'\n ELSE 'Complete'\n END AS mri_parameter_form,\n CASE\n WHEN m.T1_Scan_done IS NULL THEN ''\n WHEN (m.T1_Scan_done = 'Complete'\n OR m.T1_Scan_done = 'Partial') THEN 'Yes'\n ELSE 'No'\n END as scan_done,\n CASE\n WHEN (fi.fileID IS NULL AND mvl.PatientName IS NULL) THEN 'Missing'\n WHEN fi.fileID IS NOT NULL THEN 'In Imaging Browser'\n WHEN mvl.PatientName IS NOT NULL THEN 'In MRI Violated Scans'\n END as scan_location,\n CASE\n WHEN qc.Selected = '' THEN 'False'\n WHEN qc.Selected = 'true' THEN 'True'\n END as selected,\n qc.QCStatus as qc_status,\n mu.uploadedBy as uploaded_by,\n f.CommentID as CommentID FROM flag f\n JOIN session s ON (f.SessionID=s.ID)\n JOIN candidate c ON (s.CandID=c.CandID)\n LEFT JOIN mri_parameter_form m ON (m.CommentID=f.CommentID)\n LEFT JOIN tarchive t ON (t.SessionID=s.ID)\n LEFT JOIN files fi ON (fi.SessionID=s.ID AND\n fi.AcquisitionProtocolID=44)\n LEFT JOIN mri_violations_log mvl ON\n (mvl.CandID = s.CandID AND mvl.Scan_type=44\n AND mvl.PatientName LIKE CONCAT ('%', s.Visit_label,'%'))\n LEFT JOIN files_qcstatus qc ON (qc.FileID = fi.FileID)\n LEFT JOIN mri_upload mu ON (mu.SessionID = f.SessionID) WHERE 1=1\n AND NOT f.CommentID LIKE 'DDE%'\n AND f.Test_name='mri_parameter_form'\n AND c.Active='Y'\n AND s.Active='Y'\n AND s.CenterID <> '1' \n UNION ALL\n SELECT DISTINCT\n c.PSCID,\n s.ID as SessionID,\n s.CandID as cand_id,\n (SELECT name FROM psc WHERE CenterID=s.CenterID) as site,\n s.Visit_label as visit_label,\n 't2' as scan_type,\n t.TarchiveID as tarchiveID,\n CASE\n WHEN EXISTS(\n SELECT\n *\n FROM\n tarchive_series ts\n LEFT JOIN mri_protocol mp ON mp.Scan_type=45\n WHERE\n ts.TarchiveID = t.TarchiveID\n AND (ts.EchoTime BETWEEN mp.TE_min AND mp.TE_max)\n AND (ts.RepetitionTime BETWEEN mp.TR_min AND mp.TR_max) ) THEN 'In DICOM' ELSE 'Missing'\n END as tarchive_loc,\n (SELECT Name FROM Project WHERE ProjectID=s.ProjectID) as project, (SELECT title FROM subproject WHERE SubprojectID=s.SubprojectID)\n as subproject, CASE\n WHEN m.Data_entry_completion_status='Incomplete' THEN 'Incomplete'\n ELSE 'Complete'\n END AS mri_parameter_form,\n CASE\n WHEN m.t2_Scan_done IS NULL THEN ''\n WHEN (m.t2_Scan_done = 'Complete'\n OR m.t2_Scan_done = 'Partial') THEN 'Yes'\n ELSE 'No'\n END as scan_done,\n CASE\n WHEN (fi.fileID IS NULL AND mvl.PatientName IS NULL) THEN 'Missing'\n WHEN fi.fileID IS NOT NULL THEN 'In Imaging Browser'\n WHEN mvl.PatientName IS NOT NULL THEN 'In MRI Violated Scans'\n END as scan_location,\n CASE\n WHEN qc.Selected = '' THEN 'False'\n WHEN qc.Selected = 'true' THEN 'True'\n END as selected,\n qc.QCStatus as qc_status,\n mu.uploadedBy as uploaded_by,\n f.CommentID as CommentID FROM flag f\n JOIN session s ON (f.SessionID=s.ID)\n JOIN candidate c ON (s.CandID=c.CandID)\n LEFT JOIN mri_parameter_form m ON (m.CommentID=f.CommentID)\n LEFT JOIN tarchive t ON (t.SessionID=s.ID)\n LEFT JOIN files fi ON (fi.SessionID=s.ID AND\n fi.AcquisitionProtocolID=45)\n LEFT JOIN mri_violations_log mvl ON\n (mvl.CandID = s.CandID AND mvl.Scan_type=45\n AND mvl.PatientName LIKE CONCAT ('%', s.Visit_label,'%'))\n LEFT JOIN files_qcstatus qc ON (qc.FileID = fi.FileID)\n LEFT JOIN mri_upload mu ON (mu.SessionID = f.SessionID) WHERE 1=1\n AND NOT f.CommentID LIKE 'DDE%'\n AND f.Test_name='mri_parameter_form'\n AND c.Active='Y'\n AND s.Active='Y'\n AND s.CenterID <> '1' \n UNION ALL\n SELECT DISTINCT\n c.PSCID,\n s.ID as SessionID,\n s.CandID as cand_id,\n (SELECT name FROM psc WHERE CenterID=s.CenterID) as site,\n s.Visit_label as visit_label,\n 't2-defaced' as scan_type,\n t.TarchiveID as tarchiveID,\n CASE\n WHEN EXISTS(\n SELECT\n *\n FROM\n tarchive_series ts\n LEFT JOIN mri_protocol mp ON mp.Scan_type=1014\n WHERE\n ts.TarchiveID = t.TarchiveID\n AND (ts.EchoTime BETWEEN mp.TE_min AND mp.TE_max)\n AND (ts.RepetitionTime BETWEEN mp.TR_min AND mp.TR_max) ) THEN 'In DICOM' ELSE 'Missing'\n END as tarchive_loc,\n (SELECT Name FROM Project WHERE ProjectID=s.ProjectID) as project, (SELECT title FROM subproject WHERE SubprojectID=s.SubprojectID)\n as subproject, CASE\n WHEN m.Data_entry_completion_status='Incomplete' THEN 'Incomplete'\n ELSE 'Complete'\n END AS mri_parameter_form,\n CASE\n WHEN m.t2-defaced_Scan_done IS NULL THEN ''\n WHEN (m.t2-defaced_Scan_done = 'Complete'\n OR m.t2-defaced_Scan_done = 'Partial') THEN 'Yes'\n ELSE 'No'\n END as scan_done,\n CASE\n WHEN (fi.fileID IS NULL AND mvl.PatientName IS NULL) THEN 'Missing'\n WHEN fi.fileID IS NOT NULL THEN 'In Imaging Browser'\n WHEN mvl.PatientName IS NOT NULL THEN 'In MRI Violated Scans'\n END as scan_location,\n CASE\n WHEN qc.Selected = '' THEN 'False'\n WHEN qc.Selected = 'true' THEN 'True'\n END as selected,\n qc.QCStatus as qc_status,\n mu.uploadedBy as uploaded_by,\n f.CommentID as CommentID FROM flag f\n JOIN session s ON (f.SessionID=s.ID)\n JOIN candidate c ON (s.CandID=c.CandID)\n LEFT JOIN mri_parameter_form m ON (m.CommentID=f.CommentID)\n LEFT JOIN tarchive t ON (t.SessionID=s.ID)\n LEFT JOIN files fi ON (fi.SessionID=s.ID AND\n fi.AcquisitionProtocolID=1014)\n LEFT JOIN mri_violations_log mvl ON\n (mvl.CandID = s.CandID AND mvl.Scan_type=1014\n AND mvl.PatientNa
[Thu Sep 03 15:17:00.039250 2020] [php7:notice] [pid 17319] [client ::1:58878] Unknown column 'm.t2' in 'field list'#0 /var/www/loris/php/libraries/Database.class.inc(747): Database->execute(Object(PDOStatement), Array)\n#1 /var/www/loris/php/libraries/NDB_Menu_Filter.class.inc(863): Database->pselect('SELECT PSCID, S...', Array)\n#2 /var/www/loris/php/libraries/NDB_Menu_Filter.class.inc(799): NDB_Menu_Filter->_getFullList()\n#3 /var/www/loris/php/libraries/NDB_Menu_Filter.class.inc(828): NDB_Menu_Filter->toArray()\n#4 /var/www/loris/php/libraries/NDB_Menu_Filter.class.inc(698): NDB_Menu_Filter->toJSON()\n#5 /var/www/loris/php/libraries/NDB_Page.class.inc(714): NDB_Menu_Filter->display()\n#6 /var/www/loris/php/libraries/NDB_Page.class.inc(693): NDB_Page->handle(Object(Laminas\\Diactoros\\ServerRequest))\n#7 /var/www/loris/php/libraries/Module.class.inc(412): NDB_Page->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\imaging_qc\\Imaging_QC))\n#8 /var/www/loris/src/Middleware/ResponseGenerator.php(50): Module->handle(Object(Laminas\\Diactoros\\ServerRequest))\n#9 /var/www/loris/src/Middleware/AuthMiddleware.php(63): LORIS\\Middleware\\ResponseGenerator->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\imaging_qc\\Module))\n#10 /var/www/loris/src/Router/ModuleRouter.php(74): LORIS\\Middleware\\AuthMiddleware->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\imaging_qc\\Module))\n#11 /var/www/loris/src/Middleware/ExceptionHandlingMiddleware.php(34): LORIS\\Router\\ModuleRouter->handle(Object(Laminas\\Diactoros\\ServerRequest))\n#12 /var/www/loris/src/Router/BaseRouter.php(112): LORIS\\Middleware\\ExceptionHandlingMiddleware->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\Router\\ModuleRouter))\n#13 /var/www/loris/src/Middleware/ResponseGenerator.php(50): LORIS\\Router\\BaseRouter->handle(Object(Laminas\\Diactoros\\ServerRequest))\n#14 /var/www/loris/src/Middleware/ContentLength.php(52): LORIS\\Middleware\\ResponseGenerator->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\Router\\BaseRouter))\n#15 /var/www/loris/htdocs/index.php(48): LORIS\\Middleware\\ContentLength->process(Object(Laminas\\Diactoros\\ServerRequest), Object(LORIS\\Router\\BaseRouter))\n#16 {main}, referer: http://localhost:8080/imaging_qc
@ridz1208 using RB
Okay I realize what the problem is.
In Configuration -> Imaging Modules -> Tabulated Scan Types
, I had the following listed:
The problem arises for the t2-defaced scan type. When removing it from the list, the module loads correctly.
The problem seems to be the references to m.t2-defaced_Scan_done
. They need to be escaped because of the -
.
Issuing PR to escape the field.
However I should note that this still doesn't fix the problem: The reason being that t2-defaced_Scan_done
is not a field in the mri_parameter_form table.
@cmadjar Should these scan types be added to the instrument? Or does this query need to be updated to only check for scan types in the mri_parameter_form table?
@jesscall good catch! Indeed, I think the query should be updated to only check for scan types that are also present in the mri_parameter_form
table. Thanks!
@cmadjar Made the fixes in the linked PR, if you can take a look I'd really like your feedback!
oops, sorry, must have put a wrong number in the commit message.. that was supposed to just autoclose the million issues about "SessionID does not exist" exceptions.
There are still some issues related to the change made to sessionID (see #7063)
Describe the bug Module does not load. Get a 500 error.
Here is the error log:
To Reproduce Steps to reproduce the behavior (attach screenshots if applicable):
What did you expect to happen? For the module to load.