45 lines
1.8 KiB
JavaScript
45 lines
1.8 KiB
JavaScript
const BaseAgent = require('./BaseAgent');
|
|
|
|
class RxVisionAgent extends BaseAgent {
|
|
constructor() {
|
|
super('RxVisionAgent');
|
|
this.responseMocks = {
|
|
'default': JSON.stringify({
|
|
medications: [
|
|
{ name: 'Amoxicillin', dosage: '500mg', frequency: '1-0-1', duration: '5 days' },
|
|
{ name: 'Paracetamol', dosage: '650mg', frequency: '1-1-1', duration: '3 days' }
|
|
],
|
|
doctorNotes: 'Drink plenty of fluids. Rest for 3 days.',
|
|
nextFollowUp: '2026-06-02'
|
|
})
|
|
};
|
|
}
|
|
|
|
async execute(config, payload) {
|
|
const { imageUrl } = payload;
|
|
|
|
console.log(`[RxVisionAgent] Processing prescription image: ${imageUrl}`);
|
|
|
|
const prompt = `
|
|
Act as an expert medical OCR system. Analyze the provided image of a handwritten prescription.
|
|
Extract the medications, dosages, frequencies, and duration.
|
|
Also extract any general doctor notes and the next follow-up date.
|
|
Return a JSON object: { "medications": [{ "name", "dosage", "frequency", "duration" }], "doctorNotes": "...", "nextFollowUp": "YYYY-MM-DD" }
|
|
`;
|
|
|
|
// Simulate sending image to Vision API
|
|
const llmResponse = await this.mockLLMCall(prompt, this.responseMocks);
|
|
|
|
try {
|
|
const result = JSON.parse(llmResponse);
|
|
console.log(`[RxVisionAgent] Successfully extracted ${result.medications.length} medications.`);
|
|
return result;
|
|
} catch (e) {
|
|
console.error('[RxVisionAgent] Failed to parse Vision LLM response', e);
|
|
return { medications: [], doctorNotes: '', nextFollowUp: null };
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = new RxVisionAgent();
|