Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

DHIS2

FHIR

DHIS2 vs FHIR %

Average

1.42669 41292

0.578819583782

59142.429303%

Test detailed results

logged on Nov 29Dec 1/ 2022 UTC-7 09:1604:00

Performance Testing for

Attempt

DHIS2 API

DHIS2 Size

FHIR API

FHIR Size

Improvement %

El Salvador

Attempt 1

1.

37355

41727

141

0.

598687

65739

500

56

115.

4133

59%

Attempt 2

1.

3631

39867

141

0.

569395

574834

500

58

143.

228

32%

Attempt 3

1.

46057

382

141

0.

595058

568845

500

59

142.

2586

95%

Kenya

Attempt 1

1.

43973

43245

500

0.

593388

598346

500

58

139.

7847

4%

Attempt 2

1.

43513

43526

500

0.

582957

581445

500

59

146.

3796

84%

Attempt 3

1.

48656

49501

500

0.

557877

569503

500

62

162.

4718

51%

Nigeria

Attempt 1

1.

50456

51636

500

0.

583583

582592

500

61

160.

2125

28%

Attempt 2

1.

50682

48614

500

0.

566507

613181

500

62

142.

4039

37%

Attempt 3

1.

47951

63908

500

0.

572773

567279

500

61

188.

2864

94%

Cameroon

Attempt 1

1.

49727

69394

500

0.

579295

591673

500

61

186.

31

3%

Attempt 2

1.

57967

47116

500

0.

584989

563599

500

62

161.

9676

03%

Attempt 3

1.

47999

49798

500

0.

569686

566068

500

61

164.

5074

63%

Nepal

Attempt 1

1.

57151

11843

12

0.

587268

59532

500

62

87.

6305

87%

Attempt 2

1.

11562

10475

12

0.

565472

567694

500

49

94.

3134

6%

Attempt 3

1.

10675

10523

12

0.

575349

558964

500

48

97.

0143

73%

Overall Average

1.

42669

41292

0.

578819

583782

59

142.

4293

03%

Testing Script

Code Block
breakoutModewide
languagepy
case_results = [{"description": "Performance Testing for", "attempt": "Attempt", "dhis2": "DHIS2 API", "dhis2_size": "DHIS2 Size", "fhir": "FHIR API", "fhir_size": "FHIR Size", "improvement": "Improvement %"}]
print("Case #2 - Getting 500 orgUnits/Location 100km around the provided coordinates")
improvements = []
dhis2_performances = []
fhir_performances = []
for country in countries:
    for i in range(1,4):
        case_result = {}
        if i == 1:
            case_result['description'] = "{}".format(country['name'])
        case_result['attempt'] = "Attempt {}".format(i)
        dhis2_url = dhis2_base_url+'n=500&c={},{}&d=1000000'.format(country['latitude'], country['longitude'])
        result = requests.get(dhis2_url, auth=dhis2_auth)
        if result.status_code == 200:
            data = result.json()
            dhis2_performances.append(result.elapsed.total_seconds())
            case_result['dhis2'] = dhis2_performances[-1]
            case_result['dhis2_size'] = len(data['outlet'])
        
        request_url = fhir_location_url+'near={}|{}|10000|km&_count=500'.format(country['latitude'], country['longitude'])
        fhirResult = requests.get(request_url, auth=fhir_auth)
        if fhirResult.status_code == 200:
            fhir_data = fhirResult.json()
            fhir_performances.append(fhirResult.elapsed.total_seconds())
            case_result['fhir'] = fhir_performances[-1]
            case_result['fhir_size'] = len(fhir_data['entry']) if 'entry' in fhir_data else 0
        
        improvements.append(((case_result['dhis2'] - /case_result['fhir'])/case_result['dhis2']-1)*100)
        case_result['improvement'] = '{}%'.format(float("{:.2f}".format(improvements[-1])))
        case_results.append(case_result)
        time.sleep(0.01)

case_result = {}
case_result['description'] = "Overall Average"
case_result['dhis2'] = np.average(dhis2_performances)
case_result['fhir'] = np.average(fhir_performances)
case_result['improvement'] = '{}%'.format(float("{:.2f}".format(((case_result['dhis2'] - /case_result['fhir'])/case_result['dhis2']-1)*100)))
case_results.append(case_result)
print(tabulate(case_results, headers='firstrow', tablefmt='pipe'))

...