FormsRefresh

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.

0defects
835values match
33tolerated by policy
12waived
0unmapped

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.

#StepActionChecked on the original
0Open form cw_login
1Type CTL.USERNAME = ADMIN
2sign inClick CTL.SIGN_IN
3patientsClick HOME.PATIENTS
4appointmentsClick CTL.APPTS
5back to patientsStep {"label": "back to patients", "menu": "CLINIC.PATIENTS"}
6homeStep {"label": "home", "menu": "CLINIC.HOME"}
7patients againClick HOME.PATIENTS
8second patientClick PATIENTS.MRN[1]
9appointments againClick CTL.APPTS
10do not saveAnswer 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

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 00-open
Migrated (.NET, PostgreSQL)

Step 1: type

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 01-type
Migrated (.NET, PostgreSQL)

Step 2: sign in

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 02-sign-in
Migrated (.NET, PostgreSQL)

Step 3: patients

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 03-patients
Migrated (.NET, PostgreSQL)

Step 4: appointments

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 04-appointments
Migrated (.NET, PostgreSQL)

Step 5: back to patients

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 05-back-to-patients
Migrated (.NET, PostgreSQL)

Step 6: home

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 06-home
Migrated (.NET, PostgreSQL)

Step 7: patients again

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 07-patients-again
Migrated (.NET, PostgreSQL)

Step 8: second patient

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 08-second-patient
Migrated (.NET, PostgreSQL)

Step 9: appointments again

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 09-appointments-again
Migrated (.NET, PostgreSQL)

Step 10: do not save

no screenshot
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 10-do-not-save
Migrated (.NET, PostgreSQL)

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.

