improvement: tasks and cases feature updated based on the new prosthesis types and their steps. the whole assignment proccess removed from the flow.

This commit is contained in:
2026-07-07 15:31:09 +03:30
parent ed7e7b1d8f
commit cb63ced4e3
35 changed files with 1819 additions and 454 deletions

View File

@@ -1,4 +1,4 @@
export type LabTaskStatus = 'PENDING' | 'IN_PROGRESS' | 'COMPLETED';
export type LabTaskStatus = 'IN_PROGRESS' | 'COMPLETED';
export interface LabCaseListItem {
id: string;
@@ -14,9 +14,23 @@ export interface LabCaseListItem {
taskProgress: { completed: number; total: number };
}
export interface LabTaskUser {
id: string;
name: string;
}
export interface LabTaskTimelineEvent {
id: string;
fromStatus: LabTaskStatus | null;
toStatus: LabTaskStatus;
changedAt: string;
changedBy: LabTaskUser | null;
}
export interface LabCaseTask {
id: string;
tooth: string;
treatmentDetailId: string;
teeth: string[];
treatmentType: string;
prosthesisTypeCode: string;
prosthesisTypeLabel: string;
@@ -24,21 +38,33 @@ export interface LabCaseTask {
stepOrder: number;
stepLabel: string;
status: LabTaskStatus;
priority: number;
assignedAt: string | null;
isImportant: boolean;
createdAt: string;
assigneeUserId: string | null;
assignee: { id: string; name: string; email: string } | null;
lastStatusChangedAt: string | null;
lastStatusChangedBy: LabTaskUser | null;
timeline: LabTaskTimelineEvent[];
}
export interface LabCaseTasksByTooth {
tooth: string;
export interface LabCaseTaskGroup {
treatmentDetailId: string;
teeth: string[];
treatmentType: string;
prosthesisTypeCode: string;
prosthesisTypeLabel: string;
tasks: LabCaseTask[];
}
export interface LabCaseComment {
id: string;
body: string;
authorSide: 'LAB' | 'CLINIC';
authorName: string | null;
authorOrganizationName: string | null;
visibleToClinic: boolean;
createdAt: string;
canToggleVisibility: boolean;
}
export interface LabCaseDetail {
id: string;
sentAt: string | null;
@@ -64,17 +90,10 @@ export interface LabCaseDetail {
sentAt: string;
}>;
tasks: LabCaseTask[];
tasksByTooth: LabCaseTasksByTooth[];
tasksByTooth: LabCaseTaskGroup[];
taskProgress: { completed: number; total: number };
}
export interface AssignableMember {
userId: string;
name: string;
email: string;
isOwner: boolean;
}
export interface ListLabCasesParams {
q?: string;
page?: number;
@@ -100,21 +119,38 @@ export interface PaginatedLabCases {
};
}
export type TaskSortField = 'date' | 'status' | 'clinic' | 'patient' | 'important';
export interface ListLabTasksParams {
q?: string;
clinicOrganizationId?: string;
status?: LabTaskStatus;
completed?: boolean;
important?: boolean;
sentFrom?: string;
sentTo?: string;
sortBy?: TaskSortField;
sortDir?: 'asc' | 'desc';
page?: number;
limit?: number;
}
export interface LabTaskListItem {
id: string;
labCaseId: string;
tooth: string;
treatmentDetailId: string;
teeth: string[];
treatmentType: string;
prosthesisTypeCode: string;
prosthesisTypeLabel: string;
workflowStepCode: string;
stepOrder: number;
stepLabel: string;
status: LabTaskStatus;
priority: number;
assignedAt: string | null;
isImportant: boolean;
lastStatusChangedAt: string | null;
lastStatusChangedBy: LabTaskUser | null;
createdAt: string;
assigneeUserId: string | null;
assignee: { id: string; name: string; email: string } | null;
clinic: { id: string; name: string };
patient: { id: string; firstName: string; lastName: string };
}