Open Rkareko opened 2 weeks ago
@Mstjamush Test data is needed for validation of the reported issues.
@Rkareko Please provide the following
Performance improvements when loading a profile. We have identified potential fixes for this
Performance improvements for search.
The proposed solution is to move the search from the current implementation that uses rules to search against data loaded into the register paging source. The search would be moved to the db level.
The use of dynamic queries significantly improves the search time. The limitation here is that the SDK does not provide a way to specify complex operations e.g search for Patients that are active AND ( Patients whose name contains the search term OR Patients whose identifier is equal to the search term)
. There is a requirement for the search bar to support search by either patient name or patient identifier (QR code, PHN e.t.c)
The following are proposed solutions
Enhance the SDK search functionality to support complex search operations such as Patients that are active AND ( Patients whose name contains the search term OR Patients whose identifier is equal to the search term)
. A Call has been schedule to discuss this with the SDK team on Tuesday 22nd October.
Pros
Cons
Implement a custom search param that will extract all the required items i.e Patient.name
, Patient.identifier
into the StringIndexEntity
table. Then define a data query that will search for either the patient name or patient identifier in the newly defined custom search parameter (patient
for this instance)
The following image shows how the items would be indexed. The index name used is patient
(A more appropriate name is required)
The data query would be as follows
"dataQueries": [
{
"paramName": "patient",
"filterCriteria": [
{
"dataType": "STRING",
"modifier": "CONTAINS",
"dataFilterLinkId": "name-search-query"
}
]
}
]
Pros
Cons
StringIndexEntity
table@Rkareko Based on the project timelines, I would be okay with option 2 since it has less LOE.
@pld we will need time to update this to use Option 1 which is more scalable
@Rkareko I have made the following observations when doing performance testing on the qa apk
@Rkareko Based on the project timelines, I would be okay with option 2 since it has less LOE.
@pld we will need time to update this to use Option 1 which is more scalable
I am happy with that
Apk Version - opensrp-dc-fhir-qa-performance_improvements.apk
Number of patients - 7783
@Rkareko I have made the following observations today
Describe the issue to be researched Investigate way to fix performance issues reported following UAT done for WDF
Context The following is the resource breakdown for the data used for the UAT Total: 129037 Resources Patients: 1927 Resources QuestionnaireResponse: 1927 Observation: 29977 Flag: 15377 Condition: 2562 Appointment: 1740 Task: 542 Encounter: 74985
Phone details i.e make, model, Android OS version and RAM We have the following two models
Issues reported (by the client)