Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
jl-update-mri-example
#4
by
jl-abc
- opened
- app.py +1 -2
- prompt_instruction.py +0 -8
- report_examples.py +3 -3
- static/script.js +5 -10
- static/style.css +0 -1
app.py
CHANGED
|
@@ -253,8 +253,7 @@ def predict():
|
|
| 253 |
)
|
| 254 |
result = model.predict(processed_data, model_id=model_id)
|
| 255 |
|
| 256 |
-
|
| 257 |
-
if use_cache and sample_id:
|
| 258 |
cache_manager.cache_result(processed_data, result, sample_id)
|
| 259 |
|
| 260 |
result["sanitized_input"] = processed_data
|
|
|
|
| 253 |
)
|
| 254 |
result = model.predict(processed_data, model_id=model_id)
|
| 255 |
|
| 256 |
+
if use_cache:
|
|
|
|
| 257 |
cache_manager.cache_result(processed_data, result, sample_id)
|
| 258 |
|
| 259 |
result["sanitized_input"] = processed_data
|
prompt_instruction.py
CHANGED
|
@@ -107,14 +107,6 @@ PROMPT_INSTRUCTION = textwrap.dedent(
|
|
| 107 |
```
|
| 108 |
|
| 109 |
Within "attributes" each attribute should be a key-value pair as shown in the examples below. The attribute **"clinical_significance"** MUST be included for findings_body extractions and should be one of: **"normal"**, **"minor"**, **"significant"**, or **"not_applicable"** to indicate the importance of the finding.
|
| 110 |
-
|
| 111 |
-
Clinical significance levels:
|
| 112 |
-
- **"significant"**: Findings requiring medical attention, follow-up, or intervention. Any finding that would typically require follow-up imaging or clinical correlation should be marked as significant.
|
| 113 |
-
- **"minor"**: Benign or incidental findings without immediate clinical impact that do not require follow-up
|
| 114 |
-
- **"normal"**: No abnormality detected
|
| 115 |
-
- **"not_applicable"**: When significance cannot be determined
|
| 116 |
-
|
| 117 |
-
**Important**: Clinical significance must be based solely on medical content, not text quality or grammar. Minor typos or grammatical errors in the input should not affect significance classification.
|
| 118 |
|
| 119 |
---
|
| 120 |
|
|
|
|
| 107 |
```
|
| 108 |
|
| 109 |
Within "attributes" each attribute should be a key-value pair as shown in the examples below. The attribute **"clinical_significance"** MUST be included for findings_body extractions and should be one of: **"normal"**, **"minor"**, **"significant"**, or **"not_applicable"** to indicate the importance of the finding.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
| 111 |
---
|
| 112 |
|
report_examples.py
CHANGED
|
@@ -466,7 +466,7 @@ def get_examples_for_model() -> list[lx.data.ExampleData]:
|
|
| 466 |
|
| 467 |
The ventricular system is normal in size and configuration.
|
| 468 |
|
| 469 |
-
No
|
| 470 |
|
| 471 |
IMPRESSION:
|
| 472 |
Normal brain MRI.
|
|
@@ -503,10 +503,10 @@ def get_examples_for_model() -> list[lx.data.ExampleData]:
|
|
| 503 |
},
|
| 504 |
),
|
| 505 |
lx.data.Extraction(
|
| 506 |
-
extraction_text="No
|
| 507 |
extraction_class="findings_body",
|
| 508 |
attributes={
|
| 509 |
-
"section": "
|
| 510 |
"clinical_significance": "normal",
|
| 511 |
},
|
| 512 |
),
|
|
|
|
| 466 |
|
| 467 |
The ventricular system is normal in size and configuration.
|
| 468 |
|
| 469 |
+
No abnormal enhancement is seen.
|
| 470 |
|
| 471 |
IMPRESSION:
|
| 472 |
Normal brain MRI.
|
|
|
|
| 503 |
},
|
| 504 |
),
|
| 505 |
lx.data.Extraction(
|
| 506 |
+
extraction_text="No abnormal enhancement is seen.",
|
| 507 |
extraction_class="findings_body",
|
| 508 |
attributes={
|
| 509 |
+
"section": "Enhancement",
|
| 510 |
"clinical_significance": "normal",
|
| 511 |
},
|
| 512 |
),
|
static/script.js
CHANGED
|
@@ -86,6 +86,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
| 86 |
|
| 87 |
// Model dropdown elements
|
| 88 |
const modelSelect = document.getElementById('model-select');
|
|
|
|
| 89 |
const modelLink = document.getElementById('model-link');
|
| 90 |
|
| 91 |
/**
|
|
@@ -108,11 +109,14 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
| 108 |
*/
|
| 109 |
function updateModelInfo() {
|
| 110 |
const selectedModel = modelSelect.value;
|
|
|
|
|
|
|
| 111 |
if (modelLink) modelLink.href = modelInfo[selectedModel].link;
|
| 112 |
}
|
| 113 |
|
| 114 |
if (modelSelect) {
|
| 115 |
modelSelect.addEventListener('change', updateModelInfo);
|
|
|
|
| 116 |
}
|
| 117 |
|
| 118 |
// Cache optimization elements
|
|
@@ -570,16 +574,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
| 570 |
|
| 571 |
rawOutput.innerHTML = '';
|
| 572 |
|
| 573 |
-
|
| 574 |
-
if (typeof window.JSONFormatter === 'undefined') {
|
| 575 |
-
console.error('JSONFormatter library not loaded, using fallback');
|
| 576 |
-
rawOutput.innerHTML = '<pre style="white-space: pre-wrap; word-wrap: break-word;">' +
|
| 577 |
-
JSON.stringify(rawData, null, 2) + '</pre>';
|
| 578 |
-
rawOutput._jsonData = rawData;
|
| 579 |
-
return;
|
| 580 |
-
}
|
| 581 |
-
|
| 582 |
-
const formatter = new window.JSONFormatter(rawData, {
|
| 583 |
hoverPreviewEnabled: true,
|
| 584 |
animateOpen: false,
|
| 585 |
animateClose: false,
|
|
|
|
| 86 |
|
| 87 |
// Model dropdown elements
|
| 88 |
const modelSelect = document.getElementById('model-select');
|
| 89 |
+
const modelNameSpan = document.getElementById('model-name');
|
| 90 |
const modelLink = document.getElementById('model-link');
|
| 91 |
|
| 92 |
/**
|
|
|
|
| 109 |
*/
|
| 110 |
function updateModelInfo() {
|
| 111 |
const selectedModel = modelSelect.value;
|
| 112 |
+
if (modelNameSpan)
|
| 113 |
+
modelNameSpan.textContent = modelInfo[selectedModel].text;
|
| 114 |
if (modelLink) modelLink.href = modelInfo[selectedModel].link;
|
| 115 |
}
|
| 116 |
|
| 117 |
if (modelSelect) {
|
| 118 |
modelSelect.addEventListener('change', updateModelInfo);
|
| 119 |
+
updateModelInfo();
|
| 120 |
}
|
| 121 |
|
| 122 |
// Cache optimization elements
|
|
|
|
| 574 |
|
| 575 |
rawOutput.innerHTML = '';
|
| 576 |
|
| 577 |
+
const formatter = new JSONFormatter(rawData, {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 578 |
hoverPreviewEnabled: true,
|
| 579 |
animateOpen: false,
|
| 580 |
animateClose: false,
|
static/style.css
CHANGED
|
@@ -578,7 +578,6 @@ body {
|
|
| 578 |
width: 100%;
|
| 579 |
height: clamp(300px, 50vh, 500px);
|
| 580 |
min-height: 300px;
|
| 581 |
-
resize: vertical;
|
| 582 |
overflow: auto;
|
| 583 |
border: 2px solid #e9ecef;
|
| 584 |
border-radius: 8px;
|
|
|
|
| 578 |
width: 100%;
|
| 579 |
height: clamp(300px, 50vh, 500px);
|
| 580 |
min-height: 300px;
|
|
|
|
| 581 |
overflow: auto;
|
| 582 |
border: 2px solid #e9ecef;
|
| 583 |
border-radius: 8px;
|