← This release collection

Pharmacy · VERSION d20e68ed

Recognise expired-only ADOL stock and cancel without new dispensing

Read positive inventory separately from expiry eligibility, inspect only the new ADOL request, recognise the expired-lot exclusion and empty-lot refusal, then cancel and verify the same request and stock remain unchanged.

Pharmacist

Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

Positive inventory with a past expiry

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

  1. Verify Main Pharmacy: Keep the assigned training location.
  2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
  3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
  4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
  5. Read the past expiry: The date is September 30, 2026.
  6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
  7. Expand Pharmacy: Use the existing location menu.
The billing form shows All stock expired (1 lot), no allocated quantity, estimated SAR 0.00, All Given on and Mark Complete checked.123456
Recorded release d20e68ed · 2026-10-20T15:02:52.914Z · 1728 × 977

Expired-only availability with initial defaults

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 10397d5cafb173e914f96296a5a64023e212e01da25e2fbf01175d3a5ddc797f

  1. Read All stock expired (1 lot): The red availability label excludes the one lot from selection.
  2. Recognise no allocated quantity: The form has no eligible lot quantity or price.
  3. Review All Given initially on: This initial default must be checked before the isolated refusal example.
  4. Review Mark Complete initially checked: This is separate from the medicine-row toggle.
  5. Read the unsaved zero estimate: SAR 0.00 is an estimate, not a generated invoice.
  6. Keep Include all unused: Do not add the other unbilled prescription.
The form shows At least one lot is required beneath All stock expired (1 lot), with both controls off and Cancel available.12345
Recorded release d20e68ed · 2026-10-20T15:03:34.702Z · 1728 × 977

Empty-lot refusal beside the expiry warning

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 dbca600484e6c4a6e4f7ac2e1151aedda12ded2cf2c58b5f06a80db1aec675bd

  1. Read At least one lot is required: The form refuses to save an empty lot allocation.
  2. Keep the expiry warning distinct: The expired-only label remains above the validation message.
  3. Keep All Given off: Do not override progress to hide unavailable stock.
  4. Keep Mark Complete unchecked: The empty allocation must not complete the request.
  5. Choose Cancel: Leave the unsaved form without retrying the rejected allocation.
Inventory still shows one ADOL count with the same past expiry, synthetic batch and Active lifecycle; no unit has been consumed.1234
Recorded release d20e68ed · 2026-10-20T15:04:57.352Z · 1728 × 977

Same expired unit after cancellation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3281992aad3a8f271a7cc432d8cded313635c2124771b3b18d5b08642ca7020d

  1. Verify the expired unit remains one: The same ADOL inventory still contains 1.00 count.
  2. Verify the same September 30 expiry: The test date has not been edited to make the lot eligible.
  3. Verify the same synthetic batch: Match SYNTH-KB-EXPIRY-20261020-A.
  4. Keep Active separate from expiry: The unchanged lifecycle badge is not permission to dispense.

17 of 17 content blocks have reviewed image alignment.

