feat: chatbot rendering provider override and NPI provider ordering

- AI chat extracts 'with provider <name>' and routes claim to that provider
- Claim form reads provider from sessionStorage before any async effects run,
  preventing saved claim/procedure data from overriding the chatbot selection
- NPI provider settings table shows Provider #1 / #2 labels with up/down
  reorder buttons; Provider #1 is always the default for claims
- Default provider now uses sortOrder instead of hardcoded 'Mary Scannell'
- Added sortOrder column to NpiProvider schema with migration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-06-11 13:17:05 -04:00
parent d4b9c1b889
commit 75c49ab1df
77 changed files with 385 additions and 105 deletions

View File

@@ -73,6 +73,22 @@ router.put("/:id", async (req: Request, res: Response) => {
}
});
router.post("/reorder", async (req: Request, res: Response) => {
try {
if (!req.user?.id) {
return res.status(401).json({ message: "Unauthorized" });
}
const { orderedIds } = req.body;
if (!Array.isArray(orderedIds)) {
return res.status(400).json({ message: "orderedIds must be an array" });
}
await storage.reorderNpiProviders(req.user.id, orderedIds.map(Number));
res.status(200).json({ ok: true });
} catch (err) {
res.status(500).json({ error: "Failed to reorder NPI providers", details: String(err) });
}
});
router.delete("/:id", async (req: Request, res: Response) => {
try {
if (!req.user?.id) {