Location search based on country (iso2 or Name)
In location API, tried to load 500 outlets in the country by (iso2)
URL: https://replica.psi-mis.org/locator/api/1?iso2={country ISO}&number=500
Similarly, in FHIR, we tried to load 500 locations in that country and measured the time taken to get the response back.
URL: https://fhir-dev.psi-mis.org/fhir?address-country={country_name}&_count=500
Summary of test results
DHIS2 | FHIR | DHIS2 vs FHIR % | ||
---|---|---|---|---|
Average | 0.552877 | 0.552823 | 100.846 |
Test detailed results
logged on Nov 22/ 2022 UTC-7 20:50:00
Performance Testing for | Attempt | DHIS2 API | FHIR API | FHIR API (with HealthcareServices), | Improvement ( % ) |
---|---|---|---|---|---|
El Salvador | Attempt - 1 | 0.519389 | 0.440304 | 0.469497 | 117.961 |
Attempt - 2 | 0.529713 | 0.477896 | 0.511702 | 110.843 | |
Attempt - 3 | 0.531602 | 0.471425 | 0.494385 | 112.765 | |
Average | 0.526901 | 0.463208 | 0.491861 | 113.856 | |
Kenya | Attempt - 1 | 0.671807 | 0.54995 | 0.676148 | 122.158 |
Attempt - 2 | 0.659882 | 0.565902 | 0.646831 | 116.607 | |
Attempt - 3 | 0.675049 | 0.582467 | 0.673331 | 115.895 | |
Average | 0.668913 | 0.566106 | 0.665437 | 118.22 | |
Nigeria | Attempt - 1 | 0.543742 | 0.573266 | 0.683242 | 94.8499 |
Attempt - 2 | 0.52637 | 0.569232 | 0.745541 | 92.4702 | |
Attempt - 3 | 0.541472 | 0.608343 | 0.790074 | 89.0077 | |
Average | 0.537195 | 0.583614 | 0.739619 | 92.1092 | |
Cameroon | Attempt - 1 | 0.376211 | 0.561858 | 0.652159 | 66.9584 |
Attempt - 2 | 0.37443 | 0.599746 | 0.79305 | 62.4314 | |
Attempt - 3 | 0.360255 | 0.587638 | 0.671873 | 61.3056 | |
Average | 0.370299 | 0.583081 | 0.705694 | 63.5651 | |
Nepal | Attempt - 1 | 0.660437 | 0.549037 | 0.654779 | 120.29 |
Attempt - 2 | 0.655759 | 0.559969 | 0.826436 | 117.106 | |
Attempt - 3 | 0.667043 | 0.595319 | 0.671326 | 112.048 | |
Average | 0.66108 | 0.568108 | 0.717514 | 116.481 | |
Overall Average | 0.552877 | 0.552823 | 0.664025 | 100.846 |
Testing Script
##Case 1 case_1_results = [{"description": "Performance Testing for", "attempt": "Attempt", "dhis2": "DHIS2 API", "fhir": "FHIR API", "fhir_with_healthcareServices": "FHIR API (with HealthcareServices),", "improvement":"Improvement %"}] print("Case #1 - Getting 500 orgUnits/Location in the country (by ISO)") dhis2_overall_average = 0 fhir_overall_average = 0 fhir_hcs_overall_average = 0 improvement_overall = 0 for country in countries: dhis2_section_sum = 0 fhir_section_sum = 0 fhir_hcs_section_sum = 0 improvement_section_sum = 0 for i in range(1,4): case_1_result = {} if i == 1: case_1_result['description'] = "{}".format(country['name']) case_1_result['attempt'] = "Attempt - {}".format(i) dhis2_url = dhis2_base_url+'iso2={}&number=500'.format(country['code']) result = requests.get(dhis2_url, auth=dhis2_auth) if result.status_code == 200: case_1_result['dhis2'] = result.elapsed.total_seconds() request_url = fhir_location_url+'address-country={}&_count=500'.format(country['name']) fhirResult = requests.get(request_url, auth=fhir_auth) if fhirResult.status_code == 200: case_1_result['fhir'] = fhirResult.elapsed.total_seconds() request_healthcare_url = fhir_location_url+'address-country={}&_count=500&_revinclude=HealthcareService:location'.format(country['name']) fhirHealthcareServicesResult = requests.get(request_healthcare_url, auth=fhir_auth) if fhirHealthcareServicesResult.status_code == 200: case_1_result['fhir_with_healthcareServices'] = fhirHealthcareServicesResult.elapsed.total_seconds() case_1_result['improvement'] = (case_1_result['dhis2'] / case_1_result['fhir'])*100 case_1_results.append(case_1_result) dhis2_section_sum += case_1_result['dhis2'] fhir_section_sum += case_1_result['fhir'] fhir_hcs_section_sum += case_1_result['fhir_with_healthcareServices'] improvement_section_sum += case_1_result['improvement'] time.sleep(1) case_1_result = {} case_1_result['attempt'] = "Average" case_1_result['dhis2'] = dhis2_section_sum / 3 case_1_result['fhir'] = fhir_section_sum / 3 case_1_result['fhir_with_healthcareServices'] = fhir_hcs_section_sum / 3 case_1_result['improvement'] = improvement_section_sum / 3 case_1_results.append(case_1_result) dhis2_overall_average += dhis2_section_sum / 3 fhir_overall_average += fhir_section_sum / 3 fhir_hcs_overall_average += fhir_hcs_section_sum / 3 improvement_overall += improvement_section_sum / 3 case_1_result = {} case_1_result['description'] = "Overall Average" case_1_result['dhis2'] = dhis2_overall_average / nos_countries case_1_result['fhir'] = fhir_overall_average / nos_countries case_1_result['fhir_with_healthcareServices'] = fhir_hcs_overall_average / nos_countries case_1_result['improvement'] = improvement_overall / nos_countries case_1_results.append(case_1_result) print(tabulate(case_1_results, headers='firstrow', tablefmt='fancy_grid'))