Before you begin

  • Continue as the authorised ordinary Pharmacist in the isolated synthetic estate. The separate FacilityAdmin lesson “Create a clearly synthetic past-date ADOL fixture for expiry safeguards” established one labelled test unit. This is software training only, not acceptance of expired medicines as usable.
    Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
    Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

    Positive inventory with a past expiry

    Capture details

    Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

    Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

    1. Verify Main Pharmacy: Keep the assigned training location.
    2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
    3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
    4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
    5. Read the past expiry: The date is September 30, 2026.
    6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
    7. Expand Pharmacy: Use the existing location menu.
  • The Doctor must first finish “Save and reload a fictional one-count ADOL request for the expiry exercise”. Use the same synthetic registration patient and October 20, 2026 at 05:59 PM request. Its one-count QD one-day instruction and explicit note are fictional test data, not a clinical recommendation or permission to dispense or administer medicine.
    Billing Pending has the assigned synthetic patient at 05:59 PM and a separate earlier 04:27 PM request; View Rx is available on each row.1234
    Recorded release d20e68ed · 2026-10-20T15:02:32.183Z · 1728 × 977

    Correct new prescription timestamp

    Capture details

    Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

    Image SHA-256 511a7a6db4a4617686bff53bed3c6478314528b5c87e2123e308f005e9c13c38

    1. Match the assigned synthetic patient: Use SYNTHETIC KB Registration DOB 3dfb 3301.
    2. Match the new 05:59 PM request: Choose the October 20 ADOL request, not the earlier HYMOX request.
    3. Choose View Rx on that row: Preview only this request.
    4. Keep the earlier 04:27 PM request separate: Do not combine that different request into the expiry exercise.
    The selected 05:59 PM ADOL request shows its software-only note, total 1.00 count, Incomplete and Active. The other unbilled prescription remains separate.12345678
    Recorded release d20e68ed · 2026-10-20T15:02:42.018Z · 1728 × 977

    Single ADOL request before billing

    Capture details

    Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

    Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

    1. Verify the same patient: Check the assigned synthetic registration patient.
    2. Verify the 05:59 PM Doctor request: The selected request contains one ADOL item.
    3. Read original total one count: The fictional request total is 1.00 count.
    4. Read Incomplete: No part of this separate request has been dispensed.
    5. Read Active: The request remains active.
    6. Keep the other unbilled request separate: This banner refers to another prescription, not an unpaid invoice from this exercise.
    7. Leave Show all unused: Keep this single-request exercise separate.
    8. Choose Start Billing: Inspect the selected ADOL request in the billing form.
  • Keep the earlier HYMOX 04:27 PM request separate. The earlier no-stock lesson covers a different case with zero stock; this ADOL case has one positive unit with a September 30, 2026 expiry. Preserve the batch, expiry, original requests and earlier financial records.
    Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
    Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

    Positive inventory with a past expiry

    Capture details

    Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

    Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

    1. Verify Main Pharmacy: Keep the assigned training location.
    2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
    3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
    4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
    5. Read the past expiry: The date is September 30, 2026.
    6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
    7. Expand Pharmacy: Use the existing location menu.
    Billing Pending has the assigned synthetic patient at 05:59 PM and a separate earlier 04:27 PM request; View Rx is available on each row.1234
    Recorded release d20e68ed · 2026-10-20T15:02:32.183Z · 1728 × 977

    Correct new prescription timestamp

    Capture details

    Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

    Image SHA-256 511a7a6db4a4617686bff53bed3c6478314528b5c87e2123e308f005e9c13c38

    1. Match the assigned synthetic patient: Use SYNTHETIC KB Registration DOB 3dfb 3301.
    2. Match the new 05:59 PM request: Choose the October 20 ADOL request, not the earlier HYMOX request.
    3. Choose View Rx on that row: Preview only this request.
    4. Keep the earlier 04:27 PM request separate: Do not combine that different request into the expiry exercise.

1. Read the positive past-date stock before opening the queue

At Main Pharmacy Inventory → Items, match ADOL 500MG CAPLETS X24, 1.00 count, batch SYNTH-KB-EXPIRY-20261020-A and expiry September 30, 2026. Active is lifecycle status, not proof the lot is unexpired or dispensable. Verify the ordinary Pharmacist context, then expand Pharmacy and choose Prescription Queue.

Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

Positive inventory with a past expiry

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

  1. Verify Main Pharmacy: Keep the assigned training location.
  2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
  3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
  4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
  5. Read the past expiry: The date is September 30, 2026.
  6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
  7. Expand Pharmacy: Use the existing location menu.
The expanded Main Pharmacy menu offers Prescription Queue.1
Recorded release d20e68ed · 2026-10-20T15:02:16.561Z · 1728 × 977

Pharmacy queue navigation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 6b903b8d137474c465ada06d33df8e223b04dad2131dc2e06a85c3246fd5d03b

  1. Open Prescription Queue: Inspect the saved Doctor request through the ordinary queue.

2. Preview only the new 05:59 PM ADOL request

Match the assigned SYNTHETIC KB Registration DOB 3dfb 3301 row at 05:59 PM and choose View Rx. Verify ADOL, the explicit software-only note, original total 1.00 count, Incomplete and Active. Leave Show all unused: the banner about one other unbilled prescription refers to the earlier separate request, not a new unpaid invoice in this exercise.

Billing Pending has the assigned synthetic patient at 05:59 PM and a separate earlier 04:27 PM request; View Rx is available on each row.1234
Recorded release d20e68ed · 2026-10-20T15:02:32.183Z · 1728 × 977

