npiProvider - v4
This commit is contained in:
@@ -136,7 +136,6 @@ export function ClaimForm({
|
|||||||
}, [staffMembersRaw, staff]);
|
}, [staffMembersRaw, staff]);
|
||||||
|
|
||||||
// fetching npi providers
|
// fetching npi providers
|
||||||
|
|
||||||
const { data: npiProviders = [] } = useQuery<NpiProvider[]>({
|
const { data: npiProviders = [] } = useQuery<NpiProvider[]>({
|
||||||
queryKey: ["/api/npiProviders/"],
|
queryKey: ["/api/npiProviders/"],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
@@ -146,6 +145,29 @@ export function ClaimForm({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!npiProviders.length) return;
|
||||||
|
|
||||||
|
// do not override if user already selected
|
||||||
|
if (form.npiProvider?.npiNumber) return;
|
||||||
|
|
||||||
|
const kaiGaoNpi = npiProviders.find(
|
||||||
|
(p) => p.providerName.toLowerCase() === "kai gao",
|
||||||
|
);
|
||||||
|
|
||||||
|
const fallback = kaiGaoNpi || npiProviders[0];
|
||||||
|
|
||||||
|
if (fallback) {
|
||||||
|
setForm((prev) => ({
|
||||||
|
...prev,
|
||||||
|
npiProvider: {
|
||||||
|
npiNumber: fallback.npiNumber,
|
||||||
|
providerName: fallback.providerName,
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}, [npiProviders]);
|
||||||
|
|
||||||
// Service date state
|
// Service date state
|
||||||
const [serviceDateValue, setServiceDateValue] = useState<Date>(new Date());
|
const [serviceDateValue, setServiceDateValue] = useState<Date>(new Date());
|
||||||
const [serviceDate, setServiceDate] = useState<string>(
|
const [serviceDate, setServiceDate] = useState<string>(
|
||||||
@@ -571,7 +593,6 @@ export function ClaimForm({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 1. Create or update appointment
|
// 1. Create or update appointment
|
||||||
let appointmentIdToUse = appointmentId;
|
let appointmentIdToUse = appointmentId;
|
||||||
|
|
||||||
@@ -609,7 +630,12 @@ export function ClaimForm({
|
|||||||
|
|
||||||
// 3. Create Claim(if not)
|
// 3. Create Claim(if not)
|
||||||
// Filter out empty service lines (empty procedureCode)
|
// Filter out empty service lines (empty procedureCode)
|
||||||
const { uploadedFiles, insuranceSiteKey, ...formToCreateClaim } = f;
|
const {
|
||||||
|
uploadedFiles,
|
||||||
|
insuranceSiteKey,
|
||||||
|
npiProvider,
|
||||||
|
...formToCreateClaim
|
||||||
|
} = f;
|
||||||
|
|
||||||
// build claimFiles metadata from uploadedFiles (only filename + mimeType)
|
// build claimFiles metadata from uploadedFiles (only filename + mimeType)
|
||||||
const claimFilesMeta: ClaimFileMeta[] = (uploadedFiles || []).map((f) => ({
|
const claimFilesMeta: ClaimFileMeta[] = (uploadedFiles || []).map((f) => ({
|
||||||
@@ -691,7 +717,6 @@ export function ClaimForm({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 2. Update patient
|
// 2. Update patient
|
||||||
if (patient && typeof patient.id === "number") {
|
if (patient && typeof patient.id === "number") {
|
||||||
const { id, createdAt, userId, ...sanitizedFields } = patient;
|
const { id, createdAt, userId, ...sanitizedFields } = patient;
|
||||||
@@ -1049,7 +1074,8 @@ export function ClaimForm({
|
|||||||
|
|
||||||
setForm((prev) => ({
|
setForm((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
renderingNpi: {
|
npiProvider: {
|
||||||
|
// ✅ CORRECT KEY
|
||||||
npiNumber: selected.npiNumber,
|
npiNumber: selected.npiNumber,
|
||||||
providerName: selected.providerName,
|
providerName: selected.providerName,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ class AutomationMassHealth:
|
|||||||
def select_rendering_npi(self, select_element):
|
def select_rendering_npi(self, select_element):
|
||||||
options = select_element.options
|
options = select_element.options
|
||||||
|
|
||||||
target_npi = (self.renderingNpiNumber or "").strip()
|
target_npi = (self.npiNumber or "").strip()
|
||||||
target_name = (self.renderingNpiName or "").strip().lower()
|
target_name = (self.npiName or "").strip().lower()
|
||||||
|
|
||||||
# 1️⃣ Exact NPI match (value or text)
|
# 1️⃣ Exact NPI match (value or text)
|
||||||
for opt in options:
|
for opt in options:
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ class AutomationMassHealthPreAuth:
|
|||||||
def select_rendering_npi(self, select_element):
|
def select_rendering_npi(self, select_element):
|
||||||
options = select_element.options
|
options = select_element.options
|
||||||
|
|
||||||
target_npi = (self.renderingNpiNumber or "").strip()
|
target_npi = (self.npiNumber or "").strip()
|
||||||
target_name = (self.renderingNpiName or "").strip().lower()
|
target_name = (self.npiName or "").strip().lower()
|
||||||
|
|
||||||
# 1️⃣ Exact NPI match (value or text)
|
# 1️⃣ Exact NPI match (value or text)
|
||||||
for opt in options:
|
for opt in options:
|
||||||
|
|||||||
Reference in New Issue
Block a user