Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 5 Next »

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.552675

0.555544

99.9437

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'))

  • No labels