Correct new prescription timestamp

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 511a7a6db4a4617686bff53bed3c6478314528b5c87e2123e308f005e9c13c38

  1. Match the assigned synthetic patient: Use SYNTHETIC KB Registration DOB 3dfb 3301.
  2. Match the new 05:59 PM request: Choose the October 20 ADOL request, not the earlier HYMOX request.
  3. Choose View Rx on that row: Preview only this request.
  4. Keep the earlier 04:27 PM request separate: Do not combine that different request into the expiry exercise.
The selected 05:59 PM ADOL request shows its software-only note, total 1.00 count, Incomplete and Active. The other unbilled prescription remains separate.12345678
Recorded release d20e68ed · 2026-10-20T15:02:42.018Z · 1728 × 977

Single ADOL request before billing

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify the same patient: Check the assigned synthetic registration patient.
  2. Verify the 05:59 PM Doctor request: The selected request contains one ADOL item.
  3. Read original total one count: The fictional request total is 1.00 count.
  4. Read Incomplete: No part of this separate request has been dispensed.
  5. Read Active: The request remains active.
  6. Keep the other unbilled request separate: This banner refers to another prescription, not an unpaid invoice from this exercise.
  7. Leave Show all unused: Keep this single-request exercise separate.
  8. Choose Start Billing: Inspect the selected ADOL request in the billing form.

3. Open billing and read All stock expired

Choose Start Billing for this selected request. The settled form shows All stock expired (1 lot), with no eligible lot quantity or price. The red message describes availability; it is not a selectable usable lot. The estimated SAR 0.00 is not an invoice. Do not use Include all to add the other request. Review the separate initial defaults: All Given is on and Mark Complete is checked.

The selected 05:59 PM ADOL request shows its software-only note, total 1.00 count, Incomplete and Active. The other unbilled prescription remains separate.12345678
Recorded release d20e68ed · 2026-10-20T15:02:42.018Z · 1728 × 977

Single ADOL request before billing

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify the same patient: Check the assigned synthetic registration patient.
  2. Verify the 05:59 PM Doctor request: The selected request contains one ADOL item.
  3. Read original total one count: The fictional request total is 1.00 count.
  4. Read Incomplete: No part of this separate request has been dispensed.
  5. Read Active: The request remains active.
  6. Keep the other unbilled request separate: This banner refers to another prescription, not an unpaid invoice from this exercise.
  7. Leave Show all unused: Keep this single-request exercise separate.
  8. Choose Start Billing: Inspect the selected ADOL request in the billing form.
The billing form shows All stock expired (1 lot), no allocated quantity, estimated SAR 0.00, All Given on and Mark Complete checked.123456
Recorded release d20e68ed · 2026-10-20T15:02:52.914Z · 1728 × 977

Expired-only availability with initial defaults

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 10397d5cafb173e914f96296a5a64023e212e01da25e2fbf01175d3a5ddc797f

  1. Read All stock expired (1 lot): The red availability label excludes the one lot from selection.
  2. Recognise no allocated quantity: The form has no eligible lot quantity or price.
  3. Review All Given initially on: This initial default must be checked before the isolated refusal example.
  4. Review Mark Complete initially checked: This is separate from the medicine-row toggle.
  5. Read the unsaved zero estimate: SAR 0.00 is an estimate, not a generated invoice.
  6. Keep Include all unused: Do not add the other unbilled prescription.

4. Keep both completion controls off and check Auto-select once

Turn All Given off and separately verify Mark Complete is unchecked, unchecking it if necessary. Choose the circular-arrow Auto-select control once. The form still has All stock expired (1 lot), no allocated lot and a zero estimate. Auto-select does not change the fixture expiry or supply an eligible unit.

The same expired-only form has All Given off and Mark Complete unchecked before Auto-select.1234
Recorded release d20e68ed · 2026-10-20T15:03:07.649Z · 1728 × 977

Both completion controls off

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 9255d2ddd4db5c05b09f1a9938e4a22e63a73df54d186039dbbfbc62c91de300

  1. Turn All Given off: Keep the medicine-row completion toggle off.
  2. Verify Mark Complete unchecked: Review the separate prescription-level checkbox.
  3. Read expired-only exclusion remains: Changing completion controls does not make the lot available.
  4. Run Auto-select once: Use the circular-arrow control once to check eligible selection.