#StepAction (by name)Focus afterDisplayed values that changedMessage lineAlertExpect
0Open form cw_loginCTL.USERNAME[0]
1Type CTL.USERNAME = ADMINCTL.USERNAME[0]CTL.USERNAME[0] = ADMIN
2sign inClick CTL.SIGN_INHOME.SCHEDULE[0]HOME.CHECKED_IN[0] = <any>
HOME.OPEN_AMOUNT[0] = 15,015
HOME.OPEN_INVOICES[0] = 180
HOME.TODAY_TOTAL[0] = <any>
HOME.WELCOME[0] = Welcome, Clinic Administrator
3patientsClick HOME.PATIENTSPATIENTS.MRN[0]CTL.COUNTER[0] = Patient 1 of 240
PATIENTS.CITY[0] = Noida
PATIENTS.CITY[1] = Gurugram
PATIENTS.CITY[2] = Delhi
PATIENTS.CITY[3] = Bengaluru
PATIENTS.CITY[4] = Delhi
PATIENTS.CITY[5] = Pune
PATIENTS.CITY[6] = Hyderabad
PATIENTS.CITY[7] = Gurugram
PATIENTS.CITY[8] = Chennai
PATIENTS.FIRST_NAME[0] = Adam
PATIENTS.FIRST_NAME[1] = Meera
PATIENTS.FIRST_NAME[2] = Riya
PATIENTS.FIRST_NAME[3] = Samuel
PATIENTS.FIRST_NAME[4] = Sara
PATIENTS.FIRST_NAME[5] = Aisha
PATIENTS.FIRST_NAME[6] = Aisha
PATIENTS.FIRST_NAME[7] = Arjun
PATIENTS.FIRST_NAME[8] = David
PATIENTS.LAST_NAME[0] = Ali
PATIENTS.LAST_NAME[1] = Ali
PATIENTS.LAST_NAME[2] = Ali
PATIENTS.LAST_NAME[3] = Ali
PATIENTS.LAST_NAME[4] = Ali
PATIENTS.LAST_NAME[5] = Banerjee
PATIENTS.LAST_NAME[6] = Banerjee
PATIENTS.LAST_NAME[7] = Banerjee
PATIENTS.LAST_NAME[8] = Banerjee
PATIENTS.MRN[0] = CW100686
PATIENTS.MRN[1] = CW100791
PATIENTS.MRN[2] = CW100427
PATIENTS.MRN[3] = CW100014
PATIENTS.MRN[4] = CW100084
PATIENTS.MRN[5] = CW100350
PATIENTS.MRN[6] = CW100847
PATIENTS.MRN[7] = CW100966
PATIENTS.MRN[8] = CW101547
PATIENTS.PHONE[0] = +91 9714247138
PATIENTS.PHONE[1] = +91 9747265671
PATIENTS.PHONE[2] = +91 9319917758
PATIENTS.PHONE[3] = +91 9239366764
PATIENTS.PHONE[4] = +91 9231537636
PATIENTS.PHONE[5] = +91 9698396784
PATIENTS.PHONE[6] = +91 9078161038
PATIENTS.PHONE[7] = +91 9550902396
PATIENTS.PHONE[8] = +91 9732765917
PATIENTS.PLAN_ID[1] = 5
PATIENTS.PLAN_ID[3] = 6
PATIENTS.PLAN_ID[5] = 6
PATIENTS.PLAN_ID[8] = 1
4appointmentsClick CTL.APPTSAPPOINTMENTS.DEPT_ID[0]APPOINTMENTS.APPT_START[0] = 14-JAN-2026 09:30
APPOINTMENTS.APPT_START[1] = 30-JAN-2026 14:45
APPOINTMENTS.APPT_START[2] = 18-MAR-2026 09:30
APPOINTMENTS.APPT_START[3] = 24-MAR-2026 10:45
APPOINTMENTS.APPT_START[4] = 27-APR-2026 15:15
APPOINTMENTS.APPT_START[5] = 24-JUN-2026 15:15
APPOINTMENTS.DEPT_ID[0] = Cardiology
APPOINTMENTS.DEPT_ID[1] = Cardiology
APPOINTMENTS.DEPT_ID[2] = Cardiology
APPOINTMENTS.DEPT_ID[3] = Orthopedics
APPOINTMENTS.DEPT_ID[4] = Diagnostics
APPOINTMENTS.DEPT_ID[5] = General Medicine
APPOINTMENTS.DOCTOR_NAME[0] = Sophia Bose
APPOINTMENTS.DOCTOR_NAME[1] = Sara Nair
APPOINTMENTS.DOCTOR_NAME[2] = Sara Nair
APPOINTMENTS.DOCTOR_NAME[3] = Nikhil Mehta
APPOINTMENTS.DOCTOR_NAME[4] = Lina Verma
APPOINTMENTS.DOCTOR_NAME[5] = Maya Wilson
APPOINTMENTS.DURATION_MIN[0] = 30
APPOINTMENTS.DURATION_MIN[1] = 30
APPOINTMENTS.DURATION_MIN[2] = 30
APPOINTMENTS.DURATION_MIN[3] = 30
APPOINTMENTS.DURATION_MIN[4] = 30
APPOINTMENTS.DURATION_MIN[5] = 30
APPOINTMENTS.REASON[0] = Hypertension follow-up
APPOINTMENTS.REASON[1] = Chest pain
APPOINTMENTS.REASON[2] = Chest pain
APPOINTMENTS.REASON[3] = Shoulder stiffness
APPOINTMENTS.REASON[4] = Ultrasound
APPOINTMENTS.REASON[5] = Blood pressure review
APPOINTMENTS.STATUS[0] = No-show
APPOINTMENTS.STATUS[1] = Completed
APPOINTMENTS.STATUS[2] = Completed
APPOINTMENTS.STATUS[3] = Completed
APPOINTMENTS.STATUS[4] = No-show
APPOINTMENTS.STATUS[5] = Completed
CTL.PATIENT_NAME[0] = Adam Ali (CW100686)
5back to patientsStep {"label": "back to patients", "menu": "CLINIC.PATIENTS"}PATIENTS.MRN[0]
6homeStep {"label": "home", "menu": "CLINIC.HOME"}HOME.SCHEDULE[0]HOME.WELCOME[0] = Welcome, Front Desk One
7patients againClick HOME.PATIENTSPATIENTS.MRN[0]
8second patientClick PATIENTS.MRN[1]PATIENTS.MRN[1]CTL.COUNTER[0] = Patient 2 of 240
9appointments againClick CTL.APPTSFWindow/PushButton:YesCTL.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?
10do not saveAnswer the alert NoMAIN_WIN/FScrollBoxAPPOINTMENTS.APPT_START[0] = 02-FEB-2026 14:30
APPOINTMENTS.APPT_START[1] = 30-MAR-2026 13:30
APPOINTMENTS.APPT_START[2] = 08-MAY-2026 14:30
APPOINTMENTS.DEPT_ID[0] = General Medicine
APPOINTMENTS.DEPT_ID[1] = General Medicine
APPOINTMENTS.DEPT_ID[2] = General Medicine
APPOINTMENTS.DOCTOR_NAME[0] = Kavya Pillai
APPOINTMENTS.DOCTOR_NAME[1] = Kavya Pillai
APPOINTMENTS.DOCTOR_NAME[2] = Maya Wilson
APPOINTMENTS.DURATION_MIN[0] = 15
APPOINTMENTS.DURATION_MIN[1] = 15
APPOINTMENTS.DURATION_MIN[2] = 15
APPOINTMENTS.REASON[0] = Diabetes follow-up
APPOINTMENTS.REASON[1] = Blood pressure review
APPOINTMENTS.REASON[2] = Fever and cough
APPOINTMENTS.STATUS[0] = Completed
APPOINTMENTS.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

IdWaiverValuesReason
C1Oracle's frame title before sign-in2Until 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.
C2The home page's collected-today gauge reads empty9HOME.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.
C5No item has the focus after a fetched record is refused1When 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.