This commit is contained in:
2025-05-21 19:12:07 +05:30
parent 4d9678a0ea
commit 6f340990e9
4 changed files with 60 additions and 0 deletions

View File

@@ -13,12 +13,15 @@
"license": "ISC",
"type": "commonjs",
"dependencies": {
"axios": "^1.9.0",
"bcrypt": "^5.1.1",
"cors": "^2.8.5",
"dotenv": "^16.0.3",
"express": "^4.21.2",
"express-session": "^1.18.1",
"form-data": "^4.0.2",
"jsonwebtoken": "^9.0.2",
"multer": "^2.0.0",
"passport": "^0.7.0",
"passport-local": "^1.0.0",
"ws": "^8.18.0",
@@ -30,7 +33,9 @@
"@types/cors": "^2.8.18",
"@types/express": "^5.0.1",
"@types/express-session": "^1.18.0",
"@types/form-data": "^2.2.1",
"@types/jsonwebtoken": "^9.0.9",
"@types/multer": "^1.4.12",
"@types/node": "20.16.11",
"@types/passport": "^1.0.16",
"@types/passport-local": "^1.0.38",

View File

@@ -3,6 +3,7 @@ import patientRoutes from './patients';
import appointmentRoutes from './appointements'
import userRoutes from './users'
import staffRoutes from './staffs'
import pdfExtractionRoutes from './pdfExtraction';
const router = Router();
@@ -10,5 +11,6 @@ router.use('/patients', patientRoutes);
router.use('/appointments', appointmentRoutes);
router.use('/users', userRoutes);
router.use('/staffs', staffRoutes);
router.use('/pdfExtraction/', pdfExtractionRoutes);
export default router;

View File

@@ -0,0 +1,23 @@
import { Router } from "express";
import type { Request, Response } from "express";
const router = Router();
import multer from "multer";
import forwardToPythonService from "../services/pythonClient";
const upload = multer({ storage: multer.memoryStorage() });
router.post("/extract", upload.single("pdf"), async (req: Request, res: Response): Promise<any>=> {
if (!req.file) {
return res.status(400).json({ error: "No PDF file uploaded." });
}
try {
const result = await forwardToPythonService(req.file);
res.json(result);
} catch (err) {
console.error(err);
res.status(500).json({ error: "Extraction failed" });
}
});
export default router;

View File

@@ -0,0 +1,30 @@
import axios from "axios";
import FormData from "form-data";
import { Express } from "express";
export interface ExtractedData {
name?: string;
memberId?: string;
dob?: string;
[key: string]: any; // In case your extraction returns additional dynamic fields
}
export default async function forwardToPythonService(
file: Express.Multer.File
): Promise<ExtractedData> {
const form = new FormData();
form.append("pdf", file.buffer, {
filename: file.originalname,
contentType: file.mimetype,
});
const response = await axios.post<ExtractedData>(
"http://localhost:5001/extract",
form,
{
headers: form.getHeaders(),
}
);
return response.data;
}