All stock expired (1 lot) and the zero estimate remain after Auto-select, with both completion controls off.1234
Recorded release d20e68ed · 2026-10-20T15:03:18.734Z · 1728 × 977

No eligible lot after one Auto-select

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 7c226d66717b566782a77ce75ccf47617f02760d1a879885543cfcf38852e54d

  1. Verify the lot remains excluded: All stock expired (1 lot) remains after Auto-select.
  2. Keep Auto-select separate from replenishment: The action has not supplied usable stock.
  3. Verify estimate stays zero: There is still no saved invoice.
  4. Locate the one controlled Bill Selected attempt: The training example uses this once to show the empty-lot guard; normal recovery may cancel directly.

5. Recognise the one controlled empty-lot refusal

Normal recovery is to cancel when no eligible lot exists. In this isolated training example, Bill Selected was chosen once with both completion controls off and no allocated lot. The form displayed At least one lot is required while the expiry warning remained. No dispense order, invoice or payment was saved. Do not retry an empty allocation or use another action to hide the unavailable stock.

All stock expired (1 lot) and the zero estimate remain after Auto-select, with both completion controls off.1234
Recorded release d20e68ed · 2026-10-20T15:03:18.734Z · 1728 × 977

No eligible lot after one Auto-select

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 7c226d66717b566782a77ce75ccf47617f02760d1a879885543cfcf38852e54d

  1. Verify the lot remains excluded: All stock expired (1 lot) remains after Auto-select.
  2. Keep Auto-select separate from replenishment: The action has not supplied usable stock.
  3. Verify estimate stays zero: There is still no saved invoice.
  4. Locate the one controlled Bill Selected attempt: The training example uses this once to show the empty-lot guard; normal recovery may cancel directly.
The form shows At least one lot is required beneath All stock expired (1 lot), with both controls off and Cancel available.12345
Recorded release d20e68ed · 2026-10-20T15:03:34.702Z · 1728 × 977

Empty-lot refusal beside the expiry warning

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 dbca600484e6c4a6e4f7ac2e1151aedda12ded2cf2c58b5f06a80db1aec675bd

  1. Read At least one lot is required: The form refuses to save an empty lot allocation.
  2. Keep the expiry warning distinct: The expired-only label remains above the validation message.
  3. Keep All Given off: Do not override progress to hide unavailable stock.
  4. Keep Mark Complete unchecked: The empty allocation must not complete the request.
  5. Choose Cancel: Leave the unsaved form without retrying the rejected allocation.

6. Cancel without changing the request

Choose Cancel. The preview returns to the same ADOL request at one count, Incomplete and Active. No substitution, Mark as Already Given, Remove Medication or group completion action is part of this exercise.

The form shows At least one lot is required beneath All stock expired (1 lot), with both controls off and Cancel available.12345
Recorded release d20e68ed · 2026-10-20T15:03:34.702Z · 1728 × 977

Empty-lot refusal beside the expiry warning

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 dbca600484e6c4a6e4f7ac2e1151aedda12ded2cf2c58b5f06a80db1aec675bd

  1. Read At least one lot is required: The form refuses to save an empty lot allocation.
  2. Keep the expiry warning distinct: The expired-only label remains above the validation message.
  3. Keep All Given off: Do not override progress to hide unavailable stock.
  4. Keep Mark Complete unchecked: The empty allocation must not complete the request.
  5. Choose Cancel: Leave the unsaved form without retrying the rejected allocation.
The preview keeps the same ADOL request, software-only note, total one count, Incomplete and Active.123
Recorded release d20e68ed · 2026-10-20T15:04:08.628Z · 1728 × 977

Same unfinished request after Cancel

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after Cancel: The request has not become partially or fully dispensed.
  2. Verify Active after Cancel: The original request remains active.
  3. Verify original total one: The preview keeps the fictional 1.00 count request.

7. Reload and verify the same unfinished request

Reload normally and wait for the settled preview. Confirm the same 05:59 PM request, explicit note, original one-count total, Incomplete and Active. Keep the earlier HYMOX request separate and do not submit another bill to perform this readback.

