This commit is contained in:
Ross
2024-02-13 22:27:03 +00:00
parent 95237b5a29
commit 92fca51b79
4 changed files with 82 additions and 6 deletions
+23
View File
@@ -612,6 +612,29 @@ class Series(SeriesBase):
return series_json
def get_ohif_dicom_json(self, case_title_as_patient_name = True):
series_json = []
series_json.append(self.get_series_dicom_json())
patient_name = ""
if case_title_as_patient_name:
patient_name = self.title
return {
"studies": [
{
"StudyInstanceUID": "1.3.6.1.4.1.14519.5.2.1.6279.6001.298806137288633453246975630178",
"StudyDate": "20000101",
"StudyTime": "",
"PatientName": patient_name,
"PatientID": "LIDC-IDRI-0001",
"AccessionNumber": "",
"PatientAge": "",
"PatientSex": "",
"series": series_json,
}
]
}
class CaseCollection(ExamOrCollectionGenericBase):
app_name = "atlas"
+36 -6
View File
@@ -2,14 +2,38 @@
{% block content %}
<h3>Cases</h3>
<ol id="full-question-list" class="sortable">
{% for case in cases %}
<li data-question_pk={{case.pk}}>Case {{forloop.counter}}: {{case.title}} &nbsp;
<details class="help-text">
<summary>Instructions</summary>
<p>Click on the 'Show' button to view the case in the viewer. Click on the 'Open' button to open the case in a new window.</p>
<p>Opening a second case will replace the first case in the viewer or window.</p>
</details>
aoeu
<button class="show-case no-padding" data-title="{{case.title}}" data-target="/ohif/viewer/dicomjson?url=https://www.penracourses.org.uk{% url 'atlas:case_dicom_json' case.pk %}">Show</button>
<ol id="" class="sortable">
{% for case in cases %}
<li data-question_pk={{case.pk}}>
<div>Case {{forloop.counter}}: {{case.title}} &nbsp;
<button class="show-case no-padding" data-title="{{case.title}}" data-target="/ohif/viewer/dicomjson?url=https://www.penracourses.org.uk{% url 'atlas:case_dicom_json' case.pk %}">Show</button>
{% comment %} <button class="send-message no-padding" data-title="{{case.title}}" data-target="/ohif/viewer/dicomjson?url=https://www.penracourses.org.uk{% url 'atlas:case_dicom_json' case.pk %}">Open</button> {% endcomment %}
<button class="open-case no-padding" data-title="{{case.title}}" data-target="{% url 'atlas:collection_viva_case' collection.pk forloop.counter0 %}">Case</button>
<button class="open-case no-padding" data-title="{{case.title}}" data-target="{% url 'atlas:collection_viva_case' collection.pk forloop.counter0 %}">Open</button>
<br />
<div class="pre-whitespace multi-image-block"><b>Series:</b>
{% for series in case.series.all %}
<span class="series-block">
<span>
<span class="series-block-series-number">Series {{ forloop.counter }}:</span><br>
{{series.get_block}}
<button class="show-series" data-target="/ohif/viewer/dicomjson?url=https://www.penracourses.org.uk{% url 'atlas:series_dicom_json' series.pk %}">
show
</button>
<button class="open-series" data-target="{% url 'atlas:collection_viva_series' collection.pk series.pk %}">
show
</button>
<br>
</span>
</span>
{% endfor %}
</div>
</div>
</li>
{% endfor %}
@@ -34,6 +58,12 @@
$('#case-title').text($(this).data('title'));
$('#viewer').attr('src', url)
});
$('.show-series').click(function() {
var url = $(this).data('target');
console.log('clicked', url)
$('#case-title').text("Series: " + $(this).data('title'));
$('#viewer').attr('src', url)
});
$('.open-case').click(function() {
var url = $(this).data('target');
bc.postMessage(url);
+6
View File
@@ -58,6 +58,7 @@ urlpatterns = [
path("collection/<int:pk>", views.collection_detail, name="collection_detail"),
path("collection/<int:pk>/viva", views.collection_viva, name="collection_viva"),
path("collection/<int:pk>/viva/<int:case_number>", views.collection_viva_case, name="collection_viva_case"),
path("collection/<int:pk>/viva/<int:series_id>", views.collection_viva_series, name="collection_viva_series"),
path(
"collection/<int:pk>/take",
views.collection_take_start,
@@ -148,6 +149,11 @@ urlpatterns = [
views.case_dicom_json,
name="case_dicom_json",
),
path(
"series/<int:pk>/dicom_json",
views.series_dicom_json,
name="series_dicom_json",
),
path("uncategorised_dicoms/", views.uncategorised_dicoms, name="uncategorised_dicoms_view"),
path("condition/", views.ConditionView.as_view(), name="condition_view"),
+17
View File
@@ -1363,6 +1363,19 @@ def collection_viva_case(request, pk, case_number):
{"collection": collection, "cases": cases, "current_case": current_case},
)
@user_is_collection_author_or_atlas_editor
def collection_viva_series(request, pk, series_id):
collection = get_object_or_404(CaseCollection, pk=pk)
series = get_object_or_404(Series, pk=series_id)
return render(
request,
"atlas/collection_viva_case.html",
{"collection": collection, "current_case": series},
)
@user_is_collection_author_or_atlas_editor
def collection_detail(request, pk):
collection = get_object_or_404(CaseCollection, pk=pk)
@@ -1820,6 +1833,10 @@ def case_dicom_json(request, pk):
return JsonResponse(case.get_case_dicom_json())
def series_dicom_json(request, pk):
series = get_object_or_404(Series, pk=pk)
return JsonResponse(series.get_ohif_dicom_json())
@user_is_collection_author_or_atlas_editor
def delete_collection_cid_answers(request, exam_id, cid):