232 lines
5.8 KiB
Python
232 lines
5.8 KiB
Python
from django.conf import settings
|
|
from django.utils import timezone
|
|
import pytest
|
|
from django.test import Client
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from generic.tests.conftest import create_modality, create_examination, create_plane, create_contrast, create_user
|
|
|
|
from atlas.models import (
|
|
Case,
|
|
Finding,
|
|
Condition,
|
|
ConditionRelationship,
|
|
Presentation,
|
|
Subspecialty,
|
|
PathologicalProcess,
|
|
Differential,
|
|
Structure,
|
|
Series,
|
|
SeriesImage,
|
|
SeriesFinding,
|
|
CaseCollection,
|
|
SeriesDetail,
|
|
CaseDetail,
|
|
BaseReportAnswer,
|
|
CidReportAnswer,
|
|
UserReportAnswer,
|
|
SelfReview,
|
|
UncategorisedDicom,
|
|
DuplicateDicom,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def create_finding():
|
|
return Finding.objects.create(name="Test Finding")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_condition():
|
|
return Condition.objects.create(name="Test Condition")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_condition_relationship(create_condition):
|
|
return ConditionRelationship.objects.create(
|
|
child=create_condition, parent=create_condition
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def create_presentation():
|
|
return Presentation.objects.create(name="Test Presentation")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_subspecialty():
|
|
return Subspecialty.objects.create(name="Test Subspecialty")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_pathological_process():
|
|
return PathologicalProcess.objects.create(name="Test Pathological Process")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_differential(create_condition, create_case):
|
|
return Differential.objects.create(condition=create_condition, case=create_case)
|
|
|
|
|
|
@pytest.fixture
|
|
def create_structure():
|
|
return Structure.objects.create(name="Test Structure")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_case(
|
|
create_subspecialty,
|
|
create_condition,
|
|
create_presentation,
|
|
create_pathological_process,
|
|
):
|
|
subspecialty = create_subspecialty
|
|
condition = create_condition
|
|
presentation = create_presentation
|
|
pathological_process = create_pathological_process
|
|
user = get_user_model().objects.create(
|
|
username="Test User", password="Test Password", email="testuser@example.com"
|
|
)
|
|
|
|
case = Case.objects.create(
|
|
title="Sample Case",
|
|
description="Sample description",
|
|
history="Sample history",
|
|
discussion="Sample discussion",
|
|
report="Sample report",
|
|
diagnostic_certainty=Case.CertaintyChoices.LIKELY,
|
|
verified=True,
|
|
created_date=timezone.now(),
|
|
published_date=timezone.now(),
|
|
archive=False,
|
|
open_access=True,
|
|
)
|
|
|
|
case.subspecialty.add(subspecialty)
|
|
case.condition.add(condition)
|
|
case.presentation.add(presentation)
|
|
case.pathological_process.add(pathological_process)
|
|
case.author.add(user)
|
|
|
|
return case
|
|
|
|
@pytest.fixture
|
|
def make_case(create_subspecialty, create_condition, create_presentation, create_pathological_process):
|
|
def _make_case(
|
|
title="Sample Case",
|
|
description="Sample description",
|
|
history="Sample history",
|
|
discussion="Sample discussion",
|
|
report="Sample report",
|
|
diagnostic_certainty=Case.CertaintyChoices.LIKELY,
|
|
verified=True,
|
|
created_date=timezone.now(),
|
|
published_date=timezone.now(),
|
|
archive=False,
|
|
open_access=True,
|
|
):
|
|
subspecialty = create_subspecialty
|
|
condition = create_condition
|
|
presentation = create_presentation
|
|
pathological_process = create_pathological_process
|
|
user, _ = get_user_model().objects.get_or_create(
|
|
username="Test User 2", password="Test Password", email="test@emai.com")
|
|
|
|
case = Case.objects.create(
|
|
title=title,
|
|
description=description,
|
|
history=history,
|
|
discussion=discussion,
|
|
report=report,
|
|
diagnostic_certainty=diagnostic_certainty,
|
|
verified=verified,
|
|
created_date=created_date,
|
|
published_date=published_date,
|
|
archive=archive,
|
|
open_access=open_access,
|
|
)
|
|
case.subspecialty.add(subspecialty)
|
|
case.condition.add(condition)
|
|
case.presentation.add(presentation)
|
|
case.pathological_process.add(pathological_process)
|
|
case.author.add(user)
|
|
|
|
return case
|
|
return _make_case
|
|
|
|
@pytest.fixture
|
|
def create_series(create_modality, create_examination, create_plane, create_contrast, create_user):
|
|
author=create_user
|
|
series_instance_uid="1234567890"
|
|
modality = create_modality
|
|
examination = create_examination
|
|
plane = create_plane
|
|
contrast = create_contrast
|
|
|
|
series = Series.objects.create(
|
|
modality=modality,
|
|
examination=examination,
|
|
plane=plane,
|
|
contrast=contrast,
|
|
series_instance_uid=series_instance_uid
|
|
)
|
|
|
|
series.author.add(author)
|
|
|
|
return series
|
|
|
|
|
|
@pytest.fixture
|
|
def create_series_image():
|
|
return SeriesImage.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_series_finding():
|
|
return SeriesFinding.objects.create(description="Test Description")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_case_collection():
|
|
return CaseCollection.objects.create(name="Test Collection")
|
|
|
|
|
|
@pytest.fixture
|
|
def create_series_detail():
|
|
return SeriesDetail.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_case_detail():
|
|
return CaseDetail.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_base_report_answer():
|
|
return BaseReportAnswer.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_cid_report_answer():
|
|
return CidReportAnswer.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_user_report_answer():
|
|
return UserReportAnswer.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_self_review():
|
|
return SelfReview.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_uncategorised_dicom():
|
|
return UncategorisedDicom.objects.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def create_duplicate_dicom():
|
|
return DuplicateDicom()
|