The preview keeps the same ADOL request, software-only note, total one count, Incomplete and Active.123
Recorded release d20e68ed · 2026-10-20T15:04:08.628Z · 1728 × 977

Same unfinished request after Cancel

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after Cancel: The request has not become partially or fully dispensed.
  2. Verify Active after Cancel: The original request remains active.
  3. Verify original total one: The preview keeps the fictional 1.00 count request.
The reloaded preview keeps the selected 05:59 PM ADOL request at one count, Incomplete and Active.1234
Recorded release d20e68ed · 2026-10-20T15:04:24.097Z · 1728 × 977

Unchanged preview after normal reload

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after reload: Normal reload keeps the same unfinished request.
  2. Verify Active after reload: The original status remains active.
  3. Verify the same one-count total: No new quantity or request has appeared.
  4. Return to Inventory Items: Use the existing expanded Inventory menu for stock readback.

8. Verify the expired unit was not consumed

Open Inventory → Items again. Match the same ADOL one count, September 30 expiry and exact synthetic batch. The inventory remains Active as a lifecycle state, and its positive unit remains separate from eligibility for this request. Hand off any stock investigation to the authorised inventory owner under the facility’s procedure; do not edit the expiry or treat this test unit as usable medicine.

The reloaded preview keeps the selected 05:59 PM ADOL request at one count, Incomplete and Active.1234
Recorded release d20e68ed · 2026-10-20T15:04:24.097Z · 1728 × 977

Unchanged preview after normal reload

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after reload: Normal reload keeps the same unfinished request.
  2. Verify Active after reload: The original status remains active.
  3. Verify the same one-count total: No new quantity or request has appeared.
  4. Return to Inventory Items: Use the existing expanded Inventory menu for stock readback.
Inventory still shows one ADOL count with the same past expiry, synthetic batch and Active lifecycle; no unit has been consumed.1234
Recorded release d20e68ed · 2026-10-20T15:04:57.352Z · 1728 × 977

Same expired unit after cancellation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3281992aad3a8f271a7cc432d8cded313635c2124771b3b18d5b08642ca7020d

  1. Verify the expired unit remains one: The same ADOL inventory still contains 1.00 count.
  2. Verify the same September 30 expiry: The test date has not been edited to make the lot eligible.
  3. Verify the same synthetic batch: Match SYNTH-KB-EXPIRY-20261020-A.
  4. Keep Active separate from expiry: The unchanged lifecycle badge is not permission to dispense.

Distinguish expired-only stock from no stock

This fixture has a positive unit in Inventory but no eligible lot in the billing selector. All stock expired (1 lot) identifies a restricted lot; the earlier No Stock case had zero available units and needs its own checks. The lot count is not a saved dispense quantity. This exercise uses a clearly past September 30 date and does not establish every near-expiry cutoff or other stock condition.

Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

Positive inventory with a past expiry

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

  1. Verify Main Pharmacy: Keep the assigned training location.
  2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
  3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
  4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
  5. Read the past expiry: The date is September 30, 2026.
  6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
  7. Expand Pharmacy: Use the existing location menu.
The billing form shows All stock expired (1 lot), no allocated quantity, estimated SAR 0.00, All Given on and Mark Complete checked.123456
Recorded release d20e68ed · 2026-10-20T15:02:52.914Z · 1728 × 977

Expired-only availability with initial defaults

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 10397d5cafb173e914f96296a5a64023e212e01da25e2fbf01175d3a5ddc797f

  1. Read All stock expired (1 lot): The red availability label excludes the one lot from selection.
  2. Recognise no allocated quantity: The form has no eligible lot quantity or price.
  3. Review All Given initially on: This initial default must be checked before the isolated refusal example.
  4. Review Mark Complete initially checked: This is separate from the medicine-row toggle.
  5. Read the unsaved zero estimate: SAR 0.00 is an estimate, not a generated invoice.
  6. Keep Include all unused: Do not add the other unbilled prescription.
All stock expired (1 lot) and the zero estimate remain after Auto-select, with both completion controls off.1234
Recorded release d20e68ed · 2026-10-20T15:03:18.734Z · 1728 × 977

