pdf upload checkpoint1
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
StaffUncheckedCreateInputObjectSchema,
|
||||
ClaimUncheckedCreateInputObjectSchema,
|
||||
InsuranceCredentialUncheckedCreateInputObjectSchema,
|
||||
ClaimPdfUncheckedCreateInputObjectSchema
|
||||
} from "@repo/db/usedSchemas";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -145,6 +146,15 @@ type ClaimWithServiceLines = Claim & {
|
||||
}[];
|
||||
};
|
||||
|
||||
// claim types:
|
||||
type ClaimPdf = z.infer<typeof ClaimPdfUncheckedCreateInputObjectSchema>;
|
||||
|
||||
export interface ClaimPdfMetadata {
|
||||
id: number;
|
||||
filename: string;
|
||||
uploadedAt: Date;
|
||||
}
|
||||
|
||||
export interface IStorage {
|
||||
// User methods
|
||||
getUser(id: number): Promise<User | undefined>;
|
||||
@@ -211,6 +221,27 @@ export interface IStorage {
|
||||
userId: number,
|
||||
siteKey: string
|
||||
): Promise<InsuranceCredential | null>;
|
||||
|
||||
// Claim PDF Methods
|
||||
createClaimPdf(
|
||||
patientId: number,
|
||||
claimId: number,
|
||||
filename: string,
|
||||
pdfData: Buffer
|
||||
): Promise<ClaimPdf>;
|
||||
|
||||
getClaimPdfById(id: number): Promise<ClaimPdf | undefined>;
|
||||
|
||||
getAllClaimPdfs(): Promise<ClaimPdfMetadata[]>;
|
||||
|
||||
getRecentClaimPdfs(limit: number, offset: number): Promise<ClaimPdfMetadata[]>;
|
||||
|
||||
deleteClaimPdf(id: number): Promise<boolean>;
|
||||
|
||||
updateClaimPdf(
|
||||
id: number,
|
||||
updates: Partial<Pick<ClaimPdf, "filename" | "pdfData">>
|
||||
): Promise<ClaimPdf | undefined>;
|
||||
}
|
||||
|
||||
export const storage: IStorage = {
|
||||
@@ -474,5 +505,66 @@ export const storage: IStorage = {
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// pdf claims
|
||||
async createClaimPdf(
|
||||
patientId,
|
||||
claimId,
|
||||
filename,
|
||||
pdfData
|
||||
): Promise<ClaimPdf> {
|
||||
return db.claimPdf.create({
|
||||
data: {
|
||||
patientId,
|
||||
claimId,
|
||||
filename,
|
||||
pdfData,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
async getClaimPdfById(id: number): Promise<ClaimPdf | undefined> {
|
||||
const pdf = await db.claimPdf.findUnique({ where: { id } });
|
||||
return pdf ?? undefined;
|
||||
},
|
||||
|
||||
async getAllClaimPdfs(): Promise<ClaimPdfMetadata[]> {
|
||||
return db.claimPdf.findMany({
|
||||
select: { id: true, filename: true, uploadedAt: true },
|
||||
orderBy: { uploadedAt: "desc" },
|
||||
});
|
||||
},
|
||||
|
||||
async getRecentClaimPdfs(limit: number, offset: number): Promise<ClaimPdfMetadata[]> {
|
||||
return db.claimPdf.findMany({
|
||||
skip: offset,
|
||||
take: limit,
|
||||
orderBy: { uploadedAt: "desc" },
|
||||
select: {
|
||||
id: true,
|
||||
filename: true,
|
||||
uploadedAt: true,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
async deleteClaimPdf(id: number): Promise<boolean> {
|
||||
try {
|
||||
await db.claimPdf.delete({ where: { id } });
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
async updateClaimPdf(
|
||||
id: number,
|
||||
updates: Partial<Pick<ClaimPdf, "filename" | "pdfData">>
|
||||
): Promise<ClaimPdf | undefined> {
|
||||
try {
|
||||
const updated = await db.claimPdf.update({ where: { id }, data: updates });
|
||||
return updated;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user