Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(feat) HIE-9: Add MPI workflows to OpenMRS frontend #1397

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open

Conversation

reagan-meant
Copy link
Contributor

@reagan-meant reagan-meant commented Dec 4, 2024

Requirements

  • This PR has a title that briefly describes the work done including the ticket number. If there is a ticket, make sure your PR title includes a conventional commit label. See existing PR titles for inspiration.
  • My work conforms to the OpenMRS 3.0 Styleguide and design documentation.
  • My work includes tests or is validated by existing tests.

Summary

https://openmrs.atlassian.net/browse/HIE-9

Screenshots

Screen.Recording.2024-12-13.at.14.32.28.mov

Related Issue

See background conversation here

Other

Copy link
Contributor

github-actions bot commented Dec 10, 2024

Size Change: -170 kB (-2.28%)

Total Size: 7.28 MB

Filename Size Change
packages/esm-patient-registration-app/dist/697.js 0 B -71.6 kB (removed) 🏆
packages/esm-patient-search-app/dist/51.js 0 B -105 kB (removed) 🏆
ℹ️ View Unchanged
Filename Size Change
packages/esm-active-visits-app/dist/106.js 8.63 kB 0 B
packages/esm-active-visits-app/dist/130.js 396 kB 0 B
packages/esm-active-visits-app/dist/136.js 65.6 kB 0 B
packages/esm-active-visits-app/dist/233.js 3.37 kB 0 B
packages/esm-active-visits-app/dist/236.js 705 B 0 B
packages/esm-active-visits-app/dist/240.js 615 B 0 B
packages/esm-active-visits-app/dist/261.js 615 B 0 B
packages/esm-active-visits-app/dist/271.js 805 B 0 B
packages/esm-active-visits-app/dist/272.js 615 B 0 B
packages/esm-active-visits-app/dist/316.js 42.9 kB 0 B
packages/esm-active-visits-app/dist/319.js 735 B 0 B
packages/esm-active-visits-app/dist/323.js 920 B 0 B
packages/esm-active-visits-app/dist/325.js 3.09 kB 0 B
packages/esm-active-visits-app/dist/336.js 614 B 0 B
packages/esm-active-visits-app/dist/378.js 731 B 0 B
packages/esm-active-visits-app/dist/443.js 6.98 kB 0 B
packages/esm-active-visits-app/dist/460.js 817 B 0 B
packages/esm-active-visits-app/dist/539.js 613 B 0 B
packages/esm-active-visits-app/dist/566.js 717 B 0 B
packages/esm-active-visits-app/dist/574.js 615 B 0 B
packages/esm-active-visits-app/dist/579.js 614 B 0 B
packages/esm-active-visits-app/dist/6.js 28 kB 0 B
packages/esm-active-visits-app/dist/644.js 806 B 0 B
packages/esm-active-visits-app/dist/652.js 615 B 0 B
packages/esm-active-visits-app/dist/673.js 615 B 0 B
packages/esm-active-visits-app/dist/705.js 615 B 0 B
packages/esm-active-visits-app/dist/711.js 615 B 0 B
packages/esm-active-visits-app/dist/725.js 642 B 0 B
packages/esm-active-visits-app/dist/727.js 615 B 0 B
packages/esm-active-visits-app/dist/737.js 615 B 0 B
packages/esm-active-visits-app/dist/744.js 843 B 0 B
packages/esm-active-visits-app/dist/757.js 731 B 0 B
packages/esm-active-visits-app/dist/784.js 2.63 kB 0 B
packages/esm-active-visits-app/dist/788.js 628 B 0 B
packages/esm-active-visits-app/dist/807.js 959 B 0 B
packages/esm-active-visits-app/dist/814.js 3.04 kB 0 B
packages/esm-active-visits-app/dist/833.js 765 B 0 B
packages/esm-active-visits-app/dist/879.js 3.02 kB 0 B
packages/esm-active-visits-app/dist/899.js 611 B 0 B
packages/esm-active-visits-app/dist/901.js 614 B 0 B
packages/esm-active-visits-app/dist/962.js 807 B 0 B
packages/esm-active-visits-app/dist/967.js 611 B 0 B
packages/esm-active-visits-app/dist/main.js 96 kB 0 B
packages/esm-active-visits-app/dist/openmrs-esm-active-visits-app.js 3.5 kB 0 B
packages/esm-appointments-app/dist/130.js 396 kB 0 B
packages/esm-appointments-app/dist/1325.js 3.08 kB 0 B
packages/esm-appointments-app/dist/1644.js 2.36 kB 0 B
packages/esm-appointments-app/dist/1901.js 2.04 kB 0 B
packages/esm-appointments-app/dist/2.js 2.23 kB 0 B
packages/esm-appointments-app/dist/2111.js 10.6 kB 0 B
packages/esm-appointments-app/dist/2228.js 2.05 kB 0 B
packages/esm-appointments-app/dist/236.js 2.05 kB 0 B
packages/esm-appointments-app/dist/2757.js 2.44 kB 0 B
packages/esm-appointments-app/dist/2784.js 2.62 kB 0 B
packages/esm-appointments-app/dist/2923.js 2.55 kB 0 B
packages/esm-appointments-app/dist/3123.js 272 kB 0 B
packages/esm-appointments-app/dist/3372.js 2.57 kB 0 B
packages/esm-appointments-app/dist/3574.js 2.05 kB 0 B
packages/esm-appointments-app/dist/3581.js 9.03 kB 0 B
packages/esm-appointments-app/dist/3652.js 2.05 kB 0 B
packages/esm-appointments-app/dist/4272.js 2.04 kB 0 B
packages/esm-appointments-app/dist/4378.js 2.31 kB 0 B
packages/esm-appointments-app/dist/443.js 6.97 kB 0 B
packages/esm-appointments-app/dist/4460.js 2.49 kB 0 B
packages/esm-appointments-app/dist/4705.js 2.05 kB 0 B
packages/esm-appointments-app/dist/5171.js 224 B 0 B
packages/esm-appointments-app/dist/5240.js 2.04 kB 0 B
packages/esm-appointments-app/dist/529.js 866 B 0 B
packages/esm-appointments-app/dist/5336.js 2.04 kB 0 B
packages/esm-appointments-app/dist/539.js 2.05 kB 0 B
packages/esm-appointments-app/dist/5673.js 2.05 kB 0 B
packages/esm-appointments-app/dist/5711.js 129 kB 0 B
packages/esm-appointments-app/dist/5737.js 2.04 kB 0 B
packages/esm-appointments-app/dist/5833.js 2.36 kB 0 B
packages/esm-appointments-app/dist/5962.js 2.05 kB 0 B
packages/esm-appointments-app/dist/6566.js 2.32 kB 0 B
packages/esm-appointments-app/dist/6591.js 16.8 kB 0 B
packages/esm-appointments-app/dist/6727.js 2.04 kB 0 B
packages/esm-appointments-app/dist/744.js 2.58 kB 0 B
packages/esm-appointments-app/dist/7775.js 36.3 kB 0 B
packages/esm-appointments-app/dist/7807.js 2.67 kB 0 B
packages/esm-appointments-app/dist/8271.js 2.44 kB 0 B
packages/esm-appointments-app/dist/8319.js 2.31 kB 0 B
packages/esm-appointments-app/dist/8323.js 2.04 kB 0 B
packages/esm-appointments-app/dist/8788.js 2.04 kB 0 B
packages/esm-appointments-app/dist/899.js 2.04 kB 0 B
packages/esm-appointments-app/dist/9261.js 2.04 kB 0 B
packages/esm-appointments-app/dist/9269.js 7.66 kB 0 B
packages/esm-appointments-app/dist/9579.js 2.04 kB 0 B
packages/esm-appointments-app/dist/main.js 413 kB 0 B
packages/esm-appointments-app/dist/openmrs-esm-appointments-app.js 3.55 kB 0 B
packages/esm-bed-management-app/dist/130.js 396 kB 0 B
packages/esm-bed-management-app/dist/148.js 1.42 kB 0 B
packages/esm-bed-management-app/dist/236.js 793 B 0 B
packages/esm-bed-management-app/dist/240.js 793 B 0 B
packages/esm-bed-management-app/dist/261.js 794 B 0 B
packages/esm-bed-management-app/dist/271.js 793 B 0 B
packages/esm-bed-management-app/dist/272.js 794 B 0 B
packages/esm-bed-management-app/dist/288.js 51.1 kB 0 B
packages/esm-bed-management-app/dist/319.js 908 B 0 B
packages/esm-bed-management-app/dist/323.js 793 B 0 B
packages/esm-bed-management-app/dist/325.js 3.09 kB 0 B
packages/esm-bed-management-app/dist/336.js 794 B 0 B
packages/esm-bed-management-app/dist/378.js 937 B 0 B
packages/esm-bed-management-app/dist/443.js 6.97 kB 0 B
packages/esm-bed-management-app/dist/460.js 892 B 0 B
packages/esm-bed-management-app/dist/539.js 793 B 0 B
packages/esm-bed-management-app/dist/542.js 396 B 0 B
packages/esm-bed-management-app/dist/566.js 934 B 0 B
packages/esm-bed-management-app/dist/574.js 811 B 0 B
packages/esm-bed-management-app/dist/579.js 794 B 0 B
packages/esm-bed-management-app/dist/591.js 16.8 kB 0 B
packages/esm-bed-management-app/dist/644.js 973 B 0 B
packages/esm-bed-management-app/dist/652.js 794 B 0 B
packages/esm-bed-management-app/dist/673.js 795 B 0 B
packages/esm-bed-management-app/dist/705.js 794 B 0 B
packages/esm-bed-management-app/dist/711.js 794 B 0 B
packages/esm-bed-management-app/dist/727.js 794 B 0 B
packages/esm-bed-management-app/dist/737.js 794 B 0 B
packages/esm-bed-management-app/dist/744.js 1.01 kB 0 B
packages/esm-bed-management-app/dist/746.js 125 kB 0 B
packages/esm-bed-management-app/dist/757.js 939 B 0 B
packages/esm-bed-management-app/dist/768.js 26.5 kB 0 B
packages/esm-bed-management-app/dist/784.js 2.63 kB 0 B
packages/esm-bed-management-app/dist/788.js 793 B 0 B
packages/esm-bed-management-app/dist/807.js 793 B 0 B
packages/esm-bed-management-app/dist/833.js 957 B 0 B
packages/esm-bed-management-app/dist/899.js 792 B 0 B
packages/esm-bed-management-app/dist/901.js 792 B 0 B
packages/esm-bed-management-app/dist/962.js 794 B 0 B
packages/esm-bed-management-app/dist/main.js 4.24 kB 0 B
packages/esm-bed-management-app/dist/openmrs-esm-bed-management-app.js 3.42 kB 0 B
packages/esm-patient-list-management-app/dist/130.js 396 kB 0 B
packages/esm-patient-list-management-app/dist/233.js 3.38 kB 0 B
packages/esm-patient-list-management-app/dist/236.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/240.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/261.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/271.js 1.6 kB 0 B
packages/esm-patient-list-management-app/dist/272.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/319.js 1.52 kB 0 B
packages/esm-patient-list-management-app/dist/323.js 1.62 kB 0 B
packages/esm-patient-list-management-app/dist/325.js 3.09 kB 0 B
packages/esm-patient-list-management-app/dist/336.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/37.js 12.5 kB 0 B
packages/esm-patient-list-management-app/dist/378.js 1.55 kB 0 B
packages/esm-patient-list-management-app/dist/443.js 6.98 kB 0 B
packages/esm-patient-list-management-app/dist/460.js 1.71 kB 0 B
packages/esm-patient-list-management-app/dist/539.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/548.js 58.5 kB 0 B
packages/esm-patient-list-management-app/dist/566.js 1.54 kB 0 B
packages/esm-patient-list-management-app/dist/574.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/579.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/591.js 16.9 kB 0 B
packages/esm-patient-list-management-app/dist/644.js 1.58 kB 0 B
packages/esm-patient-list-management-app/dist/652.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/673.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/705.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/711.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/727.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/737.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/744.js 1.72 kB 0 B
packages/esm-patient-list-management-app/dist/757.js 1.64 kB 0 B
packages/esm-patient-list-management-app/dist/784.js 2.63 kB 0 B
packages/esm-patient-list-management-app/dist/788.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/807.js 1.83 kB 0 B
packages/esm-patient-list-management-app/dist/814.js 3.05 kB 0 B
packages/esm-patient-list-management-app/dist/833.js 1.6 kB 0 B
packages/esm-patient-list-management-app/dist/899.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/900.js 115 kB 0 B
packages/esm-patient-list-management-app/dist/901.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/962.js 1.34 kB 0 B
packages/esm-patient-list-management-app/dist/main.js 176 kB 0 B
packages/esm-patient-list-management-app/dist/openmrs-esm-patient-list-management-app.js 3.48 kB 0 B
packages/esm-patient-registration-app/dist/104.js 72.3 kB 0 B
packages/esm-patient-registration-app/dist/130.js 395 kB 0 B
packages/esm-patient-registration-app/dist/169.js 6.71 kB 0 B
packages/esm-patient-registration-app/dist/2.js 2.24 kB 0 B
packages/esm-patient-registration-app/dist/236.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/240.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/261.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/271.js 2.52 kB 0 B
packages/esm-patient-registration-app/dist/272.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/319.js 2.43 kB 0 B
packages/esm-patient-registration-app/dist/323.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/325.js 3.09 kB 0 B
packages/esm-patient-registration-app/dist/336.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/371.js 547 B 0 B
packages/esm-patient-registration-app/dist/372.js 2.57 kB 0 B
packages/esm-patient-registration-app/dist/378.js 2.38 kB 0 B
packages/esm-patient-registration-app/dist/46.js 133 kB 0 B
packages/esm-patient-registration-app/dist/460.js 2.52 kB 0 B
packages/esm-patient-registration-app/dist/501.js 7.03 kB 0 B
packages/esm-patient-registration-app/dist/539.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/566.js 2.47 kB 0 B
packages/esm-patient-registration-app/dist/574.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/579.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/591.js 16.8 kB 0 B
packages/esm-patient-registration-app/dist/623.js 1.28 kB 0 B
packages/esm-patient-registration-app/dist/644.js 2.48 kB 0 B
packages/esm-patient-registration-app/dist/652.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/657.js 1.21 kB 0 B
packages/esm-patient-registration-app/dist/673.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/705.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/711.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/727.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/737.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/744.js 2.58 kB 0 B
packages/esm-patient-registration-app/dist/757.js 2.55 kB 0 B
packages/esm-patient-registration-app/dist/784.js 2.63 kB 0 B
packages/esm-patient-registration-app/dist/788.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/807.js 2.74 kB 0 B
packages/esm-patient-registration-app/dist/833.js 2.4 kB 0 B
packages/esm-patient-registration-app/dist/879.js 3.03 kB 0 B
packages/esm-patient-registration-app/dist/899.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/901.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/962.js 2.12 kB 0 B
packages/esm-patient-registration-app/dist/main.js 206 kB +698 B (+0.34%)
packages/esm-patient-registration-app/dist/openmrs-esm-patient-registration-app.js 3.52 kB +1 B (+0.03%)
packages/esm-patient-search-app/dist/130.js 396 kB 0 B
packages/esm-patient-search-app/dist/133.js 108 kB 0 B
packages/esm-patient-search-app/dist/2.js 2.23 kB 0 B
packages/esm-patient-search-app/dist/233.js 3.37 kB 0 B
packages/esm-patient-search-app/dist/236.js 936 B 0 B
packages/esm-patient-search-app/dist/240.js 937 B 0 B
packages/esm-patient-search-app/dist/261.js 937 B 0 B
packages/esm-patient-search-app/dist/271.js 1.14 kB 0 B
packages/esm-patient-search-app/dist/272.js 937 B 0 B
packages/esm-patient-search-app/dist/319.js 1.07 kB 0 B
packages/esm-patient-search-app/dist/323.js 936 B 0 B
packages/esm-patient-search-app/dist/325.js 3.09 kB 0 B
packages/esm-patient-search-app/dist/336.js 936 B 0 B
packages/esm-patient-search-app/dist/372.js 2.57 kB 0 B
packages/esm-patient-search-app/dist/378.js 1.1 kB 0 B
packages/esm-patient-search-app/dist/443.js 6.98 kB 0 B
packages/esm-patient-search-app/dist/460.js 1.16 kB 0 B
packages/esm-patient-search-app/dist/539.js 935 B 0 B
packages/esm-patient-search-app/dist/566.js 1.09 kB 0 B
packages/esm-patient-search-app/dist/574.js 1 kB +63 B (+6.72%) 🔍
packages/esm-patient-search-app/dist/579.js 936 B 0 B
packages/esm-patient-search-app/dist/591.js 16.8 kB 0 B
packages/esm-patient-search-app/dist/644.js 1.17 kB 0 B
packages/esm-patient-search-app/dist/652.js 937 B 0 B
packages/esm-patient-search-app/dist/673.js 937 B 0 B
packages/esm-patient-search-app/dist/705.js 937 B 0 B
packages/esm-patient-search-app/dist/711.js 937 B 0 B
packages/esm-patient-search-app/dist/727.js 936 B 0 B
packages/esm-patient-search-app/dist/737.js 936 B 0 B
packages/esm-patient-search-app/dist/744.js 1.17 kB 0 B
packages/esm-patient-search-app/dist/750.js 62.5 kB +1.69 kB (+2.78%)
packages/esm-patient-search-app/dist/757.js 1.15 kB 0 B
packages/esm-patient-search-app/dist/784.js 2.63 kB 0 B
packages/esm-patient-search-app/dist/788.js 933 B 0 B
packages/esm-patient-search-app/dist/807.js 1.23 kB 0 B
packages/esm-patient-search-app/dist/814.js 3.05 kB 0 B
packages/esm-patient-search-app/dist/833.js 1.1 kB 0 B
packages/esm-patient-search-app/dist/899.js 933 B 0 B
packages/esm-patient-search-app/dist/901.js 935 B 0 B
packages/esm-patient-search-app/dist/962.js 937 B 0 B
packages/esm-patient-search-app/dist/main.js 172 kB +4.52 kB (+2.7%)
packages/esm-patient-search-app/dist/openmrs-esm-patient-search-app.js 3.51 kB +4 B (+0.11%)
packages/esm-service-queues-app/dist/1006.js 2.5 kB 0 B
packages/esm-service-queues-app/dist/1060.js 1.82 kB 0 B
packages/esm-service-queues-app/dist/130.js 396 kB 0 B
packages/esm-service-queues-app/dist/1325.js 3.09 kB 0 B
packages/esm-service-queues-app/dist/1644.js 3.57 kB 0 B
packages/esm-service-queues-app/dist/1727.js 8.62 kB 0 B
packages/esm-service-queues-app/dist/1800.js 2.42 kB 0 B
packages/esm-service-queues-app/dist/1901.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/2.js 2.23 kB 0 B
packages/esm-service-queues-app/dist/236.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/2757.js 3.73 kB 0 B
packages/esm-service-queues-app/dist/2760.js 7.68 kB 0 B
packages/esm-service-queues-app/dist/2784.js 2.62 kB 0 B
packages/esm-service-queues-app/dist/3199.js 1.36 kB 0 B
packages/esm-service-queues-app/dist/3372.js 2.57 kB 0 B
packages/esm-service-queues-app/dist/3574.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/3604.js 7.35 kB 0 B
packages/esm-service-queues-app/dist/3652.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/3760.js 23.5 kB 0 B
packages/esm-service-queues-app/dist/3818.js 2.56 kB 0 B
packages/esm-service-queues-app/dist/3828.js 1.38 kB 0 B
packages/esm-service-queues-app/dist/4272.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/4378.js 3.48 kB 0 B
packages/esm-service-queues-app/dist/443.js 6.98 kB 0 B
packages/esm-service-queues-app/dist/4460.js 3.77 kB 0 B
packages/esm-service-queues-app/dist/4705.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/4911.js 7.76 kB 0 B
packages/esm-service-queues-app/dist/5236.js 6.35 kB 0 B
packages/esm-service-queues-app/dist/5240.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/5282.js 9.5 kB 0 B
packages/esm-service-queues-app/dist/5336.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/539.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/5673.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/5711.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/5737.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/5833.js 3.56 kB 0 B
packages/esm-service-queues-app/dist/5962.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/6566.js 3.51 kB 0 B
packages/esm-service-queues-app/dist/6578.js 179 kB 0 B
packages/esm-service-queues-app/dist/6591.js 16.8 kB 0 B
packages/esm-service-queues-app/dist/6670.js 10.4 kB 0 B
packages/esm-service-queues-app/dist/6727.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/744.js 3.73 kB 0 B
packages/esm-service-queues-app/dist/752.js 2.37 kB 0 B
packages/esm-service-queues-app/dist/7807.js 4.02 kB 0 B
packages/esm-service-queues-app/dist/8271.js 3.63 kB 0 B
packages/esm-service-queues-app/dist/8319.js 3.43 kB 0 B
packages/esm-service-queues-app/dist/8323.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/8788.js 3.03 kB 0 B
packages/esm-service-queues-app/dist/899.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/9261.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/9392.js 8.22 kB 0 B
packages/esm-service-queues-app/dist/9579.js 3.01 kB 0 B
packages/esm-service-queues-app/dist/9993.js 97.1 kB 0 B
packages/esm-service-queues-app/dist/main.js 277 kB 0 B
packages/esm-service-queues-app/dist/openmrs-esm-service-queues-app.js 3.48 kB 0 B
packages/esm-ward-app/dist/109.js 349 B 0 B
packages/esm-ward-app/dist/124.js 3.2 kB 0 B
packages/esm-ward-app/dist/125.js 5.87 kB 0 B
packages/esm-ward-app/dist/126.js 9.69 kB 0 B
packages/esm-ward-app/dist/130.js 396 kB 0 B
packages/esm-ward-app/dist/146.js 2.13 kB 0 B
packages/esm-ward-app/dist/15.js 480 B 0 B
packages/esm-ward-app/dist/325.js 3.08 kB 0 B
packages/esm-ward-app/dist/348.js 349 B 0 B
packages/esm-ward-app/dist/362.js 476 B 0 B
packages/esm-ward-app/dist/372.js 2.56 kB 0 B
packages/esm-ward-app/dist/405.js 1.6 kB 0 B
packages/esm-ward-app/dist/443.js 6.97 kB 0 B
packages/esm-ward-app/dist/460.js 5 kB 0 B
packages/esm-ward-app/dist/471.js 6.94 kB 0 B
packages/esm-ward-app/dist/481.js 1.25 kB 0 B
packages/esm-ward-app/dist/53.js 12.2 kB 0 B
packages/esm-ward-app/dist/559.js 342 B 0 B
packages/esm-ward-app/dist/574.js 1.77 kB 0 B
packages/esm-ward-app/dist/576.js 6.04 kB 0 B
packages/esm-ward-app/dist/577.js 17.7 kB 0 B
packages/esm-ward-app/dist/591.js 16.8 kB 0 B
packages/esm-ward-app/dist/598.js 35.7 kB 0 B
packages/esm-ward-app/dist/649.js 2.51 kB 0 B
packages/esm-ward-app/dist/659.js 11.1 kB 0 B
packages/esm-ward-app/dist/717.js 1.85 kB 0 B
packages/esm-ward-app/dist/767.js 648 B 0 B
packages/esm-ward-app/dist/768.js 15 kB 0 B
packages/esm-ward-app/dist/784.js 2.62 kB 0 B
packages/esm-ward-app/dist/897.js 359 B 0 B
packages/esm-ward-app/dist/921.js 6.09 kB 0 B
packages/esm-ward-app/dist/922.js 9.01 kB 0 B
packages/esm-ward-app/dist/925.js 90.9 kB 0 B
packages/esm-ward-app/dist/940.js 21.4 kB 0 B
packages/esm-ward-app/dist/969.js 202 B 0 B
packages/esm-ward-app/dist/main.js 98.5 kB 0 B
packages/esm-ward-app/dist/openmrs-esm-ward-app.js 3.46 kB 0 B