No eligible lot after one Auto-select

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 7c226d66717b566782a77ce75ccf47617f02760d1a879885543cfcf38852e54d

  1. Verify the lot remains excluded: All stock expired (1 lot) remains after Auto-select.
  2. Keep Auto-select separate from replenishment: The action has not supplied usable stock.
  3. Verify estimate stays zero: There is still no saved invoice.
  4. Locate the one controlled Bill Selected attempt: The training example uses this once to show the empty-lot guard; normal recovery may cancel directly.
Inventory still shows one ADOL count with the same past expiry, synthetic batch and Active lifecycle; no unit has been consumed.1234
Recorded release d20e68ed · 2026-10-20T15:04:57.352Z · 1728 × 977

Same expired unit after cancellation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3281992aad3a8f271a7cc432d8cded313635c2124771b3b18d5b08642ca7020d

  1. Verify the expired unit remains one: The same ADOL inventory still contains 1.00 count.
  2. Verify the same September 30 expiry: The test date has not been edited to make the lot eligible.
  3. Verify the same synthetic batch: Match SYNTH-KB-EXPIRY-20261020-A.
  4. Keep Active separate from expiry: The unchanged lifecycle badge is not permission to dispense.

Keep the form safeguard and unchanged result in scope

The illustrated form excluded the expired lot and refused an empty allocation. After Cancel and reload, the original request stayed Incomplete and Active, and the same expired stock unit remained. No new dispensing, billing, payment or physical handover occurred. This result describes the illustrated software path; it does not certify every possible dispensing route or authorise any attempt to bypass the safeguard.

The form shows At least one lot is required beneath All stock expired (1 lot), with both controls off and Cancel available.12345
Recorded release d20e68ed · 2026-10-20T15:03:34.702Z · 1728 × 977

Empty-lot refusal beside the expiry warning

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 dbca600484e6c4a6e4f7ac2e1151aedda12ded2cf2c58b5f06a80db1aec675bd

  1. Read At least one lot is required: The form refuses to save an empty lot allocation.
  2. Keep the expiry warning distinct: The expired-only label remains above the validation message.
  3. Keep All Given off: Do not override progress to hide unavailable stock.
  4. Keep Mark Complete unchecked: The empty allocation must not complete the request.
  5. Choose Cancel: Leave the unsaved form without retrying the rejected allocation.
The preview keeps the same ADOL request, software-only note, total one count, Incomplete and Active.123
Recorded release d20e68ed · 2026-10-20T15:04:08.628Z · 1728 × 977

Same unfinished request after Cancel

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after Cancel: The request has not become partially or fully dispensed.
  2. Verify Active after Cancel: The original request remains active.
  3. Verify original total one: The preview keeps the fictional 1.00 count request.
The reloaded preview keeps the selected 05:59 PM ADOL request at one count, Incomplete and Active.1234
Recorded release d20e68ed · 2026-10-20T15:04:24.097Z · 1728 × 977

Unchanged preview after normal reload

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after reload: Normal reload keeps the same unfinished request.
  2. Verify Active after reload: The original status remains active.
  3. Verify the same one-count total: No new quantity or request has appeared.
  4. Return to Inventory Items: Use the existing expanded Inventory menu for stock readback.
Inventory still shows one ADOL count with the same past expiry, synthetic batch and Active lifecycle; no unit has been consumed.1234
Recorded release d20e68ed · 2026-10-20T15:04:57.352Z · 1728 × 977

Same expired unit after cancellation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3281992aad3a8f271a7cc432d8cded313635c2124771b3b18d5b08642ca7020d

  1. Verify the expired unit remains one: The same ADOL inventory still contains 1.00 count.
  2. Verify the same September 30 expiry: The test date has not been edited to make the lot eligible.
  3. Verify the same synthetic batch: Match SYNTH-KB-EXPIRY-20261020-A.
  4. Keep Active separate from expiry: The unchanged lifecycle badge is not permission to dispense.

Troubleshooting

Inventory is Active but the selector says all stock expired

Read expiry separately from lifecycle. The test row is Active with one unit but has a September 30 past date. Confirm the exact product and assigned location, keep the expiry unchanged and follow the authorised stock procedure. Active does not clear the expiry restriction.

Ordinary Pharmacist inventory shows ADOL 1.00 count, Active lifecycle, September 30, 2026 expiry, the exact synthetic batch and SAR 1.00 base price.1234567
Recorded release d20e68ed · 2026-10-20T15:02:07.479Z · 1728 × 977

Positive inventory with a past expiry

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3fcf1496f4d4a2cab52a32df5d2a2514881c12e1b259f0866a95b5507db1d605

  1. Verify Main Pharmacy: Keep the assigned training location.
  2. Verify the ordinary Pharmacist account: Use the existing MANSOQ E2E Pharmacist account.
  3. Match the synthetic ADOL Product: The test row is ADOL 500MG CAPLETS X24.
  4. Read positive stock one: Inventory contains 1.00 count, not zero stock.
  5. Read the past expiry: The date is September 30, 2026.
  6. Keep Active separate from eligibility: Active is lifecycle status and does not mean the lot is unexpired.
  7. Expand Pharmacy: Use the existing location menu.
The billing form shows All stock expired (1 lot), no allocated quantity, estimated SAR 0.00, All Given on and Mark Complete checked.123456
Recorded release d20e68ed · 2026-10-20T15:02:52.914Z · 1728 × 977

Expired-only availability with initial defaults

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 10397d5cafb173e914f96296a5a64023e212e01da25e2fbf01175d3a5ddc797f

  1. Read All stock expired (1 lot): The red availability label excludes the one lot from selection.
  2. Recognise no allocated quantity: The form has no eligible lot quantity or price.
  3. Review All Given initially on: This initial default must be checked before the isolated refusal example.
  4. Review Mark Complete initially checked: This is separate from the medicine-row toggle.
  5. Read the unsaved zero estimate: SAR 0.00 is an estimate, not a generated invoice.
  6. Keep Include all unused: Do not add the other unbilled prescription.
Inventory still shows one ADOL count with the same past expiry, synthetic batch and Active lifecycle; no unit has been consumed.1234
Recorded release d20e68ed · 2026-10-20T15:04:57.352Z · 1728 × 977

Same expired unit after cancellation

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 3281992aad3a8f271a7cc432d8cded313635c2124771b3b18d5b08642ca7020d

  1. Verify the expired unit remains one: The same ADOL inventory still contains 1.00 count.
  2. Verify the same September 30 expiry: The test date has not been edited to make the lot eligible.
  3. Verify the same synthetic batch: Match SYNTH-KB-EXPIRY-20261020-A.
  4. Keep Active separate from expiry: The unchanged lifecycle badge is not permission to dispense.

Auto-select leaves no lot but Bill Selected is enabled

An enabled button does not guarantee a valid allocation. Keep both completion controls off. The controlled example shows At least one lot is required; routine recovery can use Cancel directly. Do not keep repeating the refused bill.

The same expired-only form has All Given off and Mark Complete unchecked before Auto-select.1234
Recorded release d20e68ed · 2026-10-20T15:03:07.649Z · 1728 × 977

Both completion controls off

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 9255d2ddd4db5c05b09f1a9938e4a22e63a73df54d186039dbbfbc62c91de300

  1. Turn All Given off: Keep the medicine-row completion toggle off.
  2. Verify Mark Complete unchecked: Review the separate prescription-level checkbox.
  3. Read expired-only exclusion remains: Changing completion controls does not make the lot available.
  4. Run Auto-select once: Use the circular-arrow control once to check eligible selection.
All stock expired (1 lot) and the zero estimate remain after Auto-select, with both completion controls off.1234
Recorded release d20e68ed · 2026-10-20T15:03:18.734Z · 1728 × 977

No eligible lot after one Auto-select

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 7c226d66717b566782a77ce75ccf47617f02760d1a879885543cfcf38852e54d

  1. Verify the lot remains excluded: All stock expired (1 lot) remains after Auto-select.
  2. Keep Auto-select separate from replenishment: The action has not supplied usable stock.
  3. Verify estimate stays zero: There is still no saved invoice.
  4. Locate the one controlled Bill Selected attempt: The training example uses this once to show the empty-lot guard; normal recovery may cancel directly.
The form shows At least one lot is required beneath All stock expired (1 lot), with both controls off and Cancel available.12345
Recorded release d20e68ed · 2026-10-20T15:03:34.702Z · 1728 × 977

Empty-lot refusal beside the expiry warning

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 dbca600484e6c4a6e4f7ac2e1151aedda12ded2cf2c58b5f06a80db1aec675bd

  1. Read At least one lot is required: The form refuses to save an empty lot allocation.
  2. Keep the expiry warning distinct: The expired-only label remains above the validation message.
  3. Keep All Given off: Do not override progress to hide unavailable stock.
  4. Keep Mark Complete unchecked: The empty allocation must not complete the request.
  5. Choose Cancel: Leave the unsaved form without retrying the rejected allocation.
The preview keeps the same ADOL request, software-only note, total one count, Incomplete and Active.123
Recorded release d20e68ed · 2026-10-20T15:04:08.628Z · 1728 × 977

Same unfinished request after Cancel

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify Incomplete after Cancel: The request has not become partially or fully dispensed.
  2. Verify Active after Cancel: The original request remains active.
  3. Verify original total one: The preview keeps the fictional 1.00 count request.

Another unbilled prescription is offered

Keep this expiry exercise on the new 05:59 PM ADOL request. Do not choose Show all or Include all to bring the earlier HYMOX request into it. That separate prescription does not prove an unpaid balance on the completed earlier order.

Billing Pending has the assigned synthetic patient at 05:59 PM and a separate earlier 04:27 PM request; View Rx is available on each row.1234
Recorded release d20e68ed · 2026-10-20T15:02:32.183Z · 1728 × 977

Correct new prescription timestamp

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 511a7a6db4a4617686bff53bed3c6478314528b5c87e2123e308f005e9c13c38

  1. Match the assigned synthetic patient: Use SYNTHETIC KB Registration DOB 3dfb 3301.
  2. Match the new 05:59 PM request: Choose the October 20 ADOL request, not the earlier HYMOX request.
  3. Choose View Rx on that row: Preview only this request.
  4. Keep the earlier 04:27 PM request separate: Do not combine that different request into the expiry exercise.
The selected 05:59 PM ADOL request shows its software-only note, total 1.00 count, Incomplete and Active. The other unbilled prescription remains separate.12345678
Recorded release d20e68ed · 2026-10-20T15:02:42.018Z · 1728 × 977

Single ADOL request before billing

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 0cc4b19eea85267ae73eebbcdf705861059f66a5f0d51c8c17663e97baf755fa

  1. Verify the same patient: Check the assigned synthetic registration patient.
  2. Verify the 05:59 PM Doctor request: The selected request contains one ADOL item.
  3. Read original total one count: The fictional request total is 1.00 count.
  4. Read Incomplete: No part of this separate request has been dispensed.
  5. Read Active: The request remains active.
  6. Keep the other unbilled request separate: This banner refers to another prescription, not an unpaid invoice from this exercise.
  7. Leave Show all unused: Keep this single-request exercise separate.
  8. Choose Start Billing: Inspect the selected ADOL request in the billing form.
The billing form shows All stock expired (1 lot), no allocated quantity, estimated SAR 0.00, All Given on and Mark Complete checked.123456
Recorded release d20e68ed · 2026-10-20T15:02:52.914Z · 1728 × 977

Expired-only availability with initial defaults

Capture details

Captured in the isolated synthetic d20e training estate with the ordinary Pharmacist role. This example shows expired-only lot exclusion and an unsaved empty-allocation refusal. No physical medicine, patient treatment, actual money or additional dispensing is involved.

Image SHA-256 10397d5cafb173e914f96296a5a64023e212e01da25e2fbf01175d3a5ddc797f

  1. Read All stock expired (1 lot): The red availability label excludes the one lot from selection.
  2. Recognise no allocated quantity: The form has no eligible lot quantity or price.
  3. Review All Given initially on: This initial default must be checked before the isolated refusal example.
  4. Review Mark Complete initially checked: This is separate from the medicine-row toggle.
  5. Read the unsaved zero estimate: SAR 0.00 is an estimate, not a generated invoice.
  6. Keep Include all unused: Do not add the other unbilled prescription.

Source evidence

Every citation uses this exact committed version. The private source repository requires access.