From f19faf1a1ac9d71050a9ba91197814acf0d2a9ff Mon Sep 17 00:00:00 2001 From: Cheng Zhou Date: Tue, 16 Dec 2025 17:55:53 +0800 Subject: [PATCH] =?UTF-8?q?Step=207=EF=BC=9AAE=20+=20=E9=A3=8E=E9=99=A9/?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=AE=A1=E7=90=86=EF=BC=88PV=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/aes.py | 164 ++++++++++++++++++++++++ backend/app/api/v1/issues.py | 156 ++++++++++++++++++++++ backend/app/api/v1/router.py | 4 +- backend/app/crud/ae.py | 113 ++++++++++++++++ backend/app/crud/issue.py | 99 ++++++++++++++ backend/app/db/base.py | 2 + backend/app/models/ae.py | 35 +++++ backend/app/models/issue.py | 31 +++++ backend/app/schemas/ae.py | 55 ++++++++ backend/app/schemas/issue.py | 49 +++++++ pg_data/base/16384/1247 | Bin 122880 -> 122880 bytes pg_data/base/16384/1249 | Bin 507904 -> 516096 bytes pg_data/base/16384/1259 | Bin 122880 -> 122880 bytes pg_data/base/16384/24783 | Bin 0 -> 8192 bytes pg_data/base/16384/24788 | 0 pg_data/base/16384/24789 | Bin 0 -> 8192 bytes pg_data/base/16384/24790 | Bin 0 -> 16384 bytes pg_data/base/16384/24812 | Bin 0 -> 16384 bytes pg_data/base/16384/24813 | Bin 0 -> 16384 bytes pg_data/base/16384/24814 | Bin 0 -> 16384 bytes pg_data/base/16384/24815 | Bin 0 -> 8192 bytes pg_data/base/16384/24820 | 0 pg_data/base/16384/24821 | Bin 0 -> 8192 bytes pg_data/base/16384/24822 | Bin 0 -> 16384 bytes pg_data/base/16384/24849 | Bin 0 -> 16384 bytes pg_data/base/16384/24850 | Bin 0 -> 16384 bytes pg_data/base/16384/24851 | Bin 0 -> 16384 bytes pg_data/base/16384/2579 | Bin 16384 -> 16384 bytes pg_data/base/16384/2604 | Bin 8192 -> 8192 bytes pg_data/base/16384/2606 | Bin 32768 -> 32768 bytes pg_data/base/16384/2608 | Bin 131072 -> 139264 bytes pg_data/base/16384/2610 | Bin 40960 -> 40960 bytes pg_data/base/16384/2619 | Bin 163840 -> 172032 bytes pg_data/base/16384/2619_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/2620 | Bin 16384 -> 24576 bytes pg_data/base/16384/2620_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/2656 | Bin 16384 -> 16384 bytes pg_data/base/16384/2657 | Bin 16384 -> 16384 bytes pg_data/base/16384/2658 | Bin 131072 -> 139264 bytes pg_data/base/16384/2659 | Bin 90112 -> 98304 bytes pg_data/base/16384/2662 | Bin 32768 -> 32768 bytes pg_data/base/16384/2663 | Bin 40960 -> 40960 bytes pg_data/base/16384/2664 | Bin 16384 -> 16384 bytes pg_data/base/16384/2665 | Bin 16384 -> 16384 bytes pg_data/base/16384/2666 | Bin 16384 -> 16384 bytes pg_data/base/16384/2667 | Bin 16384 -> 16384 bytes pg_data/base/16384/2673 | Bin 106496 -> 106496 bytes pg_data/base/16384/2674 | Bin 73728 -> 73728 bytes pg_data/base/16384/2678 | Bin 16384 -> 16384 bytes pg_data/base/16384/2679 | Bin 16384 -> 16384 bytes pg_data/base/16384/2696 | Bin 32768 -> 32768 bytes pg_data/base/16384/2699 | Bin 16384 -> 16384 bytes pg_data/base/16384/2701 | Bin 16384 -> 16384 bytes pg_data/base/16384/2702 | Bin 16384 -> 16384 bytes pg_data/base/16384/2703 | Bin 32768 -> 32768 bytes pg_data/base/16384/2704 | Bin 49152 -> 49152 bytes pg_data/base/16384/2840 | Bin 24576 -> 24576 bytes pg_data/base/16384/2841 | Bin 16384 -> 16384 bytes pg_data/base/16384/3455 | Bin 16384 -> 16384 bytes pg_data/base/16384/pg_internal.init | Bin 160044 -> 160044 bytes pg_data/global/pg_control | Bin 8192 -> 8192 bytes pg_data/pg_wal/000000010000000000000001 | Bin 16777216 -> 16777216 bytes pg_data/pg_xact/0000 | Bin 8192 -> 8192 bytes 63 files changed, 707 insertions(+), 1 deletion(-) create mode 100644 backend/app/api/v1/aes.py create mode 100644 backend/app/api/v1/issues.py create mode 100644 backend/app/crud/ae.py create mode 100644 backend/app/crud/issue.py create mode 100644 backend/app/models/ae.py create mode 100644 backend/app/models/issue.py create mode 100644 backend/app/schemas/ae.py create mode 100644 backend/app/schemas/issue.py create mode 100644 pg_data/base/16384/24783 create mode 100644 pg_data/base/16384/24788 create mode 100644 pg_data/base/16384/24789 create mode 100644 pg_data/base/16384/24790 create mode 100644 pg_data/base/16384/24812 create mode 100644 pg_data/base/16384/24813 create mode 100644 pg_data/base/16384/24814 create mode 100644 pg_data/base/16384/24815 create mode 100644 pg_data/base/16384/24820 create mode 100644 pg_data/base/16384/24821 create mode 100644 pg_data/base/16384/24822 create mode 100644 pg_data/base/16384/24849 create mode 100644 pg_data/base/16384/24850 create mode 100644 pg_data/base/16384/24851 diff --git a/backend/app/api/v1/aes.py b/backend/app/api/v1/aes.py new file mode 100644 index 00000000..9a112b88 --- /dev/null +++ b/backend/app/api/v1/aes.py @@ -0,0 +1,164 @@ +import uuid +from datetime import date + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.ext.asyncio import AsyncSession + +from app.core.deps import get_current_user, get_db_session, require_study_member +from app.crud import ae as ae_crud +from app.crud import audit as audit_crud +from app.crud import member as member_crud +from app.crud import study as study_crud +from app.schemas.ae import AECreate, AERead, AEUpdate + +router = APIRouter() + +ALLOWED_CREATE_ROLES = {"PM", "CRA", "PV"} +ALLOWED_UPDATE_ROLES = {"PM", "PV"} + + +async def _ensure_study_exists(db: AsyncSession, study_id: uuid.UUID): + study = await study_crud.get(db, study_id) + if not study: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Study not found") + return study + + +async def _get_member_role(db: AsyncSession, study_id: uuid.UUID, user_id: uuid.UUID) -> str | None: + member = await member_crud.get_member(db, study_id, user_id) + return member.role_in_study if member else None + + +def _is_overdue(ae: AERead) -> bool: + return bool(ae.report_due_date and date.today() > ae.report_due_date and ae.status != "CLOSED") + + +@router.post( + "/", + response_model=AERead, + status_code=status.HTTP_201_CREATED, + dependencies=[Depends(require_study_member())], +) +async def create_ae( + study_id: uuid.UUID, + ae_in: AECreate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> AERead: + await _ensure_study_exists(db, study_id) + member_role = await _get_member_role(db, study_id, current_user.id) + if current_user.role != "ADMIN" and member_role not in ALLOWED_CREATE_ROLES: + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Insufficient permissions") + try: + ae = await ae_crud.create_ae(db, study_id, ae_in, created_by=current_user.id) + except ValueError as exc: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="ae", + entity_id=ae.id, + action="CREATE_AE", + detail=f"AE {ae.id} created", + operator_id=current_user.id, + operator_role=current_user.role, + ) + data = AERead.model_validate(ae) + data.is_overdue = _is_overdue(data) + return data + + +@router.get( + "/", + response_model=list[AERead], + dependencies=[Depends(require_study_member())], +) +async def list_ae( + study_id: uuid.UUID, + status_filter: str | None = None, + seriousness: str | None = None, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + overdue: bool | None = None, + db: AsyncSession = Depends(get_db_session), +) -> list[AERead]: + await _ensure_study_exists(db, study_id) + aes = await ae_crud.list_ae(db, study_id, status=status_filter, seriousness=seriousness, site_id=site_id, subject_id=subject_id, overdue=overdue) + result: list[AERead] = [] + for item in aes: + obj = AERead.model_validate(item) + obj.is_overdue = _is_overdue(obj) + result.append(obj) + return result + + +@router.get( + "/{ae_id}", + response_model=AERead, + dependencies=[Depends(require_study_member())], +) +async def get_ae( + study_id: uuid.UUID, + ae_id: uuid.UUID, + db: AsyncSession = Depends(get_db_session), +) -> AERead: + await _ensure_study_exists(db, study_id) + ae = await ae_crud.get_ae(db, ae_id) + if not ae or ae.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="AE not found") + data = AERead.model_validate(ae) + data.is_overdue = _is_overdue(data) + return data + + +@router.patch( + "/{ae_id}", + response_model=AERead, + dependencies=[Depends(require_study_member())], +) +async def update_ae( + study_id: uuid.UUID, + ae_id: uuid.UUID, + ae_in: AEUpdate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> AERead: + await _ensure_study_exists(db, study_id) + ae = await ae_crud.get_ae(db, ae_id) + if not ae or ae.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="AE not found") + + member_role = await _get_member_role(db, study_id, current_user.id) + if current_user.role == "ADMIN": + pass + elif member_role in ALLOWED_UPDATE_ROLES: + pass + elif member_role == "CRA": + if ae.created_by != current_user.id: + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Only creator can update AE") + if ae_in.status == "CLOSED": + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="CRA cannot close AE") + else: + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Insufficient permissions") + + old_status = ae.status + updated = await ae_crud.update_ae(db, ae, ae_in) + + detail = None + action = "UPDATE_AE" + if ae_in.status and ae_in.status != old_status: + detail = f"AE {ae_id} status {old_status} -> {ae_in.status}" + action = "AE_STATUS_CHANGE" + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="ae", + entity_id=ae_id, + action=action, + detail=detail or "AE updated", + operator_id=current_user.id, + operator_role=current_user.role, + ) + data = AERead.model_validate(updated) + data.is_overdue = _is_overdue(data) + return data diff --git a/backend/app/api/v1/issues.py b/backend/app/api/v1/issues.py new file mode 100644 index 00000000..677171fd --- /dev/null +++ b/backend/app/api/v1/issues.py @@ -0,0 +1,156 @@ +import uuid +from datetime import date + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.ext.asyncio import AsyncSession + +from app.core.deps import get_current_user, get_db_session, require_study_member +from app.crud import audit as audit_crud +from app.crud import issue as issue_crud +from app.crud import member as member_crud +from app.crud import study as study_crud +from app.schemas.issue import IssueCreate, IssueRead, IssueUpdate + +router = APIRouter() + +ALLOWED_EDIT_ROLES = {"PM", "PV"} + + +async def _ensure_study_exists(db: AsyncSession, study_id: uuid.UUID): + study = await study_crud.get(db, study_id) + if not study: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Study not found") + return study + + +async def _get_member_role(db: AsyncSession, study_id: uuid.UUID, user_id: uuid.UUID) -> str | None: + member = await member_crud.get_member(db, study_id, user_id) + return member.role_in_study if member else None + + +def _is_overdue(issue: IssueRead) -> bool: + return bool(issue.due_date and date.today() > issue.due_date and issue.status != "CLOSED") + + +@router.post( + "/", + response_model=IssueRead, + status_code=status.HTTP_201_CREATED, + dependencies=[Depends(require_study_member())], +) +async def create_issue( + study_id: uuid.UUID, + issue_in: IssueCreate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> IssueRead: + await _ensure_study_exists(db, study_id) + member_role = await _get_member_role(db, study_id, current_user.id) + if current_user.role != "ADMIN" and member_role not in ALLOWED_EDIT_ROLES: + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Insufficient permissions") + try: + issue = await issue_crud.create_issue(db, study_id, issue_in, created_by=current_user.id) + except ValueError as exc: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="issue", + entity_id=issue.id, + action="CREATE_ISSUE", + detail=f"Issue {issue.id} created", + operator_id=current_user.id, + operator_role=current_user.role, + ) + data = IssueRead.model_validate(issue) + data.is_overdue = _is_overdue(data) + return data + + +@router.get( + "/", + response_model=list[IssueRead], + dependencies=[Depends(require_study_member())], +) +async def list_issues( + study_id: uuid.UUID, + status_filter: str | None = None, + level: str | None = None, + category: str | None = None, + overdue: bool | None = None, + db: AsyncSession = Depends(get_db_session), +) -> list[IssueRead]: + await _ensure_study_exists(db, study_id) + issues = await issue_crud.list_issues(db, study_id, status=status_filter, level=level, category=category, overdue=overdue) + result: list[IssueRead] = [] + for item in issues: + obj = IssueRead.model_validate(item) + obj.is_overdue = _is_overdue(obj) + result.append(obj) + return result + + +@router.get( + "/{issue_id}", + response_model=IssueRead, + dependencies=[Depends(require_study_member())], +) +async def get_issue( + study_id: uuid.UUID, + issue_id: uuid.UUID, + db: AsyncSession = Depends(get_db_session), +) -> IssueRead: + await _ensure_study_exists(db, study_id) + issue = await issue_crud.get_issue(db, issue_id) + if not issue or issue.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Issue not found") + data = IssueRead.model_validate(issue) + data.is_overdue = _is_overdue(data) + return data + + +@router.patch( + "/{issue_id}", + response_model=IssueRead, + dependencies=[Depends(require_study_member())], +) +async def update_issue( + study_id: uuid.UUID, + issue_id: uuid.UUID, + issue_in: IssueUpdate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> IssueRead: + await _ensure_study_exists(db, study_id) + issue = await issue_crud.get_issue(db, issue_id) + if not issue or issue.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Issue not found") + + member_role = await _get_member_role(db, study_id, current_user.id) + if current_user.role != "ADMIN" and member_role not in ALLOWED_EDIT_ROLES: + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Insufficient permissions") + + old_status = issue.status + old_level = issue.level + updated = await issue_crud.update_issue(db, issue, issue_in) + + detail = None + action = "UPDATE_ISSUE" + if issue_in.status and issue_in.status != old_status: + detail = f"Issue {issue_id} status {old_status} -> {issue_in.status}" + action = "ISSUE_STATUS_CHANGE" + elif issue_in.level and issue_in.level != old_level: + detail = f"Issue {issue_id} level {old_level} -> {issue_in.level}" + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="issue", + entity_id=issue_id, + action=action, + detail=detail or "Issue updated", + operator_id=current_user.id, + operator_role=current_user.role, + ) + data = IssueRead.model_validate(updated) + data.is_overdue = _is_overdue(data) + return data diff --git a/backend/app/api/v1/router.py b/backend/app/api/v1/router.py index 3f31c27b..e5174483 100644 --- a/backend/app/api/v1/router.py +++ b/backend/app/api/v1/router.py @@ -1,6 +1,6 @@ from fastapi import APIRouter -from app.api.v1 import auth, users, studies, sites, members, comments, attachments, audit_logs, milestones, tasks, dashboard, subjects, visits +from app.api.v1 import auth, users, studies, sites, members, comments, attachments, audit_logs, milestones, tasks, dashboard, subjects, visits, aes, issues api_router = APIRouter() api_router.include_router(auth.router, prefix="/auth", tags=["auth"]) @@ -16,3 +16,5 @@ api_router.include_router(tasks.router, prefix="/studies/{study_id}/tasks", tags api_router.include_router(dashboard.router, prefix="/studies/{study_id}/dashboard", tags=["dashboard"]) api_router.include_router(subjects.router, prefix="/studies/{study_id}/subjects", tags=["subjects"]) api_router.include_router(visits.router, prefix="/studies/{study_id}/subjects/{subject_id}/visits", tags=["visits"]) +api_router.include_router(aes.router, prefix="/studies/{study_id}/aes", tags=["aes"]) +api_router.include_router(issues.router, prefix="/studies/{study_id}/issues", tags=["issues"]) diff --git a/backend/app/crud/ae.py b/backend/app/crud/ae.py new file mode 100644 index 00000000..ca4a1433 --- /dev/null +++ b/backend/app/crud/ae.py @@ -0,0 +1,113 @@ +import uuid +from datetime import date, timedelta +from typing import Sequence + +from sqlalchemy import select, update as sa_update +from sqlalchemy.ext.asyncio import AsyncSession + +from app.models.ae import AdverseEvent +from app.models.site import Site +from app.models.subject import Subject +from app.schemas.ae import AECreate, AEUpdate + + +def _calc_due_date(onset: date | None, seriousness: str) -> date | None: + if onset is None: + return None + delta = 1 if seriousness == "SERIOUS" else 7 + return onset + timedelta(days=delta) + + +async def _validate_site_subject(db: AsyncSession, study_id: uuid.UUID, site_id: uuid.UUID | None, subject_id: uuid.UUID | None): + if site_id: + result = await db.execute(select(Site).where(Site.id == site_id)) + site = result.scalar_one_or_none() + if not site or site.study_id != study_id: + raise ValueError("Site not found in study") + if subject_id: + result = await db.execute(select(Subject).where(Subject.id == subject_id)) + subj = result.scalar_one_or_none() + if not subj or subj.study_id != study_id: + raise ValueError("Subject not found in study") + + +async def create_ae( + db: AsyncSession, + study_id: uuid.UUID, + ae_in: AECreate, + *, + created_by: uuid.UUID, +) -> AdverseEvent: + await _validate_site_subject(db, study_id, ae_in.site_id, ae_in.subject_id) + due_date = _calc_due_date(ae_in.onset_date, ae_in.seriousness) + ae = AdverseEvent( + study_id=study_id, + site_id=ae_in.site_id, + subject_id=ae_in.subject_id, + visit_id=ae_in.visit_id, + term=ae_in.term, + onset_date=ae_in.onset_date, + resolution_date=None, + seriousness=ae_in.seriousness, + severity=ae_in.severity, + causality=ae_in.causality, + action_taken=None, + outcome=None, + reported_to_sponsor=False, + report_due_date=due_date, + status="NEW", + description=ae_in.description, + created_by=created_by, + ) + db.add(ae) + await db.commit() + await db.refresh(ae) + return ae + + +async def get_ae(db: AsyncSession, ae_id: uuid.UUID) -> AdverseEvent | None: + result = await db.execute(select(AdverseEvent).where(AdverseEvent.id == ae_id)) + return result.scalar_one_or_none() + + +async def list_ae( + db: AsyncSession, + study_id: uuid.UUID, + status: str | None = None, + seriousness: str | None = None, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + overdue: bool | None = None, +) -> Sequence[AdverseEvent]: + stmt = select(AdverseEvent).where(AdverseEvent.study_id == study_id) + if status: + stmt = stmt.where(AdverseEvent.status == status) + if seriousness: + stmt = stmt.where(AdverseEvent.seriousness == seriousness) + if site_id: + stmt = stmt.where(AdverseEvent.site_id == site_id) + if subject_id: + stmt = stmt.where(AdverseEvent.subject_id == subject_id) + if overdue is True: + stmt = stmt.where(AdverseEvent.report_due_date < date.today(), AdverseEvent.status != "CLOSED") + if overdue is False: + stmt = stmt.where((AdverseEvent.report_due_date >= date.today()) | (AdverseEvent.report_due_date.is_(None)) | (AdverseEvent.status == "CLOSED")) + result = await db.execute(stmt) + return result.scalars().all() + + +async def update_ae(db: AsyncSession, ae: AdverseEvent, ae_in: AEUpdate) -> AdverseEvent: + update_data = ae_in.model_dump(exclude_unset=True) + if "onset_date" in update_data or "seriousness" in update_data: + onset = update_data.get("onset_date", ae.onset_date) + seriousness = update_data.get("seriousness", ae.seriousness) + update_data["report_due_date"] = _calc_due_date(onset, seriousness) + if update_data: + await db.execute( + sa_update(AdverseEvent) + .where(AdverseEvent.id == ae.id) + .values(**update_data) + ) + await db.commit() + await db.refresh(ae) + return ae diff --git a/backend/app/crud/issue.py b/backend/app/crud/issue.py new file mode 100644 index 00000000..fdbc1d48 --- /dev/null +++ b/backend/app/crud/issue.py @@ -0,0 +1,99 @@ +import uuid +from datetime import date, datetime, timezone +from typing import Sequence + +from sqlalchemy import select, update as sa_update +from sqlalchemy.ext.asyncio import AsyncSession + +from app.models.issue import Issue +from app.models.site import Site +from app.models.subject import Subject +from app.schemas.issue import IssueCreate, IssueUpdate + + +async def _validate_site_subject(db: AsyncSession, study_id: uuid.UUID, site_id: uuid.UUID | None, subject_id: uuid.UUID | None): + if site_id: + result = await db.execute(select(Site).where(Site.id == site_id)) + site = result.scalar_one_or_none() + if not site or site.study_id != study_id: + raise ValueError("Site not found in study") + if subject_id: + result = await db.execute(select(Subject).where(Subject.id == subject_id)) + subj = result.scalar_one_or_none() + if not subj or subj.study_id != study_id: + raise ValueError("Subject not found in study") + + +async def create_issue( + db: AsyncSession, + study_id: uuid.UUID, + issue_in: IssueCreate, + *, + created_by: uuid.UUID, +) -> Issue: + await _validate_site_subject(db, study_id, issue_in.site_id, issue_in.subject_id) + issue = Issue( + study_id=study_id, + site_id=issue_in.site_id, + subject_id=issue_in.subject_id, + title=issue_in.title, + description=issue_in.description, + category=issue_in.category, + level=issue_in.level, + owner_id=issue_in.owner_id, + due_date=issue_in.due_date, + status="OPEN", + capa=None, + closed_at=None, + created_by=created_by, + ) + db.add(issue) + await db.commit() + await db.refresh(issue) + return issue + + +async def get_issue(db: AsyncSession, issue_id: uuid.UUID) -> Issue | None: + result = await db.execute(select(Issue).where(Issue.id == issue_id)) + return result.scalar_one_or_none() + + +async def list_issues( + db: AsyncSession, + study_id: uuid.UUID, + status: str | None = None, + level: str | None = None, + category: str | None = None, + overdue: bool | None = None, +) -> Sequence[Issue]: + stmt = select(Issue).where(Issue.study_id == study_id) + if status: + stmt = stmt.where(Issue.status == status) + if level: + stmt = stmt.where(Issue.level == level) + if category: + stmt = stmt.where(Issue.category == category) + if overdue is True: + stmt = stmt.where(Issue.due_date < date.today(), Issue.status != "CLOSED") + if overdue is False: + stmt = stmt.where((Issue.due_date >= date.today()) | (Issue.due_date.is_(None)) | (Issue.status == "CLOSED")) + result = await db.execute(stmt) + return result.scalars().all() + + +async def update_issue(db: AsyncSession, issue: Issue, issue_in: IssueUpdate) -> Issue: + update_data = issue_in.model_dump(exclude_unset=True) + if "status" in update_data: + if update_data["status"] == "CLOSED": + update_data["closed_at"] = datetime.now(timezone.utc) + else: + update_data["closed_at"] = None + if update_data: + await db.execute( + sa_update(Issue) + .where(Issue.id == issue.id) + .values(**update_data) + ) + await db.commit() + await db.refresh(issue) + return issue diff --git a/backend/app/db/base.py b/backend/app/db/base.py index 6cafdf6c..a1aeb9dd 100644 --- a/backend/app/db/base.py +++ b/backend/app/db/base.py @@ -12,3 +12,5 @@ from app.models.milestone import Milestone # noqa: F401 from app.models.task import Task # noqa: F401 from app.models.subject import Subject # noqa: F401 from app.models.visit import Visit # noqa: F401 +from app.models.ae import AdverseEvent # noqa: F401 +from app.models.issue import Issue # noqa: F401 diff --git a/backend/app/models/ae.py b/backend/app/models/ae.py new file mode 100644 index 00000000..b4a04f34 --- /dev/null +++ b/backend/app/models/ae.py @@ -0,0 +1,35 @@ +import uuid +from datetime import datetime, date + +from sqlalchemy import Boolean, Date, DateTime, ForeignKey, String, Text, func +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import Mapped, mapped_column + +from app.db.base_class import Base + + +class AdverseEvent(Base): + __tablename__ = "adverse_events" + + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + study_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("studies.id"), index=True, nullable=False) + site_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("sites.id"), index=True, nullable=True) + subject_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("subjects.id"), index=True, nullable=True) + visit_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), nullable=True) + term: Mapped[str] = mapped_column(String(255), nullable=False) + onset_date: Mapped[date | None] = mapped_column(Date, nullable=True) + resolution_date: Mapped[date | None] = mapped_column(Date, nullable=True) + seriousness: Mapped[str] = mapped_column(String(50), nullable=False) + severity: Mapped[str] = mapped_column(String(50), nullable=False) + causality: Mapped[str | None] = mapped_column(String(50), nullable=True) + action_taken: Mapped[str | None] = mapped_column(Text, nullable=True) + outcome: Mapped[str | None] = mapped_column(String(50), nullable=True) + reported_to_sponsor: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) + report_due_date: Mapped[date | None] = mapped_column(Date, nullable=True) + status: Mapped[str] = mapped_column(String(20), nullable=False, default="NEW") + description: Mapped[str | None] = mapped_column(Text, nullable=True) + created_by: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now() + ) diff --git a/backend/app/models/issue.py b/backend/app/models/issue.py new file mode 100644 index 00000000..33136c80 --- /dev/null +++ b/backend/app/models/issue.py @@ -0,0 +1,31 @@ +import uuid +from datetime import datetime, date + +from sqlalchemy import Date, DateTime, ForeignKey, String, Text, func +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import Mapped, mapped_column + +from app.db.base_class import Base + + +class Issue(Base): + __tablename__ = "issues" + + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + study_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("studies.id"), index=True, nullable=False) + site_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("sites.id"), index=True, nullable=True) + subject_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("subjects.id"), index=True, nullable=True) + title: Mapped[str] = mapped_column(String(255), nullable=False) + description: Mapped[str | None] = mapped_column(Text, nullable=True) + category: Mapped[str] = mapped_column(String(50), nullable=False) + level: Mapped[str] = mapped_column(String(20), nullable=False) + owner_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) + due_date: Mapped[date | None] = mapped_column(Date, nullable=True) + status: Mapped[str] = mapped_column(String(20), nullable=False, default="OPEN") + capa: Mapped[str | None] = mapped_column(Text, nullable=True) + closed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + created_by: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now() + ) diff --git a/backend/app/schemas/ae.py b/backend/app/schemas/ae.py new file mode 100644 index 00000000..3e963fd7 --- /dev/null +++ b/backend/app/schemas/ae.py @@ -0,0 +1,55 @@ +import uuid +from datetime import date, datetime +from typing import Optional + +from pydantic import BaseModel, ConfigDict + + +class AECreate(BaseModel): + site_id: Optional[uuid.UUID] = None + subject_id: Optional[uuid.UUID] = None + visit_id: Optional[uuid.UUID] = None + term: str + onset_date: Optional[date] = None + seriousness: str + severity: str + causality: Optional[str] = None + description: Optional[str] = None + + +class AEUpdate(BaseModel): + resolution_date: Optional[date] = None + seriousness: Optional[str] = None + severity: Optional[str] = None + causality: Optional[str] = None + action_taken: Optional[str] = None + outcome: Optional[str] = None + reported_to_sponsor: Optional[bool] = None + status: Optional[str] = None + description: Optional[str] = None + + +class AERead(BaseModel): + id: uuid.UUID + study_id: uuid.UUID + site_id: Optional[uuid.UUID] + subject_id: Optional[uuid.UUID] + visit_id: Optional[uuid.UUID] + term: str + onset_date: Optional[date] + resolution_date: Optional[date] + seriousness: str + severity: str + causality: Optional[str] + action_taken: Optional[str] + outcome: Optional[str] + reported_to_sponsor: bool + report_due_date: Optional[date] + status: str + description: Optional[str] + created_by: uuid.UUID + created_at: datetime + updated_at: datetime + is_overdue: bool | None = None + + model_config = ConfigDict(from_attributes=True) diff --git a/backend/app/schemas/issue.py b/backend/app/schemas/issue.py new file mode 100644 index 00000000..bf798032 --- /dev/null +++ b/backend/app/schemas/issue.py @@ -0,0 +1,49 @@ +import uuid +from datetime import date, datetime +from typing import Optional + +from pydantic import BaseModel, ConfigDict + + +class IssueCreate(BaseModel): + title: str + category: str + level: str + due_date: Optional[date] = None + owner_id: Optional[uuid.UUID] = None + site_id: Optional[uuid.UUID] = None + subject_id: Optional[uuid.UUID] = None + description: Optional[str] = None + + +class IssueUpdate(BaseModel): + title: Optional[str] = None + category: Optional[str] = None + level: Optional[str] = None + due_date: Optional[date] = None + owner_id: Optional[uuid.UUID] = None + status: Optional[str] = None + capa: Optional[str] = None + description: Optional[str] = None + + +class IssueRead(BaseModel): + id: uuid.UUID + study_id: uuid.UUID + site_id: Optional[uuid.UUID] + subject_id: Optional[uuid.UUID] + title: str + description: Optional[str] + category: str + level: str + owner_id: Optional[uuid.UUID] + due_date: Optional[date] + status: str + capa: Optional[str] + closed_at: Optional[datetime] + created_by: uuid.UUID + created_at: datetime + updated_at: datetime + is_overdue: bool | None = None + + model_config = ConfigDict(from_attributes=True) diff --git a/pg_data/base/16384/1247 b/pg_data/base/16384/1247 index f0a3607218a60970bf93b46f431eec138367554c..18e41d62bcaaa96bfa37a99bba55856351155fc4 100644 GIT binary patch delta 399 zcmZoTz}^5vTNqgm@I!kali}gU$nGVc-JDLH64ZoMdzm0|3V%eg6Oe delta 163 wcmZoTz}^5vTNqgm@CYz3W@G?@DGWO}CknJq4h|8W_`qV|kl6MeCmB7&08~s-L;wH) diff --git a/pg_data/base/16384/1249 b/pg_data/base/16384/1249 index 7dc0cb05823f94385384f39ff70f20fac5ca55ce..bd04835854b768f387dc45f00c713bc098d23dd6 100644 GIT binary patch delta 4066 zcmaKv+fN)-9LLXLXXX@^%K{a)^ujJJw3O=t(rOAqY>W@0#hBEj(e0Mqrc`9NdqMjK zaa$iuT5(N(FP8FT`UIjBs__DUfvKsD`e51!#)szfMm#POmjiXK}V9>&YrvHLEQXWxntEqaR~LuYZvbqkt0ddJsz72;lp30ephq zYu5v~o8I#u1#lI@$Vczl?jM3Wr(cE`4WOq`!!&LUY;8Sb{{AhDrpXArxT4gAumPE* z{#Q|ZRMO5WR9o5fKU#B^0dxd4AYAI4cS$92dwC4&m#|^Y1$$D$?zmxn5*B)($&>a< z*t#3mBViYQu|{K&LS}@Af~s?;c7$O^r|L8I>=e+j3IaQEIl5d45uS+#B!m|UO00S?}MRR9^WBReaJ;U7RjXGibre7 zoxpY8T6+OrV*%3o54sGIicQ6m@V-YoK*y+ej8O*hO)c0iE~CYDjO2JclbVG4eyxuV zqd?y|vJ>9k)cl7Qn>cJ=+d#| zo4H}!OI4-tN-169ZyTDwO`&P**l!!}k@V`#FUhN(57yM`mv0(2@F$wL+-A1!C)fz6Q5tRi&D3wjewl`hXbd8; zde=q}qIrthi6U^kg0y$A3=dj5v7FcFy3CpLv9V%~6+>#j9LFrFSmLX7X*v_VXwRt` zLc7#8TSBquKL%XkNL-VJiADbrtYa4}B;@xIjFvdCpfy^zfE9pqL57J1z5tvHGEA)O z1>jteVPa7)0Ox`X6RUXvI2UA?Sh)*eyP&>FhKaSAPU?&s!^9d)Cw0TbVq4(D8?eGl z3o6&#V5e+xjxH!UHY+RfI8e>7A$C&mA ze|4zE#)Yk7uW(psAoVt<(r9yRBV_a*kv@&k*hD-<`-w?IWw7wB(sYoO zASU1KCXXa?OW*0rGKikUdyGcFE+kCZAS%J=nY>2NB+t$Nw7kTIak< z!2WviV zBUqU(=c`QRXtg*Mtci+Q7j9<(d?PDsHLVO<9Fp$g;k(;OnT}nPm!FO)dp22 z62F+`q^Q#yTkzO%LH#+1RXhIlbo9TY4K|x#ZO6XL5T_dSzduwpN*qOC$pE7B6m%ogz=s!%*#lT zOSBLh6qv}L;35;#KtR2A(Zb zMw2W9oKSY2UX&rm4JH!YoOGF2p~KHG13F UN8;jMKBVI6KTvV%p^y0ZHy_lBL;wH) delta 596 zcmZvZKS%;m9Dv_X&+bH2P=_L^yQn#rz{y;K{wxj+1`Q`kHZ(+oOM-?Fje+5tBCtsc zGH!UZ89{_bL0x|(bZ!cY2x{ne_f9nM4Ugk@AK&}#Ual(Us$xY@?eU+iCaUGZf}C~O zT9E?VD2rZ#s}<2wnY|_Z`&>>FTQfmtm`|s|+QRSQdB2)E0Aq4QcKV1c$j>%HV*7ER zauouFP&C7o1dIaXls9EO#6$S6^&${4+;5!uIvC;FY9LZn~vEl4@R~DwX=O(iBRwC z<3~`s-0f^PcW*tlvp;pr-hRRC;=R?;u6FSwko{M!H((X-s05NnvVMlhtzQjp9cJIJ aMz3+9qJ=oP43SQ+(|m^;BYwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM GyblZ@00031 literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24788 b/pg_data/base/16384/24788 new file mode 100644 index 00000000..e69de29b diff --git a/pg_data/base/16384/24789 b/pg_data/base/16384/24789 new file mode 100644 index 0000000000000000000000000000000000000000..1eb035e833165198c6ae99796f9a6af5b9e14417 GIT binary patch literal 8192 zcmeIuO$~rB3CfRsL_Fs;wHAA1&05x; zk8O_9!?5!H4u?C21PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfWV&uOMCtT DZ5sIJ~hWK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1ZE24nc=bt n5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7csf!_pPa$5zY literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24812 b/pg_data/base/16384/24812 new file mode 100644 index 0000000000000000000000000000000000000000..5d7b658bd66e2cbd4fd9ff3ada6e3860603b4621 GIT binary patch literal 16384 zcmeIuu?>JQ31Hgu~z-(&a2k^lh$1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oM-4u#60s pO@IIa0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PJ^lPyun728;jz literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24813 b/pg_data/base/16384/24813 new file mode 100644 index 0000000000000000000000000000000000000000..7c7ece35097c93f69a6610e57337939d64a526e8 GIT binary patch literal 16384 zcmeIuK@ET~3JQ3YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM GyblZ@00031 literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24820 b/pg_data/base/16384/24820 new file mode 100644 index 00000000..e69de29b diff --git a/pg_data/base/16384/24821 b/pg_data/base/16384/24821 new file mode 100644 index 0000000000000000000000000000000000000000..90263e78afa39588f70c2300e2fb577196a70c81 GIT binary patch literal 8192 zcmeIuyA6Oa3@YNEjd;-MR6T{3$LX;(V^Dwb&zT*0T0| zY;%+zhL!hsINUKLK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1pX9Q+VdA9 C_y-OE literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24822 b/pg_data/base/16384/24822 new file mode 100644 index 0000000000000000000000000000000000000000..78a5e2ea9511c6bd2adc406a8cfa4b241ffcc2a2 GIT binary patch literal 16384 zcmeIuK@ET~3t` literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24850 b/pg_data/base/16384/24850 new file mode 100644 index 0000000000000000000000000000000000000000..268a236e2a4f1df123b5af3f1a6ce78ddb17eaa5 GIT binary patch literal 16384 zcmeIuK@ET~320w`$t9AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Ct+0u`~(2E70P literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/2579 b/pg_data/base/16384/2579 index 41b6026029bd14e807313f65989c1bf3aed6bdee..78945c12e0348b84a4a299f75935e70f64d34e2f 100644 GIT binary patch delta 246 zcmZo@U~Fh$+`yv1onf+qkpT!=m>f3qD|j+#KbWS#Z~=%90PzMOUI4@sfVcsO3xGHQ zhy#GwVVc55$Nj?f%nXtY0w5EhfSEx8jW3SI7enKVqVYx0_`+y>A!NQ912cmlvH*}T PfX3%%5ZL_OOp+4->%JKF&*!->yl1#@4}3o7oUg7^U8i}bI^4dTjTn_CSp}SGU}XOy zVAIbT-8y45e#+?D38VL!fbH&>(c2?N^M{P)4j9euGg^qK{ffK6UKS8CWxjUOO?rr3 z=_{4?%m#5p35ju@gvjDF>;&sim;II;d16 zuo_+;67xMsyCj+-twDr`4DOP9DYJ%;3w#9eP6_{2E9+}~na2_us0kll5l&rM!v~S> zkmw&lLp(i=i)TXr+yHXzf~z$fUiLbYRF@dtGJ BywU&w delta 46 ycmZo@U}|V!+Q5>)lM%F-kpTz-7&L?@3nVyfZcLEp*gPRY07R^0+N@E0g9iXK9}Y(V diff --git a/pg_data/base/16384/2608 b/pg_data/base/16384/2608 index b4891f9a731f5378c57aa24d15ca0916f3dddc2c..7e21be476528b83ec1bbc6e5f3a2cc8976f429db 100644 GIT binary patch delta 4795 zcma)=*^?AS5XQ5YS!R}5=z+xrcb%0mG`to(mvcqDK?N^VylcEs!TUaX#Pih`=g9~k zmVgKYBaATQm486-zLmujMO{Te6tB$e%r?8Gd+mPMsIK^am0xDo)YMM1S!r&mG+zx$ zqvaQeHwFOkN_D6ss!qTWJ`4G82+u+ppfVGNCjm@p@FdK^akq?D$5Wu(0^y!9+~fk> z{Fn>jX#wLPtreSsz5!iaMDSEvGcXeLCB{|rWJ(je+*tw`bC?Leil@Z*yx0IdVT@Oe z@p4YWb7L-obq1VN9E8UW*HwTU5~EGSRT^>H+?qV6Ckhw|NEI$O(iK+CV`)vQ!m4>R zrQyXvE8K;zl1ozI6D0m4#`r{&aEFZjEp>d%MewizJBx$xkl{)NxZ}j=gNB>XhMDy&+n%!mUBP_s5(DyfWe_vdggAqTDc-k_Rnb4BjUL1>#}#I`0JgL42O z+-q_ROiliBEC9a=b9g$8;2s0&>XhgIfN;0r{*fT#akJxqaF^l!cBTn=0S5)VQ$QPp zn$U~EvznmX9XVW`Ot)U&Z*5vl5<4N9M`(*4l;V711 z6V@1Te*y5w7=+sl_eTNl2;puu-0v^Fk` zWRt7pW-AffdeU@YB)`6gN%Wh9Bkf+{$jNUq_UkKL1UH(1D%OCscl>~dO28XTz}*r= zIgT3TrbYi?zq%&I~-5u8s(}Sz?u*) z5s=-rmTxlWgi0<>N$MkJ2dQMGl}LEn2~^){7|Gw9(cUBIUaU)UW%p4@|r0EumXPDeRMO*Zc-47iP+nP}2X*^3$H{d5C9uLGd z@d@EH!+l(U>k{r%!+m6LBzaCN0-houn@itFRI(%`N!>_Pa1&AkvdD1n=_V(T7Rky` z!G$T1SK}{L;mi-O4wT zhF(ooGFK#Y3whJUvowB7#(wdX8#0_~*-|Um6U^AWad)t)`uu26>fW-Fe|dpH*fH>2 z?V!!OMuV4oUfUi_`R^aSCA?@2I*r{P$%)n+LoZo(hsDB`3^&c=5N|8baLh%xXqkWc sp&(N|Flz%Wl7Jn;(PgD39BuKuUyR~knrgT?;&{Y`jXqwD&mJHA7bBCNAOHXW delta 38 tcmZoTz|qja(XfS)S9I)Ab7#BKxCr8jjcvZJA}6{_`;aL4FCjh4SxUt diff --git a/pg_data/base/16384/2610 b/pg_data/base/16384/2610 index b2dae6e0331470f7b2161e3460572365824c8869..c8bb0dbe18cf85d7afd6f2ecc6a8ba645d031749 100644 GIT binary patch delta 512 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 TI6s2)LGD}3&=UFF;=q3aJGOi8 delta 842 zcmb8tzb`{k6bJBg&wG@%s){1&X(BN;CbLZ&RJDFo8jVQ}So|2Ji3kG~d5PPFG?fU8 zG@7VLH2wlV7DS?BV-%x7yu5=rV)1g5ck?;lbMJjWl9$$G(wbAfuIExn0I0AIX#rl< z3y^nvi;4@rF9EI44vH;b?$A80=Xc6)zyo~cdy1AHd4v`tFKjZtfnh!4S6Qvutm#4j zDB~t-@ooOm;x@O}wZJiJX(TQMP8m0tEVV7nx{vVtDU1n1J+;L9_E?LH*wN3qj=1=X zoy2nkJY7qy1vxv2uYPe2@$%pSJBgjRJH!{U5tl>!4Ooc}hB#LfPlfr~Rm56^v&Ce& zoW`tv8Q~wRl3G&3e1i&;^T81xveT=d@v%F`3hkinVnTn4_OcpMt+b1te0cm#u%a-E z7TZcZR*1)hoEM5bp238ixE4`kJ~xYrLfeh#5<)2iZ^c@LfvE-b$a9H~oqKU%c=29b tqj66?iltS1?q%Qj*#UYWZI{kT?9yK|o!iN?e~uG5y@<}j;S5IWKLD|BlXCz7 diff --git a/pg_data/base/16384/2619_fsm b/pg_data/base/16384/2619_fsm index 311639de268c2a34627ed17b9d7101208d44f47b..591329e4c35109d139db7194587178a63cf225f8 100644 GIT binary patch delta 85 zcmZoTz}Rqraf6J50zW?kKLZ0811UHSVuJwxL`8W?4kVCek^vA;Ga@`<%pvhL1oAUEEXf4R8uN3e0_lNQs0C z5MLk-9a36e37Gdw3MH>#cIRf-yCd8a#VI2FX7=yV&RxIH`}_QUB5)fgyAM*=cq!*H z_*sF!oHbdIx#?g$j{nVmM%%pXc3K;QQ8^mA>CEvKV|nrU9v$)}&6klk2>*e6UGm4A z@QUhw7Wo?CUqqvW=#dk+on}*(xbFD;gY2y78KiYWKO3|msplfqhgP&EX=al7Q`B=s z=0;a#J`lB%;sc#EKaHJN3IB+^qcU4uAABBpl^p!NXoQ&?@U43_pTD*;7m;2d^qoQB z8y_mF53T45p>HEzmzmpU=6j+Zbk=+hJ1-Od26<>^)?8=yk)J1gWE>pk?6rJ;Xk{)S zJxAy(gTkDLit0lvS|Rjh#KVfywZ^<4%0XkT^Vqmd^iiy>DQm40d#IO)eu2j>Ib9g? z*M!fXSb?)B7m0j6kuc-iNtF7;N|uOxCN87MYmHc5W$3GQ2Kxp?KaI6D;aD%!st@;8 zuNLnH3GdG3JuVAuvHkghe`PSbIrw(t|M+d{pq~1aoV>6sy2ZtsYpX?@m5Wv`9n!yx{R^bVtWiU4+i5j6 zu|}R`$Qc=6&N6?>&cA_nme{OeTPpt)>yfi(jI+b_7Y`bJc2Z*<`{ziFv{3{0fOy(W zs}W+2EXgo4$q>T)#p-n&JAVsphS;QGVg6$GPP1uZ6Tub)-o`nL%Ovat#C3i$&1{p<}T~#iJ)wlZRIfxk+ta w!_F?@e~_!8+g#t>CZ9vI77}=m&`a diff --git a/pg_data/base/16384/2656 b/pg_data/base/16384/2656 index ef92e5d045c76b34a15ab1db5e6fc717ed95238e..041ef5282786590ad34d2b550354b92080cb257b 100644 GIT binary patch delta 108 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 n1$Z;<$`K>jr(z6Owg6^XA7 delta 36 qcmZo@U}|V!+Q8z#!;!R@kpT#{Fg1v77I0X?w9)CD(B`JlIxPUafeQ=( diff --git a/pg_data/base/16384/2663 b/pg_data/base/16384/2663 index d47deaaa985c3081424efcce804078693c6e271a..99883c5105271ad821409d83fb878873c426b263 100644 GIT binary patch delta 517 zcmZoTz|?SnX#pPc95O57GmDE$Q;Xw^GfPtAGgE-Z z&fowU&c|TLpaGYk{6kZw-T+lYNoh(YSO-jl9)pAf)U<-^)JnKPT5xfg;SdXyAQmL1 zl%*CGr^ct2rRJ3Y9fD!5B!dCSAw0+mCx6$JjT6Fd0ESOkfeuI3473Hsfod4?Act;# zq^TsvGvncMa9~eh+Q2v7~%q=G8`iP6Fqv|rZFb3+{Z0U167yx}( Bl@tH~ delta 77 zcmZoTz|?SnX# d0-~yc$$@9GfJ4mY8V57(i2(~XJNfJj1^}@3MU&rXNN|e71Sjv+kk=4nP=Fa#oLQ0@pP2$N2Vx8} zgD6z>cM4H1(7BXed|; k0&PPx1gonA&@`7!o~R`Wa-I}F&_8GIsWLt- zJGBxd!^|LorfzbAhFB6agE*QnPM~1Gkrjch5k*rsd4h&m zJu`y{g95rM3!qK|YZGQLa5$d;WCB5AN?B@AacX>OS!!Mh4&MmjR*&g?PoVb&@o2#2 d4*{&|C--YgC^9qf13ihuwIE+@u2yT61OUG;gJS>y delta 36 qcmZo@U~Fh$+`yv16A`?akpT!Im>SqN3n+LnZFJIN+1#X7CkX(pE(uZq diff --git a/pg_data/base/16384/2666 b/pg_data/base/16384/2666 index 72c3e8c1df230f1da6da3b921d763d1af8fd223e..702458714d0a2405ecbad6775d4ff18f47bef0f4 100644 GIT binary patch delta 245 zcmZo@U~Fh$+`yv19bvkHkpT!=m>f3qD>yP~KA5J!Z~=%90PzMOUI4@sfVcsO3xGHQ zhy#GwVY9E&N#S~C21y11kO5G@%pifr7f0iZq47o0_#$Y0VKlxFGGC2>nL!X)0LT|W OV{L56?;GlK+>&yK_w2lAPa_+mi*-vqE?uzFD-{|6FZ v1jzr6#1{tgpCj>wfc!@=z9!H@L7>20m;jJ30E9P?`20Zr^@Po@%)~eWwV@^a delta 39 ucmZo@U~Fh$+`yv1eIs}=BLfgbFn!p}ui(kFxkYK8@Wg;Sn?ITHaRLDIi46e& diff --git a/pg_data/base/16384/2673 b/pg_data/base/16384/2673 index 6776b59747dea913af090cdd494afb1c0f540ef2..9acd20b0a752634309ecc54f7e965f5f5dd30fd3 100644 GIT binary patch delta 2481 zcmZ|PNlX)A6bJA(rC=$A8T24W!oi?1q?#y*hy^!X&{5e$#KE;LC~k=B3<%mN5)uv& zBMAqC95Ecqk(1GrxS*&Ah#QIv?p0BI)4n?Nnfa1`n*83p@9X4yt=1Kxbw#vWwJ5Fq zssOmEt#XH`-Lyn&HBM;4$QXA=PgSWUM}*A~2Lo1sQAK|?xI`!>|EL5_{}f>^c{lSp z1aTy#P=rW51Alwk@mE=(e(z19hXm>ZZT zjD~SzH_PC=EPJPB2>Fq!2xsxDCgH0&*c8>6c(sYE3G#5}$H}ee zAwzzQ3Sq3_2)V%gFgY+kL_W@L>LB?a!vjOUj|yW(0rcT7CI7{IFZoaAd&qwmzu_d)<`+#_OcMhNHg9STn#FS>6(Y;RY{0i& zK!I@y(`1`R8q;Nz88tUL>vC^5(qp_N$RiO3QT2jx2JdtM2gX0!8yp#vI5!69FmIpb s%a~=v6OaH=A;GjkV7ovA;|#{hJW3(kdzu)JacvCvz`T9a1V%r80JU2#F#rGn diff --git a/pg_data/base/16384/2674 b/pg_data/base/16384/2674 index d7ca0147fc8652609907debdea02e1b4879a3625..20156a53091b0b07d0c5a0dc89eda53124e46cc4 100644 GIT binary patch delta 3006 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 diff --git a/pg_data/base/16384/2678 b/pg_data/base/16384/2678 index c80d13224eb6cb490cb7d99f852ac4b6c461727a..088b14aa706c404ac85ea5a0a07fe51e96f48025 100644 GIT binary patch delta 230 zcmZo@U~Fh$+`yv1qY<)#kpT!Qm@0%f3n(}+ssEU)!0-ZyZvgQLAm*5&z_0>H&j8{M zAg%!79g`I{Ix-8^voOdp2r#@)0GR*+EDW+}d>J&pG#XzD$p4Z6)(qA!3FMzg;!B|M Z#gX}vKnul?1%P}}Apc6jW+9Vz+yJ(9C9ePg delta 36 qcmZo@U~Fh$+`yv1^CD$2BLffwFiD7P7Eo|t+URsjaI=)jGj0I7+X^-S diff --git a/pg_data/base/16384/2679 b/pg_data/base/16384/2679 index deb9ea1b3ee0488f7d12a0e93144d2cbb9003591..63f3792611b9617cdcd72dd714edde502686e67e 100644 GIT binary patch delta 229 zcmZo@U~Fh$+`yv1oe{EvkpT!im<=}bD+n^HADFDbumOk{0PzGMZUEu}AWi_{03db% zVuQ&F8y#Qs*RwFlF$gdSCxQ$B0Tu>XAYTZHF9YNYBJrhx{BH?h#bEVPK>k-Gz9f+U n4v8-T8S{5QR@B%kr}c7%~J%nj4e|5RH3;v>-)7RBq{3qM)F$!~?9WK!alBZUJc< zigZ?7Bjpjcr3-K1N8sF`MSh|2g22tjGmv$&%EhA|;uT zf=o$H0?7zS&v`D%id>MEEJ;nOlkn};`-$QqGW;C@d)@Z4U(!5&+IQ#Am!szV$!tG^ zgb?yufNdzYu+M$n0dMbq=f{(|-w@-EC;(wQK=HuNz}B%r^znN1(I|H9Z0J29W)$}m z?+G!Z>|iw?EZ`9_rJT`gJ%C5VjN)G6Jt1ZkcN6akF{4~J)_nK`9uZTDJ4pkNh#AH0 z#Ct-_D7F*t2{EI56)dhl*a44-Da9mdU=hB8XcT;@R_h(|gqTs>OuQ$=jN%4;Tz@ct zN5qukdeR_9;x`bDVr*x_yeGtr;#%T8A!amwgtq=*0FOviTwpV45UNn~LH9>VzC#XZz=qh+#KC$&3w!728 z@A6l0wz?mDuDre--B`irytoGa|N_R+kdJOwU$f zyhJZ>yhvB{0^Opk%&W3Ux8kjx=xut7K1XlT zTl5CKX?!f^y!indoG?pw=ym!my+*IotMnSZLa)+i=oR`j9X}EK;{a3anC1kVK1DZ? ym_L+9qOwSg=aHx^NaJ}VN=zii@t~>fipKLul$c12BNB55E6c=mSn=(_#o<3-ABIN& diff --git a/pg_data/base/16384/2699 b/pg_data/base/16384/2699 index bf9ae6e58c3b8770aaba5226e97f28509bb96fcd..7379b780b5c0b9d52420e8d3268ad8b26f62a5e3 100644 GIT binary patch delta 754 zcmZ9~yH3L}6oBF5&{8e|3`50e?oe)FMGRqM>?4FX=o`e3&@nJ|WDM#HWM}Eff)ufU zm^!i`@ux#EC(<|kR($M8@!oiE%9e{K>5~zjPg8D>t-CXM{pe(Z3MEDu!ef98eWXa> zU?G@3IH@r~g%TqS;W0plK2jubundo^M~ec_dq6CBAR2+B}hLsxxSoLbyIR~z=5CsF4RWGUTs9vOhvf1rtAJA6aQoRs#-h6Sy!gnyh{A(ju zsuR_h^v8U^kqg!5s?YwK^To(13-7^zp6V0T$EuI$w_yLF>I2pL^SU5tvgRsn$9#i8JO?(^voUKSH7=?DJ!SjABylymCgpHbzSmbJi3GYCsb(E^{C$s z9;}<{sE?n}=ouCA-aXO~1s;vxP{GEps9@t>@M(4PE&Mg1Ru8ooG|H7L52rLVK)VA? z@UbCeL9@^m($D~}bf5`B3?U1eA&dvXmC(q;DUoZvvN3CWuV4Ej#=3ptT3QC$R<{fm}5Bxrt63~GQquVp($oa zhs~nvi2O^j1%SxE$biV70w_gy}B-B9pJo(Z^eD1>3mQ1X5k+t CD7CHt delta 62 zcmZo@U~Fh$+`yv16A{0dkpT!I7(WP17Eth*T%h2=moPtp!2pOECMPglm^AsBLf7O5 QMTLz{v-mfEGT`F}06)eQ0{{R3 diff --git a/pg_data/base/16384/2702 b/pg_data/base/16384/2702 index 211f248d64041c04b2d390b31491906d6e708eb6..307551d313e5cb88d29ccaf48559cc89a81bf189 100644 GIT binary patch delta 754 zcmYk)IZnes6oBD3*~lJ45m65N4yHvENk^F@m>c8<_7PGBs+5#Qxqy3`v@8N67KPBH zWfAZ@5cEd+i|={l@kkB=69gvA*mAphW`s2~;e6k*N5+p&tqdrlkb2aifZF6yiyGvT zC5ME@Cstw_P(&g1s6zp@$)grE$R$e-35~nfk+{nXD59`y&zl!@KP7YGh;y8LYO+!? zi)+d}m8x(5 z${YAmc^y9}ui<;;RU9j?;5+4Id^_=>u#7A*xKSGx@wM^-zEbALl1r~YI;dxV0O8PK A)&Kwi delta 36 qcmZo@U~Fh$+`yv1Gb4U6BLfgbFn*BQETG`QxY22rH8CJyvy=Zm0|3kW3nTyl diff --git a/pg_data/base/16384/2704 b/pg_data/base/16384/2704 index 11dd0f11a1dad8c6a2c24f032c8c257e7f8a9045..c127a89165efdbda45c07db5b1c90dbf41e7b244 100644 GIT binary patch delta 183 zcmZo@U~Xt&-oT>3{b2oaMg|aIS}>VkL6dpMM2E@d3U8SfOx&!bSRr7*$Dqt0;Sir$ zTwI!3%rJuktQJV{F(@)9IK(HWl%*CGr^ct2rRJ4@!W8*V{ delta 77 zcmZo@U~Xt&-oT>3eV}3vBLfipV7xJzUqN%Sjl!GFI*Mfi69XJJ-!jzp<7QqAmhWH| bVBajz5W%=Pr%{J-^PDC-7LXF5_IDNlrS2G$ diff --git a/pg_data/base/16384/2840 b/pg_data/base/16384/2840 index 50474fd11f599a7e5a4cd99efb77368a2c468d2c..e53998a24ad8b58b9f6e2e1d2c993507edbf789d 100644 GIT binary patch delta 1459 zcmYjR&u<$=6rS}uQ4&lyfvQSUnq9|sY*Hjs%7Gs(S>v`6rwEn%Xm)qj88SPwnVC)O zh}P?r3vg&rIU{kx`@CYJWvyPy&fZbM&7{herDVe6!X;p}sHi~lh z-V#CtWkwRn&_ml4hcXk!?mG>@7!UY5R&+=rY*@cN#57dKDfH}Kwcv}4a~u{4U%65NPo@#n1cWf*(+Gz|yKf)o*N8~Dbt#t3 z^OZ-OXoCmmpTF-c9g;l3DT!!b-O3x+5~#E9FDImY`5e!j)>0z%yWb@!kpe@?#KWHYN`dy>sfCm%lF&tSdWU4(`55jK%81o_Kzb@lLa&^yTfU+({lAvj7p!4GG}?+$$ADL;AQC9N<~Q*+}dF^%az>ouBFt z`%iWG{1G;|;MAbxNf;IN8cn%+;8fuLjG`}ZWK4k)ZC__aZi26Y3Ym=E_>J7UIHyD> z$;SC$XJx#qBoC!81ZN3zQB@8(6KhmCZ&fXSro9!&X#YY*hiaBm(fZ-{@hbGTQtr1` zT6InJjmH}MBp@P^w_2_)v2E+F%H;5zuieo8}ewKiRjf4 zBdzYQ?(n1`I|ure|HP|J7e;D-*wA?v1h86E^J&Ghec*|+kW}_BR4?|QKnt6G&2&ms zSZ#N(WLVT4`!io#ZC8xMdINE+QyQ|k$ikI(T%(B4B@)h@1x*>1i3!*Y(yGG*67O)g zY`ghVFMV)(%UJ*hr@?OSLqV^@ip!FR{n6we$~9ClT&HPtIdB#svh>H()!~Z=+l`{n i&e5&?e0huTPtTYivu3N-C84=~31BRMxpQ{){`5Z*m(Pa) delta 89 zcmZoTz}RqrQH%iyCcF<}WME)n&|x^i%%H%cz`(FktV~J>Bn1PE49pBn+?(e~rK$29 gkP8JXS7C7ApDf@Yvf0pKI_G8whgR0j4*mxO0L_*WT>t<8 diff --git a/pg_data/base/16384/2841 b/pg_data/base/16384/2841 index 6a1684cc286f7edfa7890df204ed834e2c84f9cd..77edaa893ac5ea11d72077096c774150983bfde9 100644 GIT binary patch delta 46 zcmZo@U~Fh$+`yv1y?|jQBLffwFbGWMSFmLkn6I$W@vs~R69Wr_0E0;4WGVY+0RB4) Al>h($ delta 33 ncmZo@U~Fh$+`yv1Jwqv!kpT#N7!)S+E7)#yx+XVS$^ISyj~xjX diff --git a/pg_data/base/16384/3455 b/pg_data/base/16384/3455 index 1fbd5bf8f76bb4bf3b2c4433c5f29654c1d5ba8a..65eeebcd6d37c0b4eab91552734536370449452a 100644 GIT binary patch delta 319 zcmZo@U~Fh$+`yv1^B`~qBLff=utu76Z2*(jbq{f-J}YM diff --git a/pg_data/base/16384/pg_internal.init b/pg_data/base/16384/pg_internal.init index f56e51c7ac6bc5781e8e1edfd449a3ae3e1ab9a4..28a0642b7939f2733de347b5496dca2ac50c4777 100644 GIT binary patch delta 67 zcmZ4Uh;z*&&J78Q9D)o$U=ZdyiCbs$6h#Al4jzQS61UFgDT)UA9NY+j$pwMz&Hn?o{|{iC_?*)MDq*pG JrUlbv3jo&z6@~x+ diff --git a/pg_data/global/pg_control b/pg_data/global/pg_control index 5a2e0b3568ace4dd189d75044123695ab1b89e13..77df77c033fd03c6ef1c687293fea1eb7ba42f06 100644 GIT binary patch delta 86 zcmZp0XmFSyp?O5hF_QrZK2)w`1kpR7G>8MkAaUM_j_QK@po&2PAiz7ZayiSU)P*{m N4H?hNO?F`91pwke5ZwR( delta 86 zcmZp0XmFSyp*c;{F_QrZX0$J11knjl8pMHNkT~~5M|HtTP{kkt5a6CzxtztjszPY9 MA>(BX>%sJ2Nd7gRZnf1)f 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 zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ v1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=VBr5`;OM_grVO70`Cc}m diff --git a/pg_data/pg_xact/0000 b/pg_data/pg_xact/0000 index 83f8c3bc3e8bc386ff5f874b206fd0e296e08c11..a4255cea7eef747c3f1e996079674869f59d7bc3 100644 GIT binary patch delta 16 XcmZp0XmFTth$)nD<3)Y>i4S-IHsc0) delta 15 WcmZp0XmFTth*5OoMSb~+5BLBvsRlRz