npiProvider - v3
This commit is contained in:
@@ -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"]')))
|
||||
|
||||
Reference in New Issue
Block a user