start integrating cimar
This commit is contained in:
@@ -315,6 +315,9 @@ STATICFILES_DIRS = (
|
||||
os.path.join(BASE_DIR, "rad", "static"), # That's it!!
|
||||
)
|
||||
|
||||
CIMAR_USERNAME = ""
|
||||
CIMAR_PASSWORD = ""
|
||||
|
||||
try:
|
||||
from .settings_local import *
|
||||
except ImportError as e:
|
||||
|
||||
+22
@@ -158,6 +158,28 @@ urlpatterns = [
|
||||
path("ac/", autocomplete_urls),
|
||||
path('psutil/', psutil_urlpatterns(), name='psutil'),
|
||||
path("cimar/", views.cimar, name="cimar"),
|
||||
path(
|
||||
"cimar/study/<str:uuid>/dicom_json",
|
||||
views.cimar_study_dicom_json,
|
||||
name="cimar_study_dicom_json",
|
||||
),
|
||||
path(
|
||||
"cimar/study/<str:uuid>/viewer",
|
||||
views.cimar_study_viewer,
|
||||
name="cimar_study_viewer",
|
||||
),
|
||||
path(
|
||||
"cimar/study/<str:uuid>/viewer/embed",
|
||||
views.cimar_study_viewer_embed,
|
||||
name="cimar_study_viewer_embed",
|
||||
),
|
||||
path(
|
||||
"cimar/study/<str:uuid>/series_block",
|
||||
views.cimar_study_series_block,
|
||||
name="cimar_study_series_block",
|
||||
),
|
||||
|
||||
path("cimar/login/", views.cimar_login, name="cimar_login"),
|
||||
|
||||
]
|
||||
|
||||
|
||||
+64
-1
@@ -48,6 +48,7 @@ from anatomy.models import AnatomyQuestion
|
||||
from anatomy.models import Answer as AnatomyAnswer
|
||||
from rad.filters import UserListFilter
|
||||
|
||||
from helpers.cimar import CimarAPI, InvalidCredentials, NoSession
|
||||
from rapids.models import UserAnswer as RapidsUserAnswer
|
||||
from rapids.models import Exam as RapidsExam
|
||||
from rapids.models import Rapid
|
||||
@@ -65,7 +66,7 @@ from rapids.views import GenericExamViews as RapidsExamsViews
|
||||
from longs.views import GenericExamViews as LongsExamViews
|
||||
|
||||
from generic.forms import QuestionNoteForm
|
||||
from generic.models import CidUser, ExamCollection, QuestionNote, Supervisor, UserGrades, UserProfile
|
||||
from generic.models import CidUser, CimarCase, ExamCollection, QuestionNote, Supervisor, UserGrades, UserProfile
|
||||
|
||||
from django_filters.views import FilterView
|
||||
|
||||
@@ -919,3 +920,65 @@ def request_cid_details(request):
|
||||
return HttpResponse(
|
||||
f"Candidate details will be sent to the requested email (if it is found in the system). If you have not received an email after a few minutes you may need to contact <a href='mailto:{settings.CONTACT_EMAIL}'>{settings.CONTACT_EMAIL}</a>"
|
||||
)
|
||||
|
||||
|
||||
def cimar_study_dicom_json(request, uuid="c9417b53-87aa-4c40-aca0-3fa34c225536"):
|
||||
with CimarAPI(request.user.userprofile.cimar_sid) as api:
|
||||
print(api.sid)
|
||||
#studies = api.list_studies()
|
||||
#test_study = studies["studies"][0]
|
||||
|
||||
#schema = api.get_study_schema(test_study)
|
||||
|
||||
schema = api.get_study_schema_by_uuid("c9417b53-87aa-4c40-aca0-3fa34c225536")
|
||||
|
||||
return JsonResponse(api.get_study_dicom_json(schema))
|
||||
|
||||
def cimar_study_viewer(request, uuid="c9417b53-87aa-4c40-aca0-3fa34c225536"):
|
||||
|
||||
case = get_object_or_404(CimarCase, uuid=uuid)
|
||||
|
||||
viewer_link = case.viewer_link + f"?sid={request.user.userprofile.cimar_sid}"
|
||||
return render(request, "cimar_embed.html", {"viewer_link": viewer_link})
|
||||
|
||||
def cimar_study_viewer_embed(request, uuid="c9417b53-87aa-4c40-aca0-3fa34c225536"):
|
||||
|
||||
case = get_object_or_404(CimarCase, uuid=uuid)
|
||||
|
||||
viewer_link = case.viewer_link + f"?sid={request.user.userprofile.cimar_sid}"
|
||||
return render(request, "cimar_embed.html#embed", {"viewer_link": viewer_link})
|
||||
|
||||
def cimar_study_series_block(request, uuid):
|
||||
|
||||
case = get_object_or_404(CimarCase, uuid=uuid)
|
||||
|
||||
return render(request, "cimar_series.html", {"series_data": case.series_data["series"], "cimar_sid": request.user.userprofile.cimar_sid})
|
||||
|
||||
def cimar_login(request):
|
||||
|
||||
if request.htmx:
|
||||
username = request.POST.get("username")
|
||||
password = request.POST.get("password")
|
||||
|
||||
|
||||
|
||||
if not username and not password:
|
||||
return HttpResponse("Please fill in login details")
|
||||
|
||||
try:
|
||||
sid = CimarAPI().login(username, password)
|
||||
|
||||
request.user.userprofile.cimar_sid = sid
|
||||
request.user.userprofile.save()
|
||||
except InvalidCredentials:
|
||||
return HttpResponse("Invalid login details")
|
||||
|
||||
|
||||
return HttpResponse("Logged in")
|
||||
|
||||
else:
|
||||
try:
|
||||
login_status = CimarAPI(request.user.userprofile.cimar_sid).check_login_status()
|
||||
except NoSession:
|
||||
login_status = False
|
||||
return render(request, "cimar_login.html", {"login_status": login_status, "cimar_sid": request.user.userprofile.cimar_sid})
|
||||
Reference in New Issue
Block a user