Versions Compared

Key

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

...

DHIS2

FHIR

DHIS2 vs FHIR %

Average

1.44465416

0.579129578393

24958.5468358

Test detailed results

logged on Nov 2229/ 2022 UTC-7 2108:2352:00

Performance Testing for

Attempt

DHIS2 API

DHIS2 Size

FHIR API

FHIR Size

Improvement

(

%

)

El Salvador

Attempt 1

1.

40366

36212

141

0.

595705

593179

500

235

56.

63

4517

Attempt 2

1.

36264

4038

141

0.

548285

569006

500

248

59.

527

4668

Attempt 3

1.

38555

4126

141

0.

58621

567176

500

236

59.

356

8487

Kenya

Attempt 1

1.

45908

51748

500

0.

592059

582688

500

246

61.

441

6017

Attempt 2

1.

42916

42406

500

0.

571586

575231

500

250

59.

034

6061

Attempt 3

1.

42113

41624

500

0.

602623

559239

500

235

60.

824

5125

Nigeria

Attempt 1

1.

47467

5021

500

0.

596982

59612

500

247

60.

022

3143

Attempt 2

1.

51453

48585

500

0.

564565

56827

500

268

61.

266

7545

Attempt 3

1.

50846

50549

500

0.

564294

569342

500

267

62.

318

1824

Cameroon

Attempt 1

1.

50968

46494

500

0.

580445

58451

500

260

60.

091

1

Attempt 2

1.

66286

51499

500

0.

563667

608725

500

295

59.

008

8198

Attempt 3

1.

72107

50646

500

0.

591113

558488

500

291

62.

158

9271

Nepal

Attempt 1

1.

34875

11289

12

0.

600613

579574

500

224

47.

562

9217

Attempt 2

1.

0993

41752

12

0.

558992

573164

500

196

59.

658

5659

Attempt 3

1.

36921

19342

12

0.

569797

591184

500

240

50.

298

4632

Overall Average

1.

44465

416

0.

579129

578393

249

58.

546

8358

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_performances[-1]/fhir_performances[-1'] - 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_results.append(case_result)
print(tabulate(case_results, headers='firstrow', tablefmt='htmlpipe'))