Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functional and non-functional requirements (#25) #8

Merged
merged 1 commit into from
Jul 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 153 additions & 0 deletions input/fsh/requirements/HIV.A.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
Instance: HIV.A.Registration
InstanceOf: Requirements
Title: "Registration"
Description: "Functional Requirements For Registration"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.001"
* requirement = """
As a Health worker or data entry clerk
I want to ensure that the privacy and confidentiality of clients are assured
So that clients’ rights and safety are protected and the facility is in compliance with any relevant international or local data protection policies
"""
* statement[+]
* key = "HIV.FXNREQ.002"
* requirement = """
As a Health worker or data entry clerk
I want to search to see whether client is already in the system
So that I can check whether this is a new or existing client
"""
* statement[+]
* key = "HIV.FXNREQ.003"
* requirement = """
As a Health worker or data entry clerk
I want the system to require me (a user) to search to see whether a client is already in the system prior to starting a new medical record entry
So that I can confirm that it is the correct client and update information as necessary
"""
* statement[+]
* key = "HIV.FXNREQ.004"
* requirement = """
As a Health worker or data entry clerk
I want the system to be able to work offline
So that I can carry on care service provision regardless of internet connection. Once the system goes back online, the data is synchronized with the central system
"""
* statement[+]
* key = "HIV.FXNREQ.005"
* requirement = """
As a Health worker or data entry clerk
I want to provide sufficient data to rule out the possibility that this client is already in the system
So that I can avoid duplicates
"""
* statement[+]
* key = "HIV.FXNREQ.006"
* requirement = """
As a Health worker or data entry clerk
I want to enter a temporary identification in situations when full identity unknown
So that I can proceed with registration
"""
* statement[+]
* key = "HIV.FXNREQ.007"
* requirement = """
As a Health worker or data entry clerk
I want to edit fields on screen before information is committed
So that I can ensure information has been checked before submission
"""
* statement[+]
* key = "HIV.FXNREQ.008"
* requirement = """
As a Health worker or data entry clerk
I want to generate encounter number for contact
So that I can initiate the required care services
"""
* statement[+]
* key = "HIV.FXNREQ.009"
* requirement = """
As a Health worker or data entry clerk
I want to generate or associate to existing facility medical record number
So that I can check and confirm the information
"""
* statement[+]
* key = "HIV.FXNREQ.010"
* requirement = """
As a Health worker or data entry clerk
I want to record if a client consents to follow-up
So that the client’s privacy regarding follow-up is protected
"""
* statement[+]
* key = "HIV.FXNREQ.011"
* requirement = """
As a Health worker or data entry clerk
I want to update the type of setting where care is being provided (in the community or facility)
So that I can track where and in what settings cases are being identified (used for indicator HTS.2 HTS test volume and positivity)
"""
* statement[+]
* key = "HIV.FXNREQ.012"
* requirement = """
As a Health worker or data entry clerk
I want to be able to flag when a client wishes to be contacted with a reminder
So that the client can be better supported to remain in care.
"""
* statement[+]
* key = "HIV.FXNREQ.013"
* requirement = """
As a Programme manager
I want to ensure the system prompts the health worker to get informed consent from the client
So that jurisdictional requirements are adhered to and clients’ rights are protected
"""
* statement[+]
* key = "HIV.FXNREQ.014"
* requirement = """
As a Health worker or data entry clerk
I want to be able to update demographic information
So that the most current information on client can be recorded
"""
* statement[+]
* key = "HIV.FXNREQ.015"
* requirement = """
As a Health worker or data entry clerk
I want to retain previous history of updated information
So that I can review past information
"""
* statement[+]
* key = "HIV.FXNREQ.016"
* requirement = """
As a Health worker or data entry clerk
I want , if this is a returning contact, to add the information to their previous contact
So that I can link the information across different contacts
"""
* statement[+]
* key = "HIV.FXNREQ.017"
* requirement = """
As a Health worker or data entry clerk
I want to be able to update the client history from client-held records
So that the clients' history of HIV care can be available when they go to other facilities (for example, transfer, hospital, TB clinic) if history or transfer information is not available from past facilities directly.
"""
* statement[+]
* key = "HIV.FXNREQ.018"
* requirement = """
As a Health worker or data entry clerk
I want to record a time-and-date-stamped new contact (encounter)
So that I can confirm when the client came
"""
* statement[+]
* key = "HIV.FXNREQ.019"
* requirement = """
As a Health worker or data entry clerk
I want to be able to attach a unique identifier (without using name, address, or other personal information) to the client's record based on national standards consent
So that I have additional ways of identifying client.
"""
* statement[+]
* key = "HIV.FXNREQ.020"
* requirement = """
As a Health worker
I want to have the ability to “check in” a client for a scheduled contact
So that I can initiate services at client contact
"""
* statement[+]
* key = "HIV.FXNREQ.021"
* requirement = """
As a Health worker or data entry clerk
I want to provide a list or roster of all clients due to arrive
So that I know which clients to follow-up or are due for services
"""
97 changes: 97 additions & 0 deletions input/fsh/requirements/HIV.B.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Instance: HIV.B.HIVtestingservices
InstanceOf: Requirements
Title: "HIV testing services"
Description: "Functional Requirements For HIV testing services"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.022"
* requirement = """
As a Health worker
I want to identify the date of the last attended contact
So that I can ensure the client is receiving services according to recommended schedule
"""
* statement[+]
* key = "HIV.FXNREQ.023"
* requirement = """
As a Health worker
I want the system to highlight abnormal values
So that I can identify critical health issues or errors (if a data-entry issue)
"""
* statement[+]
* key = "HIV.FXNREQ.024"
* requirement = """
As a Health worker
I want to see which clinical staging conditions or symptoms the client has already experienced
So that the information may be used to help classify the client’s HIV disease severity.
"""
* statement[+]
* key = "HIV.FXNREQ.025"
* requirement = """
As a Health worker
I want the system to provide real-time range checks and integrity checks on data
So that I can ensure entry of accurate information and reduce errors
"""
* statement[+]
* key = "HIV.FXNREQ.026"
* requirement = """
As a Health worker or data entry clerk
I want to record the HIV status of partners or family members of clients, with proper consent
So that I can provide specialized care (for example, in serodiscordant couples)
"""
* statement[+]
* key = "HIV.FXNREQ.027"
* requirement = """
As a Health worker
I want to review past medical history previously entered
So that I can provide appropriate services according to the latest clinical protocols
"""
* statement[+]
* key = "HIV.FXNREQ.028"
* requirement = """
As a Health worker or data entry clerk
I want to have different question and language prompts when clients are from different populations
So that I can better support populations such as adolescents, paediatric clients and caregivers and their unique needs.
"""
* statement[+]
* key = "HIV.FXNREQ.029"
* requirement = """
As a Health worker
I want a list of tests that I (the health worker) can order
So that I can provide appropriate services according to the latest clinical protocols
"""
* statement[+]
* key = "HIV.FXNREQ.030"
* requirement = """
As a Health worker
I want to print a requisition for lab tests, which includes required information for performing the test
So that I can provide the client with list of test required
"""
* statement[+]
* key = "HIV.FXNREQ.031"
* requirement = """
As a Health worker
I want the system to suggest appropriate treatments/investigations based on data entered
So that I can provide appropriate services according to the latest clinical protocols
"""
* statement[+]
* key = "HIV.FXNREQ.032"
* requirement = """
As a Health worker
I want to see where I can refer clients for specialized counselling that I’m not qualified to provide
So that I can direct clients to where they can get the confidential and sensitive support they need
"""
* statement[+]
* key = "HIV.FXNREQ.033"
* requirement = """
As a Health worker
I want to see a schedule of available days
So that I can notify the client when to return for subsequent contact
"""
* statement[+]
* key = "HIV.FXNREQ.034"
* requirement = """
As a Health worker
I want to have the system automatically calculate the date when the client should return for care based on, for example, risk, prevalence or clinical stability
So that I do not have to calculate this myself
"""
41 changes: 41 additions & 0 deletions input/fsh/requirements/HIV.C.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Instance: HIV.C.PrEPvisit
InstanceOf: Requirements
Title: "PrEP visit"
Description: "Functional Requirements For PrEP visit"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.035"
* requirement = """
As a Health worker
I want to be prompted to ask about conditions which would exclude a client from certain services
So that clients are not provided with services that may not be safe for them
"""
* statement[+]
* key = "HIV.FXNREQ.036"
* requirement = """
As a Health worker
I want to log the reason a client is not medically eligible for a method
So that the next provider has this information, client safety is better protected, and on a future visit it is easier to check whether a client is now eligible
"""
* statement[+]
* key = "HIV.FXNREQ.037"
* requirement = """
As a Health worker
I want to be alerted if a client was previously not eligible for a method
So that I do not have to search through records, given I have limited time
"""
* statement[+]
* key = "HIV.FXNREQ.038"
* requirement = """
As a Health worker
I want to have flexibility to perform screenings and clinical activities based on my clinical judgment
So that I can screen clients for recommended, desirable or other tests in an efficient way
"""
* statement[+]
* key = "HIV.FXNREQ.039"
* requirement = """
As a Health worker
I want to be able to input custom schedules to allow for contacts on specific days and times, account for holidays, etc
So that I can inform the client of their next contact
"""
48 changes: 48 additions & 0 deletions input/fsh/requirements/HIV.D.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Instance: HIV.D.Careandtreatmentclinicalvisit
InstanceOf: Requirements
Title: "Care and treatment clinical visit"
Description: "Functional Requirements For Care and treatment clinical visit"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.040"
* requirement = """
As a Health worker
I want to have access to clients’ ART history in one place
So that I can support clients with adherence and ensure their regimens are working.
"""
* statement[+]
* key = "HIV.FXNREQ.041"
* requirement = """
As a Health worker
I want to have access to key test results in one place, such as viral load and CD4 counts
So that I can better monitor how a client is responding to treatment.
"""
* statement[+]
* key = "HIV.FXNREQ.042"
* requirement = """
As a Health worker
I want to see which criteria in the decision logic was met to indicate possible treatment failure
So that I can review additional criteria not in the digital record and make a clinical judgment
"""
* statement[+]
* key = "HIV.FXNREQ.043"
* requirement = """
As a Health worker
I want to be able to expedite diagnostic orders
So that clients who may have urgent care needs can be identified, such as infants with HIV
"""
* statement[+]
* key = "HIV.FXNREQ.044"
* requirement = """
As a Health worker
I want to have additional screenings and diagnostics recommended based on the medications the client is being prescribed
So that the necessary screenings and diagnostics are identified during the visit.
"""
* statement[+]
* key = "HIV.FXNREQ.045"
* requirement = """
As a Health worker
I want the system to provide context-sensitive, real-time decision support in response to entry of clinical data (alerts, advice, resources)
So that I can provide appropriate services according to the latest clinical protocols
"""
13 changes: 13 additions & 0 deletions input/fsh/requirements/HIV.G.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Instance: HIV.G.Diagnostics
InstanceOf: Requirements
Title: "Diagnostics"
Description: "Functional Requirements For Diagnostics"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.046"
* requirement = """
As a Health worker
I want the system to be capable to receive diagnosis test results from laboratories or other test centers
So that I can have a faster patient follow-up
"""
27 changes: 27 additions & 0 deletions input/fsh/requirements/HIV.H.fsh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Instance: HIV.H.Followingupandcontactingclients
InstanceOf: Requirements
Title: "Following up and contacting clients"
Description: "Functional Requirements For Following up and contacting clients"
Usage: #example
* status = #active
* statement[+]
* key = "HIV.FXNREQ.047"
* requirement = """
As a Health worker or data entry clerk
I want to provide a list of scheduled contact dates to allow for defaulters to be traced
So that I can track and follow-up clients requiring services
"""
* statement[+]
* key = "HIV.FXNREQ.048"
* requirement = """
As a Facility or community staff member
I want to be able to identify clients who tested positive for HIV but have not linked to care
So that I can follow up with clients who have not initiated care or may not have received confirmatory testing.
"""
* statement[+]
* key = "HIV.FXNREQ.049"
* requirement = """
As a Facility or community staff member
I want to record when a client who self-reported as transferring is confirmed to have transferred
So that I can better identify patients that are truly lost to follow-up.
"""
Loading
Loading