@@ -486,49 +486,46 @@ def fill_out_contrast_tagging_and_drug_information(
486486 logging .info ("🧪 Filling out Contrast, Tagging & Drug Information" )
487487 self .investigation_datasets_pom .click_show_contrast_tagging_and_drug_information ()
488488
489- field_map = {
490- "iv buscopan administered" : "#UI_BUSCOPAN_ADMINISTERED" ,
491- "iv contrast administered" : "#UI_CONTRAST_ADMINISTERED" ,
492- "tagging agent given" : "#UI_TAGGING_AGENT_GIVEN_DRUGS_ADMINISTERED" ,
493- "additional bowel preparation administered" : "#UI_ADDITIONAL_BOWEL_PREPARATION_ADMINISTERED" ,
494- "contraindicated" : "#UI_BUSCOPAN_CONTRAINDICATED" ,
495- }
496- normalized_map = {k .strip ().lower (): v for k , v in field_map .items ()}
497-
489+ # Use for loop and match-case for endoscopy_information fields
498490 for key , value in contrast_tagging_and_drug .items ():
499- normalized_key = key .strip ().lower ()
500-
501- if normalized_key in normalized_map :
502- selector = normalized_map [normalized_key ]
503-
504- if normalized_key == "tagging agent given" :
505- logging .info (
506- "🔍 Waiting for 'Tagging Agent Given' dropdown to become visible..."
491+ match key :
492+ case "iv buscopan administered" :
493+ DatasetFieldUtil (self .page ).populate_select_locator_for_field (
494+ "IV Buscopan Administered" , value
507495 )
508- self .page .locator (selector ).wait_for (state = "visible" )
509- options = self .page .locator (selector + " option" ).all_inner_texts ()
510- logging .info (
511- f"🧾 Options available in 'Tagging Agent Given': { options } "
496+ case "Contraindicated" :
497+ DatasetFieldUtil (
498+ self .page
499+ ).populate_select_locator_for_field_inside_div (
500+ "contraindicated" , "UI_BUSCOPAN_CONTRAINDICATED_ROW" , value
512501 )
513- logging .info (
514- f"✅ Dropdown visible. Selecting value: { to_enum_name_or_value (value )} "
502+ case "iv contrast administered" :
503+ DatasetFieldUtil (self .page ).populate_select_locator_for_field (
504+ "IV Contrast Administered" , value
515505 )
516- else :
517- logging .info (f"Setting { key } : { to_enum_name_or_value (value )} " )
518-
519- self .page .select_option (selector , value )
520-
521- elif normalized_key .startswith (("drug_type" , "drug_dose" )):
522- drug_info = {
523- dk : dv
524- for dk , dv in contrast_tagging_and_drug .items ()
525- if dk .strip ().lower ().startswith (("drug_type" , "drug_dose" ))
526- }
527- self .fill_out_drug_information (drug_info )
528- break
529-
530- else :
531- logging .warning (f"⚠️ Unknown contrast field: { key } " )
506+ case "reason" :
507+ DatasetFieldUtil (
508+ self .page
509+ ).populate_select_locator_for_field_inside_div (
510+ "Reason" , "UI_CONTRAST_ADMINISTERED_REASON_ROW" , value
511+ )
512+ case "tagging agent given" :
513+ DatasetFieldUtil (self .page ).populate_select_locator_for_field (
514+ "Tagging Agent Given" , value
515+ )
516+ case "additional bowel preparation administered" :
517+ DatasetFieldUtil (self .page ).populate_select_locator_for_field (
518+ "Additional Bowel Preparation Administered" , value
519+ )
520+ case k if k .startswith (("drug_type" , "drug_dose" )):
521+ # Extract all drug-related keys/values from the main dict
522+ drug_info = {
523+ dk : dv
524+ for dk , dv in contrast_tagging_and_drug .items ()
525+ if dk .startswith (("drug_type" , "drug_dose" ))
526+ }
527+ # Call the existing drug filling method once
528+ self .fill_out_drug_information (drug_info )
532529
533530 def fill_out_drug_information (self , drug_information : dict ) -> None :
534531 """
0 commit comments