Update help documentation and improve duplicate detection in upload process
This commit is contained in:
@@ -52,8 +52,9 @@
|
||||
<h5>Step 3: Integrate the uploader with PACs</h4>
|
||||
Whilst in PACs open the settings menu with the keyboard shortcut 'Ctrl+Shift+C'. In the 'General' tab, select 'External Tools' and click 'Add'. Press the Import button and select the xml file you downloaded in Step 2. Modify the file to run path to point the uploader exe downloaded in step 1 (clicking on the 3 dots will allow you to browse and select this file). The remaining fields should have been set via the xml file and should not require modification.
|
||||
<h3>Uploading without the uploader tool</h3>
|
||||
<p>If you have <b>annonymised</b> dicom files already exported you can uploading them directly using this <a href='{% url "atlas:new_uploads" %}'>form</a></p>
|
||||
<p>If you have <b>annonymised</b> dicom files already exported you can uploading them directly on this page using this <a href='{% url "atlas:new_uploads" %}'>page</a></p>
|
||||
<p>To do so you will have to first export the files from the PACs system.</p>
|
||||
<p>Once uploaded the series will be available to be imported into cases
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -11,14 +11,15 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>This form allows you to quickly upload dicom files to the server. Select the folder containing the dicom files below. If you wish to upload files directly from Insight you may rather use the <a href='{% url "atlas:help" %}'>Uploader tool.</a></p>
|
||||
<details>
|
||||
<summary>Help</summary>
|
||||
<p>This form allows you to quickly upload dicom files to the server. Select the folder containing the dicom files below. If you wish to upload files directly from Insight you may prefer to use the <a href='{% url "atlas:help" %}'>Uploader tool.</a></p>
|
||||
<details class="help-text">
|
||||
<summary><i class="bi bi-info-circle"></i> Help</summary>
|
||||
<p>Only valid dicom files will be uploaded. </p>
|
||||
<p>It is possible to upload multiple files by selecting the parent (containing) folder. Folders within will then be searched recursively for any valid dicom files.</p>
|
||||
<p>Files to be uploaded will be displayed below. </p>
|
||||
<p>DICOM tags will be checked to see if valid accession or hospital numbers are present but no annonymisation will be performed.</p>
|
||||
<p>By default a basic OCR will also be performed to check for burned in details on images, the is resource intensive and can be disabled if you know the content you are uploading does not feature any patient details.</p>
|
||||
<p>An attempt to detect duplicates will be made by calculating a hash of the pixel data in the DICOM files. If this check is not run and the files are uploaded they will be rejected.</p>
|
||||
<p>If enabled a basic OCR will also be performed to check for burned in details on images, this is resource intensive and can be disabled if you know the content you are uploading does not feature any patient details.</p>
|
||||
</details>
|
||||
<details>
|
||||
<summary>Settings</summary>
|
||||
@@ -97,7 +98,7 @@
|
||||
window.upload_count = 1;
|
||||
window.duplicate_series = new Set()
|
||||
|
||||
async function calculateBlake3Hash(file) {
|
||||
async function calculateBlake3Hash(file) {
|
||||
// Read file as ArrayBuffer
|
||||
const buffer = await file.arrayBuffer();
|
||||
// Parse as DICOM
|
||||
@@ -118,7 +119,7 @@ async function calculateBlake3Hash(file) {
|
||||
// Fallback: hash the whole file if pixel data is missing or parsing fails
|
||||
return await hashwasm.blake3(new Uint8Array(buffer));
|
||||
}
|
||||
}
|
||||
}
|
||||
async function checkForDuplicates(files) {
|
||||
const hashes = [];
|
||||
for (const file of files) {
|
||||
@@ -138,7 +139,7 @@ async function calculateBlake3Hash(file) {
|
||||
}
|
||||
|
||||
|
||||
async function processFilesWithDuplicateCheck() {
|
||||
async function processFilesWithDuplicateCheck() {
|
||||
const file_set = document.getElementById("filepicker").files;
|
||||
let hasDuplicates = false;
|
||||
const $dupProgress = $("#duplicate-progress");
|
||||
@@ -225,7 +226,7 @@ async function processFilesWithDuplicateCheck() {
|
||||
$("#uploadButton").prop("disabled", false);
|
||||
$dupProgress.empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function* chunks(arr, n) {
|
||||
@@ -631,11 +632,11 @@ async function processFilesWithDuplicateCheck() {
|
||||
{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<style>
|
||||
.duplicate-file-highlight {
|
||||
<style>
|
||||
.duplicate-file-highlight {
|
||||
background: #fff3cd !important;
|
||||
border-left: 5px solid #dc3545 !important;
|
||||
color: #856404 !important;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user