From d2aa451c88022af25e3ad4782e157ae150995fa8 Mon Sep 17 00:00:00 2001 From: delphine Date: Wed, 19 Jul 2023 15:04:13 +0200 Subject: [PATCH 1/2] #863 progress --- .../AutoQuery/Query/QuerySeries.jsx | 44 +++++++++---- .../components/AutoQuery/Query/QueryTable.jsx | 2 +- .../AutoQuery/Query/QueryTableSeries.jsx | 66 +++++++++++++++++++ 3 files changed, 100 insertions(+), 12 deletions(-) create mode 100644 FrontEnd/src/components/AutoQuery/Query/QueryTableSeries.jsx diff --git a/FrontEnd/src/components/AutoQuery/Query/QuerySeries.jsx b/FrontEnd/src/components/AutoQuery/Query/QuerySeries.jsx index 9d156f20..30449d27 100644 --- a/FrontEnd/src/components/AutoQuery/Query/QuerySeries.jsx +++ b/FrontEnd/src/components/AutoQuery/Query/QuerySeries.jsx @@ -1,6 +1,22 @@ import React, { useState } from 'react' import { useDispatch, useSelector } from 'react-redux' +import { Button, Container, Modal, Row } from 'react-bootstrap' +import moment from 'moment' + +import Spinner from '../../CommonComponents/Spinner' +import CsvLoader from './CsvLoader' +import QueryTable from './QueryTable' + +import { addRow, emptyQueryTable, removeQuery } from '../../../actions/TableQuery' +import { useCustomQuery } from '../../../services/ReactQuery/hooks' +import apis from '../../../services/apis' +import { keys } from '../../../model/Constant' +import { exportCsv } from '../../../tools/CSVExport' +import { dissmissToast, errorMessage, infoMessage, successMessage, updateToastMessage } from '../../../tools/toastify' +import { addStudyResult } from '../../../actions/TableResult' +import EditQueries from './EditQueries' +import QueryTableSeries from './QueryTableSeries' export default ((onQuerySeriesFinished)=> { @@ -17,6 +33,8 @@ export default ((onQuerySeriesFinished)=> { ) const queries = useSelector(state => state.AutoRetrieveQueryList.queries) + console.log("queries : ", queries) + const onRowClick = (rowId) => { setCurrentRow(rowId) } @@ -34,19 +52,23 @@ export default ((onQuerySeriesFinished)=> { } const onCSVDownload = () => { - let data = queries.map(row => { + let result = Object.values(data).map(row => { return { - /*'Patient Name': row.PatientName, + 'Patient Name': row.PatientName, 'Patient ID': row.PatientID, 'Accession Number': row.AccessionNumber, - 'Date From': formattedDateFrom, - 'Date To': formattedDateTo, - 'Study Description': row.StudyDescription, - 'Modalities': row.ModalitiesInStudy, - 'AET': row.Aet*/ + 'Study Date': row.StudyDate, + 'Study Description': row.StudyDescription , + 'Requested Procedure': row.RequestedProcedureDescription, + 'Study Instance UID' : row.StudyInstanceUID, + 'Series Instance UID': row.SeriesInstanceUID, + 'Series Description': row.SeriesDescription, + 'Modalities': row.Modality, + 'Number of Instances': row.NumberOfSeriesRelatedInstances, + 'AET': row.OriginAET } }) - exportCsv(data, 'csv', 'queriesSeries.csv') + exportCsv(result, 'csv', 'queriesSeries.csv') } const makeDicomQuery = async (queryParams) => { @@ -108,7 +130,7 @@ export default ((onQuerySeriesFinished)=> { i = i++ updateToastMessage(toastId, 'Query series ' + i + '/' + data.length) //For each line make dicom query and return results - try { + /*try { let answeredResults = await makeDicomQuery(query) //For each results, fill the result table through Redux answeredResults.forEach((answer) => { @@ -116,7 +138,7 @@ export default ((onQuerySeriesFinished)=> { }) } catch (err) { console.error(err) - } + }*/ } @@ -162,7 +184,7 @@ export default ((onQuerySeriesFinished)=> { - { + + const dispatch = useDispatch() + + const selectRowHandle = (rowIds) => { + onSelectRowsChange(rowIds) + } + + const cellEditHandler = (rowIndex, columnId, value) => { + dispatch(editCellQuery(rowIndex, columnId, value)); + } + + const rowStyle = (queryKey) => { + if (queryKey === currentRow) return { background: 'peachPuff' } + } + + const columns = [{ + id: 'key', + accessorKey: 'key', + enableHiding: true + }, { + accessorKey: 'StudyInstanceUID', + header: 'StudyInstanceUID', + isEditable: true + }, { + accessorKey: 'SeriesInstanceUID', + header: 'SeriesInstanceUID', + isEditable: true + }, { + accessorKey: 'Aet', + header: 'AET', + isEditable: true, + editionProperties: { + type: 'SELECT', + options: aets.map(aet => ({ value: aet, label: aet })) + } + }] + + return ( + + ) +} \ No newline at end of file From 9fb10ce8bc2d40fc284ae992469cd5c75513a121 Mon Sep 17 00:00:00 2001 From: salim kanoun Date: Thu, 20 Jul 2023 09:08:33 +0200 Subject: [PATCH 2/2] anonymization to fixed nema version --- BackEnd/model/Orthanc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/BackEnd/model/Orthanc.js b/BackEnd/model/Orthanc.js index 3e34d040..6a02c684 100644 --- a/BackEnd/model/Orthanc.js +++ b/BackEnd/model/Orthanc.js @@ -450,6 +450,7 @@ class Orthanc { KeepPrivateTags: false, Force: true, Synchronous: synchronous, + DicomVersion : "2021b", Keep: [], Replace: {} }