compressed-size-action

@reagan-meant reagan-meant changed the title MPI Workflow (feat) HIE-9: Add MPI workflows to OpenMRS frontend Dec 13, 2024
Copy link
Member

@ibacher ibacher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @reagan-meant! A few comments on this overall.

Comment on lines 46 to 51
const { freeTextFieldConceptUuid, fieldConfigurations } = useConfig<RegistrationConfig>();
const { isLoading: isLoadingPatientToEdit, patient: patientToEdit } = usePatient(isLocal ? patientUuid : null);
const { isLoading: isLoadingMpiPatient, patient: mpiPatient } = useMpiPatient(!isLocal ? patientUuid : null);
const { data: deathInfo, isLoading: isLoadingDeathInfo } = useInitialPersonDeathInfo(isLocal ? patientUuid : null);
const { data: attributes, isLoading: isLoadingAttributes } = useInitialPersonAttributes(isLocal ? patientUuid : null);
const { data: identifiers, isLoading: isLoadingIdentifiers } = useInitialPatientIdentifiers(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like this hook would be better broken out into a useInitialFormValuesLocal(string) and useInitialFormValueMpi(string).


useEffect(() => {
const fetchValues = async () => {
//check that patient is not dead
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

???

isLocal,
]);

useEffect(() => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pattern feels off. This feels like it should be split into it's own hook or something an ultimately useSWR() if at all possible.

preferred: false,
address1: '',
})),
age: null,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have a birthdate, so we should be able to calculate the age. There's a helper for that in the framework.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ibacher this helper does not return a number.
Incompatible with our patient interface

