CareWell clinic / navigation
navigation
Move between open forms. Appointments for the first patient; Clinic > Patients goes back to the open CW_PATIENTS and Clinic > Home to CW_MAIN (menu code: CW_NAV.OPEN_MODULE finds the form open and calls GO_FORM); CW_MAIN's WHEN-FORM-NAVIGATE refreshes the home page. The home page's Patients button goes to the open CW_PATIENTS (GO_FORM from form code). Appointments for the second patient goes to the open CW_APPOINTMENTS, whose WHEN-FORM-NAVIGATE (LOAD_PATIENT) loads the new patient: its EXECUTE_QUERY first asks whether to save changes, answered No; the first patient's current appointment is then validated, and CHECK_DOUBLE_BOOKING refuses it, because the seed data has Dr Maya Wilson booked twice at that time.
Three runs from a fresh database gave byte-identical diffs. Behaviour that looks odd in the migrated app but is the original's: faithful to the original and waivers. Files: scenario, golden record, target record, diff (JSON).
Scenario steps
Items are addressed by their Forms name (BLOCK.ITEM[row]), the same name in the
original and, through the mapping, in the migrated app.
| # | Step | Action | Checked on the original |
|---|---|---|---|
| 0 | Open form cw_login | ||
| 1 | Type CTL.USERNAME = ADMIN | ||
| 2 | sign in | Click CTL.SIGN_IN | |
| 3 | patients | Click HOME.PATIENTS | |
| 4 | appointments | Click CTL.APPTS | |
| 5 | back to patients | Step {"label": "back to patients", "menu": "CLINIC.PATIENTS"} | |
| 6 | home | Step {"label": "home", "menu": "CLINIC.HOME"} | |
| 7 | patients again | Click HOME.PATIENTS | |
| 8 | second patient | Click PATIENTS.MRN[1] | |
| 9 | appointments again | Click CTL.APPTS | |
| 10 | do not save | Answer the alert No |
Screens, step by step
Left: the original Oracle Forms application, recorded on a virtual display. Right: the migrated application in headless Chromium. Screenshots are evidence only; the comparison works on the recorded values.
No step screenshots of the original were kept for this app; the comparison uses the recorded values, which are in the golden record below.
Step 0: open cw_login
Step 1: type
Step 2: sign in
Step 3: patients
Step 4: appointments
Step 5: back to patients
Step 6: home
Step 7: patients again
Step 8: second patient
Step 9: appointments again
Step 10: do not save
Golden record of the original
After each step: the focus, the displayed values that changed, the message line and any alert. The full record (every item of every step, windows, lists of values) is in the JSON file.
| # | Step | Action (by name) | Focus after | Displayed values that changed | Message line | Alert | Expect |
|---|---|---|---|---|---|---|---|
| 0 | Open form cw_login | CTL.USERNAME[0] | |||||
| 1 | Type CTL.USERNAME = ADMIN | CTL.USERNAME[0] | CTL.USERNAME[0] = ADMIN | ||||
| 2 | sign in | Click CTL.SIGN_IN | HOME.SCHEDULE[0] | HOME.CHECKED_IN[0] = <any>HOME.OPEN_AMOUNT[0] = 15,015HOME.OPEN_INVOICES[0] = 180HOME.TODAY_TOTAL[0] = <any>HOME.WELCOME[0] = Welcome, Clinic Administrator | |||
| 3 | patients | Click HOME.PATIENTS | PATIENTS.MRN[0] | CTL.COUNTER[0] = Patient 1 of 240PATIENTS.CITY[0] = NoidaPATIENTS.CITY[1] = GurugramPATIENTS.CITY[2] = DelhiPATIENTS.CITY[3] = BengaluruPATIENTS.CITY[4] = DelhiPATIENTS.CITY[5] = PunePATIENTS.CITY[6] = HyderabadPATIENTS.CITY[7] = GurugramPATIENTS.CITY[8] = ChennaiPATIENTS.FIRST_NAME[0] = AdamPATIENTS.FIRST_NAME[1] = MeeraPATIENTS.FIRST_NAME[2] = RiyaPATIENTS.FIRST_NAME[3] = SamuelPATIENTS.FIRST_NAME[4] = SaraPATIENTS.FIRST_NAME[5] = AishaPATIENTS.FIRST_NAME[6] = AishaPATIENTS.FIRST_NAME[7] = ArjunPATIENTS.FIRST_NAME[8] = DavidPATIENTS.LAST_NAME[0] = AliPATIENTS.LAST_NAME[1] = AliPATIENTS.LAST_NAME[2] = AliPATIENTS.LAST_NAME[3] = AliPATIENTS.LAST_NAME[4] = AliPATIENTS.LAST_NAME[5] = BanerjeePATIENTS.LAST_NAME[6] = BanerjeePATIENTS.LAST_NAME[7] = BanerjeePATIENTS.LAST_NAME[8] = BanerjeePATIENTS.MRN[0] = CW100686PATIENTS.MRN[1] = CW100791PATIENTS.MRN[2] = CW100427PATIENTS.MRN[3] = CW100014PATIENTS.MRN[4] = CW100084PATIENTS.MRN[5] = CW100350PATIENTS.MRN[6] = CW100847PATIENTS.MRN[7] = CW100966PATIENTS.MRN[8] = CW101547PATIENTS.PHONE[0] = +91 9714247138PATIENTS.PHONE[1] = +91 9747265671PATIENTS.PHONE[2] = +91 9319917758PATIENTS.PHONE[3] = +91 9239366764PATIENTS.PHONE[4] = +91 9231537636PATIENTS.PHONE[5] = +91 9698396784PATIENTS.PHONE[6] = +91 9078161038PATIENTS.PHONE[7] = +91 9550902396PATIENTS.PHONE[8] = +91 9732765917PATIENTS.PLAN_ID[1] = 5PATIENTS.PLAN_ID[3] = 6PATIENTS.PLAN_ID[5] = 6PATIENTS.PLAN_ID[8] = 1 | |||
| 4 | appointments | Click CTL.APPTS | APPOINTMENTS.DEPT_ID[0] | APPOINTMENTS.APPT_START[0] = 14-JAN-2026 09:30APPOINTMENTS.APPT_START[1] = 30-JAN-2026 14:45APPOINTMENTS.APPT_START[2] = 18-MAR-2026 09:30APPOINTMENTS.APPT_START[3] = 24-MAR-2026 10:45APPOINTMENTS.APPT_START[4] = 27-APR-2026 15:15APPOINTMENTS.APPT_START[5] = 24-JUN-2026 15:15APPOINTMENTS.DEPT_ID[0] = CardiologyAPPOINTMENTS.DEPT_ID[1] = CardiologyAPPOINTMENTS.DEPT_ID[2] = CardiologyAPPOINTMENTS.DEPT_ID[3] = OrthopedicsAPPOINTMENTS.DEPT_ID[4] = DiagnosticsAPPOINTMENTS.DEPT_ID[5] = General MedicineAPPOINTMENTS.DOCTOR_NAME[0] = Sophia BoseAPPOINTMENTS.DOCTOR_NAME[1] = Sara NairAPPOINTMENTS.DOCTOR_NAME[2] = Sara NairAPPOINTMENTS.DOCTOR_NAME[3] = Nikhil MehtaAPPOINTMENTS.DOCTOR_NAME[4] = Lina VermaAPPOINTMENTS.DOCTOR_NAME[5] = Maya WilsonAPPOINTMENTS.DURATION_MIN[0] = 30APPOINTMENTS.DURATION_MIN[1] = 30APPOINTMENTS.DURATION_MIN[2] = 30APPOINTMENTS.DURATION_MIN[3] = 30APPOINTMENTS.DURATION_MIN[4] = 30APPOINTMENTS.DURATION_MIN[5] = 30APPOINTMENTS.REASON[0] = Hypertension follow-upAPPOINTMENTS.REASON[1] = Chest painAPPOINTMENTS.REASON[2] = Chest painAPPOINTMENTS.REASON[3] = Shoulder stiffnessAPPOINTMENTS.REASON[4] = UltrasoundAPPOINTMENTS.REASON[5] = Blood pressure reviewAPPOINTMENTS.STATUS[0] = No-showAPPOINTMENTS.STATUS[1] = CompletedAPPOINTMENTS.STATUS[2] = CompletedAPPOINTMENTS.STATUS[3] = CompletedAPPOINTMENTS.STATUS[4] = No-showAPPOINTMENTS.STATUS[5] = CompletedCTL.PATIENT_NAME[0] = Adam Ali (CW100686) | |||
| 5 | back to patients | Step {"label": "back to patients", "menu": "CLINIC.PATIENTS"} | PATIENTS.MRN[0] | ||||
| 6 | home | Step {"label": "home", "menu": "CLINIC.HOME"} | HOME.SCHEDULE[0] | HOME.WELCOME[0] = Welcome, Front Desk One | |||
| 7 | patients again | Click HOME.PATIENTS | PATIENTS.MRN[0] | ||||
| 8 | second patient | Click PATIENTS.MRN[1] | PATIENTS.MRN[1] | CTL.COUNTER[0] = Patient 2 of 240 | |||
| 9 | appointments again | Click CTL.APPTS | FWindow/PushButton:Yes | CTL.PATIENT_NAME[0] = Meera Ali (CW100791) | Press Tab to move between choices, Return to select. | Do you want to save the changes you have made? | |
| 10 | do not save | Answer the alert No | MAIN_WIN/FScrollBox | APPOINTMENTS.APPT_START[0] = 02-FEB-2026 14:30APPOINTMENTS.APPT_START[1] = 30-MAR-2026 13:30APPOINTMENTS.APPT_START[2] = 08-MAY-2026 14:30APPOINTMENTS.DEPT_ID[0] = General MedicineAPPOINTMENTS.DEPT_ID[1] = General MedicineAPPOINTMENTS.DEPT_ID[2] = General MedicineAPPOINTMENTS.DOCTOR_NAME[0] = Kavya PillaiAPPOINTMENTS.DOCTOR_NAME[1] = Kavya PillaiAPPOINTMENTS.DOCTOR_NAME[2] = Maya WilsonAPPOINTMENTS.DURATION_MIN[0] = 15APPOINTMENTS.DURATION_MIN[1] = 15APPOINTMENTS.DURATION_MIN[2] = 15APPOINTMENTS.REASON[0] = Diabetes follow-upAPPOINTMENTS.REASON[1] = Blood pressure reviewAPPOINTMENTS.REASON[2] = Fever and coughAPPOINTMENTS.STATUS[0] = CompletedAPPOINTMENTS.STATUS[1] = No-show | Dr Maya Wilson already has appointment 50498 at that time. |
Database effects
None: the scenario changes no row and draws no sequence value.
Classified diff against the migrated app
Diff: navigation counts: match 835, tolerated 33, waived 12, defect 0, unmapped 0, harness 0 generated-id pairs (source -> target): none waivers: C1 [proposed] Oracle's frame title before sign-in: applied to 2 value(s) C2 [proposed] The home page's collected-today gauge reads empty: applied to 9 value(s) C3 [proposed] Help > About names nobody: applied to 0 value(s) C4 [proposed] The home page forgets the user after File > Exit of a module: applied to 0 value(s) C5 [proposed] No item has the focus after a fetched record is refused: applied to 1 value(s) C6 [proposed] The second payment of billing-pay is lost: applied to 0 value(s) [tolerated] ui.values.APPOINTMENTS.DEPT_ID rule=text x3 [tolerated] ui.values.APPOINTMENTS.STATUS rule=text x3 [tolerated] ui.values.HOME.CHECKED_IN rule=mask:today-counts x9 [tolerated] ui.values.HOME.OPEN_AMOUNT rule=text x9 [tolerated] ui.values.HOME.TODAY_TOTAL rule=mask:today-counts x9 [waived] ui.focus rule=waiver:C5 (expected dialog) x1 step10.focus: source 'MAIN_WIN/FScrollBox' | target 'appointments.dept_id[0]' [waived] ui.values.HOME.COLLECTED rule=waiver:C2 x9 step02.values.HOME.COLLECTED[0]: source '' | target '83' step03.values.HOME.COLLECTED[0]: source '' | target '83' step04.values.HOME.COLLECTED[0]: source '' | target '83' step05.values.HOME.COLLECTED[0]: source '' | target '83' step06.values.HOME.COLLECTED[0]: source '' | target '83' step07.values.HOME.COLLECTED[0]: source '' | target '83' step08.values.HOME.COLLECTED[0]: source '' | target '83' step09.values.HOME.COLLECTED[0]: source '' | target '83' step10.values.HOME.COLLECTED[0]: source '' | target '83' [waived] ui.windows rule=waiver:C1 x2 step00.windows: source [["FRAME", "Oracle Fusion Middleware Forms Services"], ["MAIN_WIN",... | target [["FRAME", "CareWell Clinic"], ["MAIN_WIN", "CareWell Clinic - Sign... step01.windows: source [["FRAME", "Oracle Fusion Middleware Forms Services"], ["MAIN_WIN",... | target [["FRAME", "CareWell Clinic"], ["MAIN_WIN", "CareWell Clinic - Sign...
Waivers
| Id | Waiver | Values | Reason |
|---|---|---|---|
| C1 | Oracle's frame title before sign-in | 2 | Until CW_NAV.START_FORM sets the MDI title, the Forms frame shows the runtime's own title "Oracle Fusion Middleware Forms Services". The target's frame reads "CareWell Clinic" from the start: the web page is the clinic's application, not Oracle's runtime. From sign-in on, both show the same title. |
| C2 | The home page's collected-today gauge reads empty | 9 | HOME.COLLECTED is a display item drawn as a half gauge on the original canvas; the Forms client's component tree exposes no text for it, so the source records '' at every step. The target shows the amount REFRESH_HOME computes (the same query as the source), as a number with a bar. |
| C5 | No item has the focus after a fetched record is refused | 1 | When LOAD_PATIENT's query fetches an appointment that CHECK_DOUBLE_BOOKING refuses (the seed data books Dr Maya Wilson twice at one time), the Forms client leaves the keyboard focus on the block's scroll area rather than on an item. The target fetches, refuses and stops at the same record, with the same message and record count, and keeps the cursor in the first item of the first record, where typing goes. |










