未知(继上次中断)
This commit is contained in:
@@ -2,11 +2,14 @@ import uuid
|
||||
from datetime import date, timedelta
|
||||
from typing import Sequence
|
||||
|
||||
from sqlalchemy import select, update as sa_update
|
||||
from sqlalchemy import delete as sa_delete, select, update as sa_update
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.crud import visit as visit_crud
|
||||
from app.models.ae import AdverseEvent
|
||||
from app.models.finance import FinanceItem
|
||||
from app.models.study import Study
|
||||
from app.models.subject_history import SubjectHistory
|
||||
from app.models.visit import Visit
|
||||
from app.models.site import Site
|
||||
from app.models.subject import Subject
|
||||
@@ -60,8 +63,13 @@ async def list_subjects(
|
||||
db: AsyncSession,
|
||||
study_id: uuid.UUID,
|
||||
site_id: uuid.UUID | None = None,
|
||||
site_ids: set[uuid.UUID] | None = None,
|
||||
) -> Sequence[Subject]:
|
||||
stmt = select(Subject).where(Subject.study_id == study_id)
|
||||
if site_ids is not None:
|
||||
if not site_ids:
|
||||
return []
|
||||
stmt = stmt.where(Subject.site_id.in_(site_ids))
|
||||
if site_id:
|
||||
stmt = stmt.where(Subject.site_id == site_id)
|
||||
result = await db.execute(stmt)
|
||||
@@ -125,5 +133,10 @@ async def update_subject(db: AsyncSession, subject: Subject, subject_in: Subject
|
||||
|
||||
|
||||
async def delete_subject(db: AsyncSession, subject: Subject) -> None:
|
||||
subject_id = subject.id
|
||||
await db.execute(sa_delete(Visit).where(Visit.subject_id == subject_id))
|
||||
await db.execute(sa_delete(SubjectHistory).where(SubjectHistory.subject_id == subject_id))
|
||||
await db.execute(sa_delete(AdverseEvent).where(AdverseEvent.subject_id == subject_id))
|
||||
await db.execute(sa_delete(FinanceItem).where(FinanceItem.subject_id == subject_id))
|
||||
await db.delete(subject)
|
||||
await db.commit()
|
||||
|
||||
Reference in New Issue
Block a user