npiProvider - v3

This commit is contained in:
2026-01-23 10:02:26 +05:30
parent eca21f398c
commit c2167a65dd
4 changed files with 151 additions and 2 deletions

View File

@@ -27,6 +27,9 @@ class AutomationMassHealth:
self.remarks = self.claim.get("remarks", "")
self.massdhp_username = self.claim.get("massdhpUsername", "")
self.massdhp_password = self.claim.get("massdhpPassword", "")
self.npiProvider = self.claim.get("npiProvider", {})
self.npiNumber = self.npiProvider.get("npiNumber", "")
self.npiName = self.npiProvider.get("providerName", "")
self.serviceLines = self.claim.get("serviceLines", [])
self.missingTeethStatus = self.claim.get("missingTeethStatus", "")
self.missingTeeth = self.claim.get("missingTeeth", {})
@@ -40,6 +43,39 @@ class AutomationMassHealth:
driver = webdriver.Chrome(service=s, options=options)
self.driver = driver
def select_rendering_npi(self, select_element):
options = select_element.options
target_npi = (self.renderingNpiNumber or "").strip()
target_name = (self.renderingNpiName or "").strip().lower()
# 1⃣ Exact NPI match (value or text)
for opt in options:
value = (opt.get_attribute("value") or "").strip()
text = (opt.text or "").lower()
if target_npi and (
value == target_npi or target_npi in text
):
opt.click()
return True
# 2⃣ Name match fallback
for opt in options:
text = (opt.text or "").lower()
if target_name and target_name in text:
opt.click()
return True
# 3⃣ Last fallback → first valid option
for opt in options:
if opt.get_attribute("value"):
opt.click()
return True
raise Exception("No valid Rendering Provider NPI found")
def login(self):
wait = WebDriverWait(self.driver, 30)
@@ -98,7 +134,7 @@ class AutomationMassHealth:
# Rendering Provider NPI dropdown
npi_dropdown = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="Select1"]')))
select_npi = Select(npi_dropdown)
select_npi.select_by_index(1)
self.select_rendering_npi(select_npi)
# Office Location dropdown
location_dropdown = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="Select2"]')))

View File

@@ -26,6 +26,9 @@ class AutomationMassHealthPreAuth:
self.remarks = self.claim.get("remarks", "")
self.massdhp_username = self.claim.get("massdhpUsername", "")
self.massdhp_password = self.claim.get("massdhpPassword", "")
self.npiProvider = self.claim.get("npiProvider", {})
self.npiNumber = self.npiProvider.get("npiNumber", "")
self.npiName = self.npiProvider.get("providerName", "")
self.serviceLines = self.claim.get("serviceLines", [])
self.missingTeethStatus = self.claim.get("missingTeethStatus", "")
self.missingTeeth = self.claim.get("missingTeeth", {})
@@ -39,6 +42,39 @@ class AutomationMassHealthPreAuth:
driver = webdriver.Chrome(service=s, options=options)
self.driver = driver
def select_rendering_npi(self, select_element):
options = select_element.options
target_npi = (self.renderingNpiNumber or "").strip()
target_name = (self.renderingNpiName or "").strip().lower()
# 1⃣ Exact NPI match (value or text)
for opt in options:
value = (opt.get_attribute("value") or "").strip()
text = (opt.text or "").lower()
if target_npi and (
value == target_npi or target_npi in text
):
opt.click()
return True
# 2⃣ Name match fallback
for opt in options:
text = (opt.text or "").lower()
if target_name and target_name in text:
opt.click()
return True
# 3⃣ Last fallback → first valid option
for opt in options:
if opt.get_attribute("value"):
opt.click()
return True
raise Exception("No valid Rendering Provider NPI found")
def login(self):
wait = WebDriverWait(self.driver, 30)
@@ -97,7 +133,7 @@ class AutomationMassHealthPreAuth:
# Rendering Provider NPI dropdown
npi_dropdown = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="Select1"]')))
select_npi = Select(npi_dropdown)
select_npi.select_by_index(1)
self.select_rendering_npi(select_npi)
# Office Location dropdown
location_dropdown = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="Select2"]')))