improvement: v1 standalone treatment/case creation made possible.
This commit is contained in:
@@ -149,7 +149,16 @@ export const ErrorCode = {
|
||||
TREATMENT_CASE_INVALID_ATTACHMENTS: 'TREATMENT_CASE_INVALID_ATTACHMENTS',
|
||||
TREATMENT_TOOTH_PROSTHESIS_INCOMPLETE: 'TREATMENT_TOOTH_PROSTHESIS_INCOMPLETE',
|
||||
TREATMENT_DETAIL_SENT: 'TREATMENT_DETAIL_SENT',
|
||||
TREATMENT_NOT_FOUND: 'TREATMENT_NOT_FOUND',
|
||||
TREATMENT_PATIENT_OR_WALK_IN: 'TREATMENT_PATIENT_OR_WALK_IN',
|
||||
TREATMENT_NOT_STANDALONE: 'TREATMENT_NOT_STANDALONE',
|
||||
TREATMENT_HAS_DETAILS: 'TREATMENT_HAS_DETAILS',
|
||||
LAB_CASE_NOT_FOUND: 'LAB_CASE_NOT_FOUND',
|
||||
LAB_CASE_NOT_EDITABLE: 'LAB_CASE_NOT_EDITABLE',
|
||||
LAB_CASE_ALREADY_STARTED: 'LAB_CASE_ALREADY_STARTED',
|
||||
LAB_CASE_LINES_REQUIRED: 'LAB_CASE_LINES_REQUIRED',
|
||||
LAB_CASE_START_INCOMPLETE: 'LAB_CASE_START_INCOMPLETE',
|
||||
LAB_CASE_CLIENT_REQUIRED: 'LAB_CASE_CLIENT_REQUIRED',
|
||||
|
||||
TASK_ASSIGNEE_INVALID: 'TASK_ASSIGNEE_INVALID',
|
||||
TASK_ASSIGNED_TO_OTHER: 'TASK_ASSIGNED_TO_OTHER',
|
||||
|
||||
40
backend/src/common/walk-in-patient.ts
Normal file
40
backend/src/common/walk-in-patient.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import type { Prisma } from '@prisma/client';
|
||||
import type { PrismaService } from '../../prisma/prisma.service';
|
||||
|
||||
export const WALK_IN_MOBILE_PREFIX = '__walkin__:';
|
||||
|
||||
export function walkInMobileForOrganization(organizationId: string): string {
|
||||
return `${WALK_IN_MOBILE_PREFIX}${organizationId}`;
|
||||
}
|
||||
|
||||
export function isWalkInMobile(mobile: string): boolean {
|
||||
return mobile.startsWith(WALK_IN_MOBILE_PREFIX);
|
||||
}
|
||||
|
||||
type PrismaClientLike = PrismaService | Prisma.TransactionClient;
|
||||
|
||||
/** One sentinel Patient per clinic for treatments without a named patient. */
|
||||
export async function ensureWalkInPatient(
|
||||
prisma: PrismaClientLike,
|
||||
organizationId: string,
|
||||
): Promise<{ id: string; isWalkIn: true }> {
|
||||
const existing = await prisma.patient.findFirst({
|
||||
where: { createdByOrganizationId: organizationId, isWalkIn: true },
|
||||
select: { id: true },
|
||||
});
|
||||
if (existing) {
|
||||
return { id: existing.id, isWalkIn: true };
|
||||
}
|
||||
|
||||
const created = await prisma.patient.create({
|
||||
data: {
|
||||
firstName: 'Walk-in',
|
||||
lastName: 'Walk-in',
|
||||
mobile: walkInMobileForOrganization(organizationId),
|
||||
isWalkIn: true,
|
||||
createdByOrganizationId: organizationId,
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
return { id: created.id, isWalkIn: true };
|
||||
}
|
||||
Reference in New Issue
Block a user