Versions Compared

Key

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

...

DHIS2

FHIR

DHIS2 vs FHIR %

Average

1.41642669

0.578393578819

5859.83584293

Test detailed results

logged on Nov 29/ 2022 UTC-7 0809:5216:00

Performance Testing for

Attempt

DHIS2 API

DHIS2 Size

FHIR API

FHIR Size

Improvement %

El Salvador

Attempt 1

1.

36212

37355

141

0.

593179

598687

500

56.

4517

4133

Attempt 2

1.

4038

3631

141

0.

569006

569395

500

59

58.

4668

228

Attempt 3

1.

4126

46057

141

0.

567176

595058

500

59.

8487

2586

Kenya

Attempt 1

1.

51748

43973

500

0.

582688

593388

500

61

58.

6017

7847

Attempt 2

1.

42406

43513

500

0.

575231

582957

500

59.

6061

3796

Attempt 3

1.

41624

48656

500

0.

559239

557877

500

60

62.

5125

4718

Nigeria

Attempt 1

1.

5021

50456

500

0.

59612

583583

500

60

61.

3143

2125

Attempt 2

1.

48585

50682

500

0.

56827

566507

500

61

62.

7545

4039

Attempt 3

1.

50549

47951

500

0.

569342

572773

500

62

61.

1824

2864

Cameroon

Attempt 1

1.

46494

49727

500

0.

58451

579295

500

60

61.

1

31

Attempt 2

1.

51499

57967

500

0.

608725

584989

500

59

62.

8198

9676

Attempt 3

1.

50646

47999

500

0.

558488

569686

500

62

61.

9271

5074

Nepal

Attempt 1

1.

11289

57151

12

0.

579574

587268

500

47

62.

9217

6305

Attempt 2

1.

41752

11562

12

0.

573164

565472

500

59

49.

5659

3134

Attempt 3

1.

19342

10675

12

0.

591184

575349

500

50

48.

4632

0143

Overall Average

1.

416

42669

0.

578393

578819

58

59.

8358

4293

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'])*100)
        case_result['improvement'] = 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'] = np.average(improvements)((case_result['dhis2'] - case_result['fhir'])/case_result['dhis2'])*100
case_results.append(case_result)
print(tabulate(case_results, headers='firstrow', tablefmt='pipe'))

...