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:
@@ -4,6 +4,7 @@ export const NpiProviderAggregateResultSchema = z.object({ _count: z.object({
|
||||
userId: z.number(),
|
||||
npiNumber: z.number(),
|
||||
providerName: z.number(),
|
||||
sortOrder: z.number(),
|
||||
createdAt: z.number(),
|
||||
user: z.number(),
|
||||
claims: z.number(),
|
||||
@@ -13,17 +14,20 @@ export const NpiProviderAggregateResultSchema = z.object({ _count: z.object({
|
||||
}).optional(),
|
||||
_sum: z.object({
|
||||
id: z.number().nullable(),
|
||||
userId: z.number().nullable()
|
||||
userId: z.number().nullable(),
|
||||
sortOrder: z.number().nullable()
|
||||
}).nullable().optional(),
|
||||
_avg: z.object({
|
||||
id: z.number().nullable(),
|
||||
userId: z.number().nullable()
|
||||
userId: z.number().nullable(),
|
||||
sortOrder: z.number().nullable()
|
||||
}).nullable().optional(),
|
||||
_min: z.object({
|
||||
id: z.number().int().nullable(),
|
||||
userId: z.number().int().nullable(),
|
||||
npiNumber: z.string().nullable(),
|
||||
providerName: z.string().nullable(),
|
||||
sortOrder: z.number().int().nullable(),
|
||||
createdAt: z.date().nullable()
|
||||
}).nullable().optional(),
|
||||
_max: z.object({
|
||||
@@ -31,5 +35,6 @@ export const NpiProviderAggregateResultSchema = z.object({ _count: z.object({
|
||||
userId: z.number().int().nullable(),
|
||||
npiNumber: z.string().nullable(),
|
||||
providerName: z.string().nullable(),
|
||||
sortOrder: z.number().int().nullable(),
|
||||
createdAt: z.date().nullable()
|
||||
}).nullable().optional()});
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderCreateResultSchema = z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderDeleteResultSchema = z.nullable(z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderFindFirstResultSchema = z.nullable(z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -5,6 +5,7 @@ export const NpiProviderFindManyResultSchema = z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderFindUniqueResultSchema = z.nullable(z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -4,12 +4,14 @@ export const NpiProviderGroupByResultSchema = z.array(z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
_count: z.object({
|
||||
id: z.number(),
|
||||
userId: z.number(),
|
||||
npiNumber: z.number(),
|
||||
providerName: z.number(),
|
||||
sortOrder: z.number(),
|
||||
createdAt: z.number(),
|
||||
user: z.number(),
|
||||
claims: z.number(),
|
||||
@@ -19,17 +21,20 @@ export const NpiProviderGroupByResultSchema = z.array(z.object({
|
||||
}).optional(),
|
||||
_sum: z.object({
|
||||
id: z.number().nullable(),
|
||||
userId: z.number().nullable()
|
||||
userId: z.number().nullable(),
|
||||
sortOrder: z.number().nullable()
|
||||
}).nullable().optional(),
|
||||
_avg: z.object({
|
||||
id: z.number().nullable(),
|
||||
userId: z.number().nullable()
|
||||
userId: z.number().nullable(),
|
||||
sortOrder: z.number().nullable()
|
||||
}).nullable().optional(),
|
||||
_min: z.object({
|
||||
id: z.number().int().nullable(),
|
||||
userId: z.number().int().nullable(),
|
||||
npiNumber: z.string().nullable(),
|
||||
providerName: z.string().nullable(),
|
||||
sortOrder: z.number().int().nullable(),
|
||||
createdAt: z.date().nullable()
|
||||
}).nullable().optional(),
|
||||
_max: z.object({
|
||||
@@ -37,6 +42,7 @@ export const NpiProviderGroupByResultSchema = z.array(z.object({
|
||||
userId: z.number().int().nullable(),
|
||||
npiNumber: z.string().nullable(),
|
||||
providerName: z.string().nullable(),
|
||||
sortOrder: z.number().int().nullable(),
|
||||
createdAt: z.date().nullable()
|
||||
}).nullable().optional()
|
||||
}));
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderUpdateResultSchema = z.nullable(z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
@@ -4,6 +4,7 @@ export const NpiProviderUpsertResultSchema = z.object({
|
||||
userId: z.number().int(),
|
||||
npiNumber: z.string(),
|
||||
providerName: z.string(),
|
||||
sortOrder: z.number().int(),
|
||||
createdAt: z.date(),
|
||||
user: z.unknown(),
|
||||
claims: z.array(z.unknown()),
|
||||
|
||||
Reference in New Issue
Block a user