Copy link
Member

@ibacher ibacher Dec 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see... Can we omit it? It's weird, because there's no reasonable numeric representation of "age", i.e., this probably shouldn't be a number at all.

Comment on lines 33 to 35
dead: fhirPatient.deceasedBoolean,
deathDate: fhirPatient.deceasedDateTime,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In FHIR, only one of these two properties will be set at any given time, so we need to be responsive to that. If deceasedBoolean is set, deceasedDateTime will be null and vice-versa. At the very least, if deceasedDateTime is non-null we can infer that the patient is deceased if the datetime is now or in the past.

Comment on lines 36 to 38
display: fhirPatient.name[0].text
? fhirPatient.name[0].text
: `${fhirPatient.name[0].family} ${fhirPatient.name[0].given[0]}`,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name format here probably needs to be templateable.

Suggested change
display: fhirPatient.name[0].text
? fhirPatient.name[0].text
: `${fhirPatient.name[0].family} ${fhirPatient.name[0].given[0]}`,
display: fhirPatient.name[0].text ??
`${fhirPatient.name[0].given[0]} ${fhirPatient.name[0].family}`,

import { type SearchedPatient } from '../types';
import { getCoreTranslation } from '@openmrs/esm-framework';
export function inferModeFromSearchParams(searchParams: URLSearchParams) {
return searchParams.get('mode')?.toLowerCase() === 'external' ? 'external' : 'internal';
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should probably be mpi and just no value, which can be interpretted as local or whatever.

@@ -43,6 +44,7 @@ const patientSearchCustomRepresentation = `custom:(${patientProperties.join(',')
*/
export function useInfinitePatientSearch(
searchQuery: string,
searchMode: string,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
searchMode: string,
searchMode: 'mpi' | null | undefined,

@@ -407,6 +517,186 @@ describe('Registering a new patient', () => {
});
});

describe('Import an MPI patient record', () => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ibacher Unfortunately, this test isn't providing much value at the moment. The issue seems to be that I'm unable to update the initially mocked values that are supposed to be updated via the useEffect hook.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a plan to make the test suite more useful?

Copy link
Member

@samuelmale samuelmale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice Regan! I've left a few comments.

@@ -351,6 +352,21 @@ export const esmPatientRegistrationSchema = {
},
},
},
identifier: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

identifierMappings reads better.

identifier: {
_type: Type.Array,
_elements: {
identifierTypeSystem: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fhirIdentifierSystem reads better.

_type: Type.String,
_description: 'Identifier system from the fhir server',
},
identifierTypeUuid: {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openmrsIdentifierTypeUuid would be more specific.

@@ -180,6 +188,64 @@ export function useInitialFormValues(patientUuid: string): [FormValues, Dispatch
return [initialFormValues, setInitialFormValues];
}

export function useInitialFormValueMpi(patientUuid: string): [FormValues, Dispatch<FormValues>] {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since it returns form values, let's rename this hook to something like: useMpiInitialFormValues or useFormValuesWithMpi or better.

/* const [sourceRecord, setSourceRecord ] = useState<string | undefined>()
useDefineAppContext<MPIContext>("sourceRecord", {
sourceRecord: sourceRecord
}); */

const handleCreatePatientRecord = (externalId: string) => {
//setSourceRecord(externalId);
navigate({
to: `${window.getOpenmrsSpaBase()}patient-registration?sourceRecord=${externalId}`,
});
};
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you plan on cleaning this up?

{isMPIPatient && (
<div>
<Tag className={styles.mpiTag} type="blue">
&#127760; {'MPI'}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this tag should be wrapped in a t(...) function to take advantage of translation overrides.

}

interface PatientSearchResultsProps {
searchResults: SearchedPatient[];
searchTerm: string;
searchMode?: 'mpi' | null | undefined;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be a binary type? Something like:

  searchMode?: 'local' | 'mpi'; 

And we default to local.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ibacher advised we go this route. See here
The default is local

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with either, but 'local' requires changing more things.

Copy link
Member

@samuelmale samuelmale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@reagan-meant, any idea why the E2E Tests job is failing?

}
})();

// eslint-disable-next-line react-hooks/exhaustive-deps
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would providing all the dependencies cause unnecessary rerenders?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normally in situations where we use this, it's a good idea to add a comment explaining what dependencies we're explicitly excluding.

})();

// eslint-disable-next-line react-hooks/exhaustive-deps
}, [mpiPatient, isLoadingMpiPatient]);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need isLoadingMpiPatient as a dependency or its ripple effect?

@@ -39,10 +39,14 @@ export const PatientRegistration: React.FC<PatientRegistrationProps> = ({ savePa
const config = useConfig() as RegistrationConfig;
const [target, setTarget] = useState<undefined | string>();
const { patientUuid: uuidOfPatientToEdit } = useParams();
const sourcePatientId = new URLSearchParams(search).get('sourceRecord');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ibacher While we could use the AppContext API, wouldn’t a query parameter be a reasonable fit for passing a patient ID? Or is the concern about exposing identifiers, particularly those from external registries? If that’s not the case, creating a context for this might feel overkill. What do you think?

setInitialFormValues(initialMPIFormValues);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [initialMPIFormValues, setInitialMPIFormValues]);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is setInitialMPIFormValues a necessary dependency?

@@ -407,6 +517,186 @@ describe('Registering a new patient', () => {
});
});

describe('Import an MPI patient record', () => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a plan to make the test suite more useful?

return [];
}
//Consider patient // https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-api/src/types/patient-resource.ts
const pts: Array<SearchedPatient> = [];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const pts: Array<SearchedPatient> = [];
const omrsPatients: Array<SearchedPatient> = [];

@reagan-meant
Copy link
Contributor Author

@samuelmale using the appcontext was failing here and so either way we need to be using this for the time being

}
})();

// eslint-disable-next-line react-hooks/exhaustive-deps
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normally in situations where we use this, it's a good idea to add a comment explaining what dependencies we're explicitly excluding.

export function getPhonePersonAttributeValueFromFhirPatient(patient: fhir.Patient) {
export async function getIdentifierFieldValuesFromFhirPatient(
patient: fhir.Patient,
identifierConfig,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have a type here of some sort right?

identifierConfig,
): Promise<{ [identifierFieldName: string]: PatientIdentifierValue }> {
const identifiers: FormValues['identifiers'] = {};
const promises: Promise<void>[] = [];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:

Suggested change
const promises: Promise<void>[] = [];
const promises: Array<Promise<void>> = [];

const promises: Promise<void>[] = [];

for (const identifier of patient.identifier) {
for (const config of identifierConfig) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than two nested for loops, it seems like it would make sense to loop through the identifierConfig once and create an object that keyed from fhirIdentifierSystem to the config object associated with it. That way, we loop through it once and the lookup from identifier -> identifierConfig is an O(1) operation.

if (!response.data?.name) {
return;
}
identifiers[response.data.name] = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the assumptions we're making here about the OpenMRS identifiers MPI identifiers correspond to need to be documented, i.e., I'm not always sure that preferred : false is the correct behaviour.

@@ -39,10 +39,14 @@ export const PatientRegistration: React.FC<PatientRegistrationProps> = ({ savePa
const config = useConfig() as RegistrationConfig;
const [target, setTarget] = useState<undefined | string>();
const { patientUuid: uuidOfPatientToEdit } = useParams();
const sourcePatientId = new URLSearchParams(search).get('sourceRecord');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samuelmale I'm more concerned with the user winding up in a weird state when they, e.g., submit a patient registration and then click the Back button or something similar. But maybe that's silly?

}

interface PatientSearchResultsProps {
searchResults: SearchedPatient[];
searchTerm: string;
searchMode?: 'mpi' | null | undefined;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with either, but 'local' requires changing more things.

@samuelmale
Copy link
Member

I'm more concerned with the user winding up in a weird state when they, e.g., submit a patient registration and then click the Back button or something similar. But maybe that's silly?

@ibacher that makes a lot of sense!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants