1. Product: Billing and back office¶
Billings and payments are the two functions that have the greatest influence on cash flow. In healthcare, like in any other business, ‘cash is king’. Every healthcare enterprise wants to make more revenue, collect all of that revenue, minimize purchasing spend and pay suppliers at the last ‘polite’ moment.
1.1. Theme: Registration and visits¶
This is the entry point for all clinical and administrative processes.
1.1.1. Epic: Patient registration¶
Instead of providing separate registration experiences e.g quick registration for emergency rooms and ‘normal’ registration for other settings, this design will target a streamlined patient registration function that can be used in all settings.
The important fields should be clustered at the top of the page - so that a time pressed department can opt to fill in the important ones first and add the rest later.
Note
The assigned patient numbers should be unique network-wide. One suggestion is for them to be namespaced alphanumerics that have at least 16 characters, a mix of letters and numbers. The designers of this numbering scheme should however be humane; the numbers should be easy to “chunk” into working memory.
Note
The Master Patient Index should provide a way in which related patients ( e.g mother and baby or siblings ) are cross-referenced.
The MPI should support merging of patient records.
Note
The complete history of a patient record’s changes should be maintained.
1.1.1.1. Story: Find existing patient record¶
The focus here should be on providing search that is of sufficiently high quality - high enough that the users almost never have to rely on the ‘Advanced Search’.
The search should tolerate common errors ( transpositions, translations, ommissions ) etc, tolerate alternate spellings ( British vs. American ) and support transliterated Arabic names ( e.g Mohammed vs Mohamad vs Muhamed ).
The available search fields include:
- patient names ( surname, first name, middle name )
- date of birth / age
- gender
- unique patient identifier / medical record number
- alias
- father’s or mother’s name - useful for neonates
- identification document number
- phone number
- location e.g room or bed
- visit number
- visit date
- admission date
- admitting physician
- discharge date
- family linkage e.g son of
Many of these are more suited to the ‘Advanced Search’ function. We should strive to implement default search so that it is good enough to obviate the need for these most of the time.
The patients list should be sorted in reverse chronological order by default.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | Feature: Find existing patient record
The system should support multiple patient search criteria, including:
names, partial names, historical names e.g maiden names, identification
numbers e.g National ID or passport number, medical record / patient
numbers, visit / encounter numbers e.g IP / OP number and insurance
numbers e.g NHIF or private insurance member numbers.
The search should be tolerant of simple spelling mistakes e.g
translocations, transpositions, translations, alternate spellings
( American vs British spellings ), common abbreviations ( e.g. 'Bill' for
'William' ) etc. A partial name should work as well as a full name, even if
the order of the names is reversed.
The multi-location nature of the enterprise ( e.g a multi-branch healthcare
chain ) should not matter - a patient registered in one branch should have
their record available in any other branch.
Scenario: Search for a patient record from a patient list
Given that I am logged in as "a <POS> user>"
And I navigate to the "<POS>" home page
And I navigate to the "Patients" listing
And I click on the search box
When I type at least three characters of the "<field>" of a patient
that exists
Then I should see records that match the "<field>" on the patient
listing, with each listing entry showing the name, patient number,
identification number, date of birth, gender and current patient queue,
a patient photo, visit status, preauthorization status and copay status
And I should get fewer and better matches as I type more
And the patient list should be sorted in reverse chronological order by
default
Examples:
| POS | field |
| Triage | name |
| Triage | historical name e.g maiden name |
| Triage | patient record number |
| Triage | identification number e.g national ID |
| Triage | insurance number e.g NHIF or member number|
| Triage | visit number ( IP or OP ) |
| Pharmacy | name |
| Pharmacy | historical name e.g maiden name |
| Pharmacy | patient record number |
| Pharmacy | identification number e.g national ID |
| Pharmacy | insurance number e.g NHIF or member number|
| Pharmacy | visit number ( IP or OP ) |
| Lab | name |
| Lab | historical name e.g maiden name |
| Lab | patient record number |
| Lab | identification number e.g national ID |
| Lab | insurance number e.g NHIF or member number|
| Lab | visit number ( IP or OP ) |
| Radiology | name |
| Radiology | historical name e.g maiden name |
| Radiology | patient record number |
| Radiology | identification number e.g national ID |
| Radiology | insurance number e.g NHIF or member number|
| Radiology | visit number ( IP or OP ) |
| Blood bank| name |
| Blood bank| historical name e.g maiden name |
| Blood bank| patient record number |
| Blood bank| identification number e.g national ID |
| Blood bank| insurance number e.g NHIF or member number|
| Blood bank| visit number ( IP or OP ) |
And I should be able to open an editing view to edit patient
registration details
And I should see a start visit button for patients with no ongoing
visit
And I should see a link / button to the current visit for patients with
and ongoing visit
Scenario: Advanced patient search
If ordinary search returns too many hits, the user may resort to
filtering the search results.
Given that I am logged in as "a <POS> user>"
And I navigate to the "<POS>" home page
And I navigate to the "Patients" listing
And I click on the search box
When I type at least three characters of the "<field>" of a patient
that exists
And I click on the filter area of the list view
And I constrain my search results by entering values into these field:
| Field |
| Gender |
| Age or date of birth |
| Phone number |
| Email address |
| Postal address |
| Last visit date |
Then I should see records that match the "<field>" on the patient
listing and the constraining filter, with each listing entry showing
the name, patient number, identification number, date of birth, gender
and current patient queue, a patient photo, visit status,
pre-authorization status and copay status
And I should get fewer and better matches as I type more
Examples:
| POS | field |
| Triage | name |
| Triage | historical name e.g maiden name |
| Triage | patient record number |
| Triage | identification number e.g national ID |
| Triage | insurance number e.g NHIF or member number|
| Triage | visit number ( IP or OP ) |
| Pharmacy | name |
| Pharmacy | historical name e.g maiden name |
| Pharmacy | patient record number |
| Pharmacy | identification number e.g national ID |
| Pharmacy | insurance number e.g NHIF or member number|
| Pharmacy | visit number ( IP or OP ) |
| Lab | name |
| Lab | historical name e.g maiden name |
| Lab | patient record number |
| Lab | identification number e.g national ID |
| Lab | insurance number e.g NHIF or member number|
| Lab | visit number ( IP or OP ) |
| Radiology | name |
| Radiology | historical name e.g maiden name |
| Radiology | patient record number |
| Radiology | identification number e.g national ID |
| Radiology | insurance number e.g NHIF or member number|
| Radiology | visit number ( IP or OP ) |
| Blood bank| name |
| Blood bank| historical name e.g maiden name |
| Blood bank| patient record number |
| Blood bank| identification number e.g national ID |
| Blood bank| insurance number e.g NHIF or member number|
| Blood bank| visit number ( IP or OP ) |
And I should be able to open an editing view to edit patient
registration details
And I should see a start visit button for patients with no ongoing
visit
And I should see a link / button to the current visit for patients with
and ongoing visit
|
1.1.1.2. Story: Full patient registration¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | Feature: Full' patient registration
This will be the patient registration path that will be followed in
settings that are not severely time constrained e.g at a registration desk
for regular outpatients.
Background:
Given that I am logged in as a 'registration desk' user
And I click on the 'Front Desk' main navigation link
Scenario: Register a patient with no prior system record ( first timer )
If the patient is a new born baby that has not been named yet, they
will initially be registered under by prefixing their mother's name
with 'Baby '. These records will be edited later.
This form will also serve as a quick registration form. In a quick
registration scenario, the optional fields will be left unfilled. It
should be possible to fill in the form in 'quick registration mode'
in 15 seconds ( verified by user testing ).
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Add New Patient"
When I fill in the following unique data
| field | explanation |
| title | Title of address e.g Mr, Dr ( optional ). |
| name | Name: family, give and middle components |
| photo | A photograph of the patient ( optional ) |
| aliases | e.g maiden names, old names ( optional ) |
| father's name | ( optional ) |
| mother's name | ( optional ) might include her maiden name |
| gender | Administrative gender |
| sex | Birth sex ( optional, hidden by default ) |
| birth date | Date of birth, **can be estimated** |
| ID documents | e.g ID or passport; can be more than one |
| Guardian's ID | For minors |
| nationality | |
| marital status | Civil / marital status ( optional ) |
| religion | |
| telephone no(s) | Current phone contacts ( optional ) |
| email(s) | Current email contacts ( optional ) |
| addresses | Postal and physical addresses ( optional ) |
| residence | Country -> street and door ( optional ) |
| next of kin | Names, relationship, phone, residence |
| payment method | Default payment method ( optional ) |
| payment details | e.g NHIF, insurance details ( optional ) |
| occupation | ( optional ) |
| employer | ( optional ) |
| notes | ( optional ) free text |
| guarantors | Full name, address, phone number ( optional ) |
| referred by | Doctor or institution; name and contacts |
And click on "Save Patient"
Then I should see a "Patient added" success message
And a patient record number should be assigned automatically
And I should be redirected to the patient listing
with the new patient's record showing on top
Scenario: Trigger validation errors when registering a patient
Validation errors should display as soon as the field is 'blurred'.
They should also inactivate the "Save Patient" button. The user should
not have to wait for a failed server side "save" to be informed of
validation errors.
It should not be possible to save a patient record without any of the
mandatory fields.
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Add New Patient"
When I fill in wrong / non-existent values for each of these fields:
| field | explanation |
| title | Title of address e.g Mr, Dr, Prof. |
| name | Name: family, give and middle components |
| gender | Administrative gender |
| sex | Birth sex |
| birth date | Date of birth, **can be estimated** |
| ID documents | e.g ID or passport; can be more than one |
| photo | A photograph of the patient |
| telecom(s) | Current phone and email contacts |
| addresses | Postal and physical addresses |
| marital status | Civil / marital status |
| contacts | Family or emergency contacts e.g guardians |
| payment method | Default payment method e.g insurance |
| payment details | e.g NHIF number, insurance details |
Then I should see a field-specific validation message for each value
And the "Save Patient" button should be inactive
Scenario: Attempt registration of a patient who already **has** a record
The government issued ID documents are used to identify 'true
duplicates'.
This de-duplication should work across an entire organization e.g every
branch in a multi-branch hospital.
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Add New Patient"
When I fill in the following data, with an existing ID type & number
| field | explanation |
| title | Title of address e.g Mr, Dr, Prof. |
| name | Name: family, give and middle components |
| gender | Administrative gender |
| sex | Birth sex |
| birth date | Date of birth, **can be estimated** |
| ID documents | e.g ID or passport; can be more than one |
| photo | A photograph of the patient |
| telecom(s) | Current phone and email contacts |
| addresses | Postal and physical addresses |
| marital status | Civil / marital status |
| contacts | Family or emergency contacts e.g guardians |
| payment method | Default payment method e.g insurance |
| payment details | e.g NHIF number, insurance details |
And click on "Save Patient"
Then I should see a "Patient already exists" error message
And I should be prompted to click through to the existing record
And I should be able to edit the existing patient record
Scenario: Attempt registration of a patient who **might** have an existing
record. The combination of name, gender, sex and birth date
is used to provide a 'potential duplicate' warning.
This de-duplication should work across an entire organization e.g every
branch in a multi-branch hospital.
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Add New Patient"
When I fill in the following data, with an existing ID type & number
| field | explanation |
| title | Title of address e.g Mr, Dr, Prof. |
| name | Name: family, give and middle components |
| gender | Administrative gender |
| sex | Birth sex |
| birth date | Date of birth, **can be estimated** |
| ID documents | e.g ID or passport; can be more than one |
| photo | A photograph of the patient |
| telecom(s) | Current phone and email contacts |
| addresses | Postal and physical addresses |
| marital status | Civil / marital status |
| contacts | Family or emergency contacts e.g guardians |
| payment method | Default payment method e.g insurance |
| payment details | e.g NHIF number, insurance details |
And click on "Save Patient"
Then I should see a "Did you mean to update ..." warning message
And I should be prompted to navigate to the existing record OR save
And I should be able to navigate to editing the existing record
And I should be able to click "Save" and get a success message
Scenario: Cancel a patient registration
It should be possible to abort a patient registration at any time
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Add New Patient"
When I click on the "Cancel" button
Then I should be navigated back to the patient list
Scenario: Register a John Doe in the emergency room
A 'John Doe' or 'Jane Doe' is a patient - usually an unconscious
emergency - about whom little or nothing is known. They still need to
have a patient record created in order for treatment to proceed.
Given that I have logged in and navigated to the front desk
And I navigate to the "Patients" listing
And I click on "Register Emergency Patient ( John Doe )"
Then I should be prompted to enter as plain text descriptive and
context information e.g scars, eye color or other unique descriptions
And I should be able to click "OK" and get a confirmation message
And I should be navigated back to the patient listing, with the new
record appearing near the top
|
1.1.1.3. Story: Edit patient record¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | Feature: Find existing patient record
Patient details e.g contacts change, and they need to be kept up to date.
Scenario: Open but do not edit a patient record
When navigating away from a patient record that is not "dirty", the
user should not be presented with any prompts.
Given that I am logged in as "a front desk user>"
And I navigate to the patient listing
And I 'Search for a patient record from a patient list'
And I select a single patient record by clicking "Edit Details"
And I see an editing form with the patient's details shown
When I click on "Cancel Editing"
Then I should be navigated back to the patients listing
Scenario: Edit an existing patient record
Any patient record that is retrieved can be updated. This includes
John/Jane doe patients and infants initially registered under a
'placeholder' name.
Given that I am logged in as "a front desk user>"
And I navigate to the patient listing
And I 'Search for a patient record from a patient list'
And I select a single patient record by clicking
And I see an editing form with the patient's details shown
When I change any value on the form
Then I should see a visual indication that the form is 'dirty'
When I click "Update Patient Details"
Then I should see a "Patient details updated" success message
And I should be navigated back to the patient listing
Scenario: Navigating away from a "dirty" record and discarding
When attempting to navigate away from a "dirty" record, a user should
be prompted to save or discard. If they choose to discard, they should
be navigated back to the patient listing with no further prompting.
Given that I am logged in as "a front desk user>"
And I navigate to the patient listing
And I 'Search for a patient record from a patient list'
And I select a single patient record by clicking "Edit Details"
And I see an editing form with the patient's details shown
And I make some changes to the patient record
When I click on "Cancel Editing"
Then I should be prompted to "Save" or "Discard" the changes
And I click on "Discard"
Then I should be navigated back to the patients listing
Scenario: Navigating away from a "dirty" record and saving
When attempting to navigate away from a "dirty" record, a user should
be prompted to save or discard. If they choose to save, the changes
should be saved.
Given that I am logged in as "a front desk user>"
And I navigate to the patient listing
And I 'Search for a patient record from a patient list'
And I select a single patient record by clicking "Edit Details"
And I see an editing form with the patient's details shown
And I make some changes to the patient record
When I click on "Cancel Editing"
Then I should be prompted to "Save" or "Discard" the changes
And I click on "Save"
Then I should see a success confirmation message
And I should be navigated back to the patients listing
Scenario: Trigger validation errors with invalid edits
When an invalid edit is made, the error should be fed back in a field
specific manner right away. The "Update Patient Details" button should
also be disabled.
Given that I am logged in as "a front desk user>"
And I navigate to the patient listing
And I 'Search for a patient record from a patient list'
And I select a single patient record by clicking
And I see an editing form with the patient's details shown
And I make some invalid change to any of these fields:
| field | explanation |
| title | Title of address e.g Mr, Dr, Prof. |
| name | Name: family, give and middle components |
| gender | Administrative gender |
| sex | Birth sex |
| birth date | Date of birth, **can be estimated** |
| ID documents | e.g ID or passport; can be more than one |
| photo | A photograph of the patient |
| telecom(s) | Current phone and email contacts |
| addresses | Postal and physical addresses |
| marital status | Civil / marital status |
| contacts | Family or emergency contacts e.g guardians |
| payment method | Default payment method e.g insurance |
| payment details | e.g NHIF number, insurance details |
Then I should see a field-specific error message next to the field
And the "Update Patient Details" button should be disabled
|
1.1.2. Epic: Visit start¶
Every billing and clinical action is tied to a visit.
1.1.2.1. Story: Start out-patient cash visit¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | Feature: Start a visit for a cash patient
For cash patient, a deposit or consultation fee is often ( but not always )
needed up-front.
This story depends upon the patient registration and patient search stories
i.e. you must have found or registered a patient and clicked on their record
Scenario: Start an outpatient visit for a cash patient, payment received
Given that I am viewing a single patient's record
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And I have selected 'Cash' as the visit payment method
And I select the initial service e.g consultation, a lab test
And I receive the amount that the system indicates as due
When I click on "Start Visit"
Then a receipt should be sent to the printer automatically
And I should see a "Visit Started" confirmation message
And I should be navigated back to the active visits list
And the visit should get a visit number auto-assigned
Scenario: Start an outpatient visit for a cash patient, payment not received
The system will not stop visits from being started with no payment,
because that can become a blocker in emergency scenarios. The design
should however make payment information very easy to spot, so that the
staff member operating the front-desk always has enough information to
make a good judgement.
Given that I am viewing a single patient's record
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And I have selected 'Cash' as the visit payment method
And I select the initial service e.g consultation, a lab test
When I click on "Start Visit"
Then I should see a "Visit Started" confirmation message
And I should be navigated back to the active visits list
And the visit should get a visit number auto-assigned
And the balance / amount owed should show on the visits listing
Scenario: Receive non-service cash payment e.g copay or deposit
This scenario **does not supersede the dedicated billing scenarios**.
Given that I am viewing a single patient's billing record
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And I click on 'Receive Payment' to open a payment form
When I enter the amount to be received
And indicate what it is received for e.g deposit, copay
And click on 'Record Payment'
Then the system should print a receipt
And the payment status shown on the patient banner should update
|
1.1.2.2. Story: Start out-patient insurance visit¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | Feature: Start Insurance Visit
Scenario: Start a visit for an insurance patient ,first time to use insurance
In order for this story to stay this 'simple', we will have to develop
a mechanism by which all insurance customers - EDI and non EDI - are
pre-registered. Non EDI customers can be pre-registered by uploading of
Excel files. This particular scenario will need to be a little permissive
i.e it should not prevent a user from starting a visit merely because
there is no eligibility information. This edge case will typically arise
in two circumstances: customers of foreign insurance companies and
beneficiaries added since the last 'update' of beneficiary information.
Given that I am viewing a single patient's record
And I have selected 'Insurance' as the visit payment method
And I have entered insurance details - company, scheme, member number
And I have clicked on "Check Eligibility"
And I have examined the eligibility breakdown that shows
And the patient has valid insurance
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And I can see an "Eligibility checked" message
When I click on "Start Visit"
Then I should see a "Visit Started" confirmation message
And I should be navigated back to the active visits list
And the visit should get a visit number auto-assigned
Scenario: Should not look up insurance eligibility, for cash patients
Given that I am viewing a single cash patient's billing record
When I examine the patient 'banner' on top
Then I should not see a "View Eligibility" button
Scenario: Should not start a visit for a patient with invalid insurance
Given that I am viewing a single patient's record
And I have selected 'Insurance' as the visit payment method
And I have entered insurance details - company, scheme, member number
And I have clicked on "Check Eligibility"
And I have examined the eligibility breakdown that shows
And the patient **does not** have valid insurance
Then the "Start Visit" button should be inactivated
And I should see a message "Please select another payment method.
The indicated insurance is not valid."
|
1.1.2.3. Story: Start out-patient credit visit¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | Feature: Start a visit for a credit patient
The tricky part of this implementation will be determining that a
patient is a valid scheme member AND the scheme is valid AND they
are eligible for care under the visit type indicated.
The 'credit schemes' envisioned by this are things like employer managed
medical schemes.
This story depends upon the patient registration and patient search stories
i.e. you must have found or registered a patient and clicked on their record
Scenario: Start an outpatient visit for a credit patient successfully
Given that I am viewing a single patient's record
And I have selected 'Credit' as the visit payment method
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the credit scheme to use from a shortlist
And I can see a "Credit Eligibility Confirmed" message on the screen
And I have selected the 'Queue' where the patient will go next
When I click on "Start Visit"
Then I should see a "Visit Started" confirmation message
And I should be navigated back to the active visits list
And the visit should get a visit number auto-assigned
Scenario: Fail to start a visit for an ineligible credit patient
Given that I am viewing a single patient's record
And I have selected 'Credit' as the visit payment method
And I have selected the type of visit e.g emergency, routine, ambulance
And the patient is not pre-registered for credit
Then I should not see a credit scheme shortlist to pick from
And the "Start Visit" button should be disabled
And I should see a "Patient not found in credit scheme" message
|
1.1.2.4. Story: Start capitation credit visit¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | Feature: Start a visit for a capitation patient
The tricky part of this implementation will be determining that a
patient is a valid capitation member AND the scheme is valid AND they
are eligible for care under the visit type indicated.
This story depends upon the patient registration and patient search stories
i.e. you must have found or registered a patient and clicked on their record
Scenario: Start an outpatient visit for a capitation patient successfully
Given that I am viewing a single patient's record
And I have selected 'Capitation' as the visit payment method
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And I have selected the capitation scheme to use from a shortlist
And I can see a "Capitation Eligibility Confirmed" message on the screen
When I click on "Start Visit"
Then I should see a "Visit Started" confirmation message
And I should be navigated back to the active visits list
And the visit should get a visit number auto-assigned
Scenario: Fail to start a visit for an ineligible capitation patient
Given that I am viewing a single patient's record
And I have selected 'Capitation' as the visit payment method
And I have selected the type of visit e.g emergency, routine, ambulance
And I have selected the 'Queue' where the patient will go next
And the patient is not pre-registered for capitation
Then I should not see a capitation scheme shortlist to pick from
And the "Start Visit" button should be disabled
And I should see a "Patient not found in capitation scheme" message
|
1.1.2.5. Story: Access the visits listing and individual visit pages¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | Feature: Visits listing and visit detail page
All clinical and billing activities are tied in to a visit. It follows then
that this listing should be available from all clinical and billing points
of service. Key status information ( e.g preauth status, copay status and
visit status ) should be shown as highly visible 'badges'.
Scenario: Navigate to the visits listing
The visits listing will show "Active Visits" by default, but allow the
user to navigate to visits in other statuses via a tab mechanism.
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
Then I should see a listing of visits for my location and department
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: View the patient's billing information by opening the visit
Given that I am logged in as a <Role> worker
And I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
Then I should see a listing of visits for my location and department
When I click on a visit to open it
Then I should see a page relevant patient billing information
| Type | Explanation |
| Copays | Amount or percentage due per visit |
| Insurers | One or more insurers |
| Eligibility | An always accessible eligibility lookup |
| Capitation m.ship | Membership in capitation scheme(s) |
| Credit scheme | Membership in capitation scheme(s) |
| Preauthorizations | All visit-linked preauths and their status|
| Preauth status | A status badge with current preauth status|
| Charges | A summary of amount owing and breakdown |
| Statements | A detailed entry of every charge, by visit|
| Adjustments | e.g account credits, writedowns |
| Payments | By invoice and visit |
| Prepayments | e.g pre-paid delivery packages |
| Deposits | e.g cash deposits |
And I should see a note recommending the next logical action e.g to
pay a deposit or to seek eligibility
And I should see a clear indication of the need or lack of need for a
copay
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Cannot start a visit for a patient with an ongoing visit
Inpatient visits will be closed upon discharge or transfer. Out-patient
visits will be closed after a **configured** time period. A sensible
default for this time period is 48 hours. After due consideration, it
is the author's opinion that a "Close Visit" function would add
complexity without a significant gain in utility.
Given that I am logged in as a <Role> worker
And I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
Then I should see a listing of visits for my location and department
When I click on a visit to open it
Then I should see a page relevant patient billing information
And there should be no "Start Visit" button
|
1.1.2.6. Story: Receive payments¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | Feature: Patient billing and payments
Scenario: Determine that a copay is due and not paid
Given that I am logged in as a <Role> worker
And I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And Isee a listing of visits for my location and department
And I click on a visit to open it
Given that I am viewing a single insurance patient's billing record
And the patient's plan needs a copay
And the patient has not paid the copay
Then I should see a "COPAY NOT RECEIVED" badge
And the "Start Visit" button should be disabled
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Determine that a copay is due and paid
Given that I am logged in as a <Role> worker
And I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And Isee a listing of visits for my location and department
And I click on a visit to open it
And I see a page with relevant patient billing information
And the patient's plan needs a copay
And the patient has paid it
When I look at the patient 'banner' on top
Then I should see a muted 'COPAY RECEIVED' badge
And I should be able to click on the 'Start Visit' button
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Print and reprint patient's receipt
Given that I am logged in as a <Role> worker
And I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And Isee a listing of visits for my location and department
And I click on a visit to open it
And I see a page with relevant patient billing information
And I see a listing of the patient's most recent payments
And I click on any paymen
Then I should see the payment details
And I should see a "Print Receipt" button
When I click on the "Print Receipt" button
Then the receipt should be sent to the printer
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
|
1.1.2.7. Story: Pre-authorizations¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | Feature: Preauthorizations
Pre-authorization requests are needed for some classes of visits ( e.g all
inpatient ) and on the basis of payer specific business rules ( e.g all
visits with an expected charge above KES 10,000 ). The design goal here is
to get the system to do most of the heavy lifting in answering the question
"Do we need a pre-authorization for this patient?"
Scenario: Show pre-authorization status when it is relevant
In this scenario, the user opens a 'visit sheet'. The need for a
pre-auth request should be communicated in a prominent 'badge' on a
'banner' that brings together all relevant visit information.
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And I click on a visit that should require preauthorization e.g inpatient
Then I should see a page that summarizes that visit's information
And I should be see a "Pre-authorization Status" section in its banner
And I should see a "Pre-authorization needed" badge in that section
And I should see a "Request pre-authorization" button next to that badge
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Do not show a pre-authorization section when it is not needed
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And I click on a visit that should NOT require preauthorization
Then I should see a page that summarizes that visit's information
And I should NOT be see a "Pre-authorization Status" section
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: View preauth status from the patient listing
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Patients"
And I find the patients of interest by typing into the search box
Then I should see a pre-authorization status badge for each patient
that has or needs pre-authorization
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: View preauth status from the visit listing
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And I find a specific visit by typing into the search box
Then I should see a pre-authorization status badge in each visit
that has or needs pre-authorization
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Request pre-authorization, for insurance patients
Given that I am logged in as a <Role> worker
When I click on <Role> in the main navigation
And I click on "Visits" in the secondary navigation
And I click on a visit that should require preauthorization e.g inpatient
Then I should see a page that summarizes that visit's information
And I should be see a "Pre-authorization Status" section in its banner
And I should see a "Pre-authorization needed" badge in that section
And I should see a "Request pre-authorization" button next to that badge
When I click on "Request Pre-authorization"
Then I should see a pre-authorization request form
And the form should have pre-filled with all details already present in
the visit
And I should edit and fill out the rest of the form
And I should press "Submit"
And I should see a "Pre-authorization request sent" message
And I should be navigated back to the visits listing
Examples:
|Role |
|Registration |
|Triage |
|Pharmacy |
|Radiology |
|Lab |
Scenario: Receive notification of pre-authorization approval
Given that I am logged in
And I had previously entered a request for pre-authorization
When a pre-authorization is approved
Then I should get a notification in the application notification area
And I should also get a native notification on my device
And I should be able to click on the notification to view the preauth
Scenario: Receive notification of pre-authorization rejection
Given that I am logged in
And I had previously entered a request for pre-authorization
When a pre-authorization is rejected
Then I should get a notification in the application notification area
And I should also get a native notification on my device
And I should be able to click on the notification to view the preauth
Scenario: Receive notification of pre-authorization clarification request
Given that I am logged in
And I had previously entered a request for pre-authorization
When a pre-authorization clarification is requested
Then I should get a notification in the application notification area
And I should also get a native notification on my device
And I should be able to click on the notification to respond to the request
Scenario: View preauth status from the patient listing
Given that I am logged in as a front-/ corporate- / admissions- worker
When I access the patient listing
Then I should see pre-authorization status badges for every patient
And patients with recent activity should appear at the top of the list
Scenario: View preauth status from the visits listing
Given that I am logged in as a front-/ corporate- / admissions- worker
When I access the patient listing
Then I should see pre-authorization status badges for every patient
And patients with recent activity should appear at the top of the list
Scenario: Determine a patient's preauth status
Given that I am viewing a single insurance patient's billing record
And the patient has a pre-authorization request(s)
When I look at the patient 'banner' on top
Then I should see a summary of the status of the pre-auth requests
And I should be able to click on each request to view it in full
|
1.2. Theme: Purchasing¶
This covers routine purchasing and acquisition of assets.
1.2.1. Epic: Purchasing¶
This is focused on ‘routine purchasing’ i.e purchasing of supplies that are re-sold or used as direct inputs in service delivery. Purchasing may be centralized ( in a purchasing department ) or decentralized ( with each service delivery department carrying out part or all of the process ).
All purchasing documents go through a maker-checker ( issuer / approver ) cycle.
Note
- As a:
- purchasing or stores employee
- I need to:
- set up vendors
- set up payment terms
- set up product information. In healthcare, product information might include specialized data fields e.g for Pharmacy, it includes: generic names, stock codes, strengths, units of issue e.g tablet or vial, unit pack sizes, manufacturer information, storage requirements, supplier, product categories, notes, category, storage instructions, dosing information etc
- product status - active, obsolete, phased out, expired
- define maximum and minimum reorder levels and critical stock levels
- define minimum and maximum stock cover days
- checking of back-orders, with deactivation after a time threshold
- automatic rounding off the the nearest pack size during reorder
- issue purchase orders, which derive from requisitions / requests
- split orders between different suppliers
- receive goods deliveries - noting batch numbers and expiries at this stage
- note delivery details e.g vehicle number and driver when receiving goods
- check the goods deliveries before accepting them into the store(s) and issuing a goods receipt note
- receiving donations
- accepting promotional stocks and prizes
- return goods that are not accepted - before or after they are stocked
- transfer goods to other stores, at cost
- enter invoices. While entering invoices, I expect discounts and due dates to be computed automatically, on the basis of payment terms. When accessing invoice listings, I should be able to sort or filter invoices by vendor, date etc. Potentially duplicated invoices should be flagged. An invoice may be assigned to a future accounting date.
- set up recurring invoices, for recurring vendor payments
- enter credit and debit memos
- make payments against purchase invoices, with the ability to: apply account credits to future purchases, pay in full or in part and add or remove vendor invoices from payment schedules. Potentially duplicated payments should be flagged as should payments to vendors who owe us money ( from credits or as customers ).
- generate vendor statements that can be used to reconcile their accounts
- access a dashboard that has: listings of invoices that are due for payment, aging analyses, cash requirements projections
- access the following reports: inventory by store, low inventory, slow moving inventory, batch and expiry tracking, purchases by vendor
- alert / flag when ordering items that are already in stock
- highlight the last supplier of an item and the price paid
- support requisitions with: current stock, stock cover days, lead time, forecasts
- requests for quotation
1.3. Theme: Billing¶
This write-up is to be read in conjunction with the positive ID specifications.
1.3.1. Epic: Billing dashboard¶
The billing dashboard should focus on the most important and actionable bits of summary information.
Note
- As a:
- billing manager
- I need to:
- quickly analyze receivables - aging, days in accounts receivable by insurance group / provider / visit type / diagnosis etc, aggregate days in accounts receivable
- quicly analyze denials, by reason, payer, condition, procedure etc
- access top n lists - service / procedure, payer etc
- quickly analyze revenue - by procedure, by payer, by diagnosis
- have access to a dashboard that tracks all my claims by status e.g paid, pending, late, returned, re-submitted
- view the audit trail of all transactions
- view current cash availability
- forecast cash sources against cash users
- track follow-up conversations e.g in collections
1.3.2. Epic: Preauthorizations¶
As an employee at any point of service that needs pre-authorization e.g the admissions desk, I need to be able to requests and track pre-authorizations.
Note
- As a:
- point of service staff member
- I need to:
- be able to request pre-authorization - both elective and emergency preauths
- be notified when a pre-authorization changes status e.g is approved or rejected, so that I can inform waiting patients and move the process along
- be able to respond to clarification requests on pre-authorizations
- be able to check on the status of any pre-authorization and have a simple dashboard that gives visibility into the status of all preauthorizations that are in flight
1.3.3. Epic: Cashiering¶
This feature covers both cash and credit invoices - what we’d conventionally call ‘tills’ or ‘pay points’.
Note
- As a:
- cashier
- I need to:
- be able to log in to my own cashiering ‘site’, with its own cash drawer, receipt etc
- have my own shift, with a ‘day book report’ that is produced at the end
- post payments singly and in batch
- access cash balancing reports, within and at the end of a shift
- accept MPESA payments
- accept card and other electronic payments
- show a warning if a customer payment will put the customer account into credit
1.3.4. Epic: Billing back-office¶
As a billing clerk, I need to quickly distinguish tasks that need special attention. For each patient, the operating analogy is that of a ‘cockpit’ that is focused on a single patient’s billing. The activities described here should be designed for ‘a world with EDI’ and ‘a world without EDI’.
Financial ‘class codes’ on patient accounts are things like ‘ensuite’, ‘private’ etc.
Note
- As a:
- billing clerk
- I need to:
have quick access to a worklist ( alternative names: task list, queue )
be able to hold ( suspend processing of ) bills that need some special action e.g a consultation with my boss, a confirmation etc
be able to access a listing of held bills and a simple summary of the status of held / pending / processed bills for a particular day
easily send out payment reminders for both individuals and corporate payers
be able to look up a patient’s insurance eligibility - for those from EDI linked payers - at any moment
have access to patient summary clinical information ( discharge summary, problem list )
be able to view all the billings and payments on a patient’s account. This includes deposits, charges, adjustments, corrections and refunds.
have quick and obvious access to patients’ deductibles / copayment obligations and whether they have been met or not
be able to see a patient’s insurance details and look up eligibility on demand ( a patient may be on multiple insurance schemes )
be able to generate an interim invoice for a patient with an active inpatient or outpatient visit on demand
access a queue of requests for interim bills from insurance care managers ( from the payer portal ) then review and respond ( accept / reject ) those requests; for the ones that I accept, an interim bill is automatically sent to the requester
be able to consolidate bills at the end of a patient’s stay to produce a ‘super bill’; this consolidated bill may be grouped by department
make adjustments on patient bill
support multiple prices e.g by patient type, insurance
support percentage discounts and allowances for third party contracts e.g volume and prompt payment discounts
get alerts when patient cover is about to be depleted
enter price and description for miscellaneous charges
entry of late charges - with different cut off periods
produce daily and monthly later charge reports
be able to generate a final bill for a patient whose visit has been completed e.g a discharged patient; the patient’s bill may be printed in summary or detailed form
be able to reprint any final bill on demand
be able to process a cash refund for a patient who is billed less than their deposit
be able to split a bill between the patient and their insurer / employer / sponsor
be able to generate a split bill for a second payer
be able to support rebilling for late charges and changes in financial class after billing
be able to retroactively change financial class and rebil
be able to post a supplementary bill to a patient e.g posting charges to the patient post-discharge, even after the late charge threshold
be able to generate and print or send a patient statement
be able to bill guarantors or family
be able to view prominent flags / warnings for patients who may present collection problems
be able to submit claims via EDI
be able to group invoices destined for a specific payer, generate cover sheets and dispatch them in bulk , batch and dispach them ( dispatch paper claims )
be able to track the status of all claims, including denials, those that need additional information, low pay claims etc
be able to respond to requests for clarification on claims and effect the necessary claims edits
be notified via the claims section of my message inbox when a claim changes status e.g is paid, there is an incoming remittance advice etc
be able to enter non EDI remittance advices manually
billing for non-patient accounts e.g guest beds
batch printing of bills
print free format text messages on all bills in a financial class
- each bill has the following:
- header: patient name, guarantor name and address, date and type of bill ( interim or final ), hospital service, physician(s), financial class, admit and discharge diagnosis, visit diagnosis for outpatients ( including ICD 10 code )
- lines: service code, date, description, quantity, amount, total
a bill may have a summary ( grouping ) of charges
a bill may have comments
- collections - standard form letters on demand e.g for 30 day old accounts, 60 day old accounts etc
- aging of undispatched claims
- generate reminder letters for overdue invoices
- write off small remaining balances based on user defined tolerance
The ‘conveyor belt’ analogy is a good one, for billing clerks. Keep the belt movin’.
1.3.5. Epic: Aged trial balance¶
Note
- As an:
- accounting user
- I need to:
- print an aged trial balance, with account number, name, dates of service and last statement
- include number of statements, last payment date and amount, current credits
- print separate aged trial balance for inpatient and outpatient
- sort the aged trial balance by patient last name, descending order of account balance, financial class, bill date, guarantor, age,
- compare aging trial balance in summary or at the detail level
- print aged trial balance summary with multiple aging categories, showing amounts and percentages
- user definable aging
- generate aging by activity date, due date, effective date etc
- manage dispute items
- generate guarantor aged trial balance
- generate doctor aged trial balance
1.3.6. Epic: Hospital administered schemes¶
This includes the like of internally managed staff schemes and employer credit schemes.
Note
- As a:
- billing administrator
- I need to:
- set up the following details for principal members:
- name
- gender
- age
- ID no / passport number
- contact details - address, telephone, email
- photo
- date of employment ( optional )
- payroll number
- division
- department
- cover limit
- entitlement
- exclusions
- auto-generated hospital patient number ( pre-registration )
- set up the following details for dependants:
- name
- gender
- age
- contact details i.e address, telephone number, email
- ID no / passport number
- photo
- auto-generated hospital patient number ( pre-registration )
add dependants
remove dependants
control validity / expiry
set cover limits, entitlements and exclusions
1.3.7. Epic: Corporate Schemes¶
Note
- As a:
- billing administrator
- I need to:
- open and close corporate accounts: each with a code, start date, end date
- auto-suspend corporate accounts on end date
- activate or inactivate corporate accounts
- define if an account uses a medical benefit management system e.g biometrics
- define the scope of cover: outpatient vs inpatient, maternity, optical, dental
- define max. credit limit
- warn the user if the credit limit is reached
- maintain exclusions
- manage services that need pre-authorization
- manage copay details: may be linked to specific benefits, and be amount or percentage
- manage contact persons
- attach reference documents
- list exclusions ( coded )
- define active, suspended, terminated entitlements, with dates
- define panel of doctors
- real time beneficiary database
- corporate basic details: name, addresses, email, contact person, internal account manager
- status management: active, inactive, pending, merged, unavailable
- define the scope of the contract: open ended or specified
- indicate bank guarantee and deposit status
- manage deposits
1.3.8. Epic: Billing setup¶
This includes price-list setup along with setup of prepaid schemes and capitation.
Note
- As a:
- billing administrator
- I need to:
- be able to set up a ‘charge master’ with all billable items
- be able to associate a single item with multiple codes e.g a billing code, a LOINC code for lab services, a drug code for a medication
- be able to package multiple items and services together as a single billing item ( package billing )
- be able to set up multiple prices with different effective times for each billable item
- create prepaid schemes - including setting up limits, members and dependants. Prepaid scheme beneficiaries are registered as patients.
- create capitation schemes - with limits, members and dependants Capitation scheme members are registered as patients.
Scheme and capitation setup will need to be a maker-checker process.
1.3.9. Epic: Managing consultants and locums¶
External doctors ( specialist and non specialist ) present special payment allocation challenges for hospitals.
Locum doctors need to be paid on a regular ( e.g monthly ) basis for service rendered and hours worked. External specialists often ‘pass their bills through’ the hospital.
Note
- As a:
- clinic or hospital manager
- I need to:
- enroll specialists into our panel
- enroll locum doctors ( who are paid by the hour and a fee for select services ) into our panel
- allocate payments to specialists - with those that derive from insurance being paid when the claims are paid and those that derive from cash billings being paid on a schedule
- compute and pay locum doctors dues on a schedule
- deduct the appropriate withholding taxes from all payments
- link specialists, locums and full-time resources to queues, workflows, rooms etc
- Because:
- the hospitals service delivery is influenced by the quality of the relationship with our doctors - both internal and external
These external doctors should also be ‘schedulable resources’.
1.3.10. Epic: Printing¶
It should be easy to print pixel perfect output e.g lab reports, even from tablets or phones. It should not involve the usual ‘download PDF, open PDF, print’ cycle, or the poor precision of in-browser printing. The implementers should evaluate Google Cloud Printing and similar solutions. The ‘printers’ in question might be very varied - from a departmental copy printer to a little label printer.
Note
- As a:
- user ( any user )
- I need to:
- be able to click ‘Print’ and print any transaction or output document that I have access to e.g a patient invoice or a patient’s visit summary
- be able to easily choose from a selection of printers
1.3.10.1. Scenario: Send a patient bill to the printer¶
Patient bills are some of the most frequently printed documents in a hospital setting.
Note
- Given:
- that I am logged in to the system
- And:
- I want to print a patient bill
- When:
- I click on an easy to locate print button / icon / control
- And:
- Select the printer from the pop over / pop up dialog that results
- Then:
- The document should be sent to the selected printer
- And:
- Print with the precision I expect / as it looks on the screen / with proper headers, page numbers etc
The ‘big deal’ here is the combination of pixel-perfect printing, mobility and simplicity. Stock browser printing does not cut it.