Skip to content

Commit 11751d8

Browse files
authored
Merge pull request #5299 from nhsuk/patient-import-flow-chart
Add patient import flow chart
2 parents 36e5925 + 31f3357 commit 11751d8

1 file changed

Lines changed: 155 additions & 0 deletions

File tree

docs/patient-import-flow-chart.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# Patient Import Flow Chart
2+
3+
This is the flow chart for patient imports are performed, including the new review phases.
4+
5+
```mermaid
6+
---
7+
title: Class Imports
8+
---
9+
flowchart TB
10+
11+
classDef status_change stroke:#004,fill:#eef
12+
classDef import_status_change stroke:#400,fill:#fee
13+
14+
subgraph "Patient Changeset States"
15+
direction TB
16+
17+
changeset_statuses_pending[pending]:::status_change
18+
changeset_statuses_calculating_review[calculating_review]:::status_change
19+
changeset_statuses_ready_for_review[ready_for_review]:::status_change
20+
changeset_statuses_committing[committing]:::status_change
21+
changeset_statuses_needs_re_review[needs_re_review]:::status_change
22+
changeset_statuses_processed[processed]:::status_change
23+
changeset_statuses_import_invalid[import_invalid]:::status_change
24+
25+
changeset_statuses_pending --> changeset_statuses_calculating_review
26+
changeset_statuses_calculating_review --> changeset_statuses_ready_for_review
27+
changeset_statuses_calculating_review --> changeset_statuses_import_invalid
28+
changeset_statuses_ready_for_review --> changeset_statuses_committing
29+
changeset_statuses_committing --> changeset_statuses_processed
30+
changeset_statuses_committing --> changeset_statuses_needs_re_review
31+
changeset_statuses_needs_re_review --> changeset_statuses_calculating_review
32+
changeset_statuses_processed --> changeset_statuses_calculating_review
33+
end
34+
35+
user --> create
36+
user --> approve
37+
38+
subgraph ClassImportController
39+
set_status_to_pending:::status_change
40+
create_changesets["create changesets"]
41+
set_status_to_pending["set status to pending"]
42+
enqueue_pds_cascading_search_jobs["enqueue cascading PDS search jobs"]
43+
set_import_status_to_committing["set import status to committing"]:::import_status_change
44+
set_changeset_status_to_committing["set changeset status to committing"]:::status_change
45+
enqueue_commit_patient_changesets_job["enqueue commit patient changesets job"]
46+
class_import_controller_set_status_to_calculating_review["set status to calculating review"]:::status_change
47+
class_import_controller_enqueue_review_patient_changeset_job["enqueue review patient changeset job"]
48+
49+
create --> create_changesets
50+
create_changesets --> set_status_to_pending
51+
set_status_to_pending --"for changesets with postcode"--> enqueue_pds_cascading_search_jobs
52+
set_status_to_pending --"for changesets without postcode"--> class_import_controller_set_status_to_calculating_review
53+
class_import_controller_set_status_to_calculating_review -...-> changeset_statuses_calculating_review
54+
class_import_controller_set_status_to_calculating_review --> class_import_controller_enqueue_review_patient_changeset_job
55+
set_status_to_pending -...-> changeset_statuses_pending
56+
57+
approve --> set_import_status_to_committing
58+
set_import_status_to_committing --> set_changeset_status_to_committing:::status_change
59+
set_changeset_status_to_committing --> enqueue_commit_patient_changesets_job
60+
set_changeset_status_to_committing -...-> changeset_statuses_committing
61+
end
62+
enqueue_pds_cascading_search_jobs -- "individual changeset" --> start_pds_cascading_search
63+
enqueue_commit_patient_changesets_job -- "changeset batch" --> start_commit_patient_changesets
64+
class_import_controller_enqueue_review_patient_changeset_job --"individual changeset"--> start_review_patient_changeset
65+
66+
subgraph PDSCascadingSearchJob
67+
start_pds_cascading_search((perform))
68+
do_pds_search["do PDS search"]
69+
save_search_result["save search result"]
70+
start_pds_cascading_search --> do_pds_search
71+
do_pds_search --> save_search_result
72+
save_search_result -- "next step" --> do_pds_search
73+
end
74+
save_search_result -- "perform for each changeset" --> start_process_patient_changeset
75+
76+
subgraph ProcessPatientChangesetJob
77+
start_process_patient_changeset((perform))
78+
check_no_changesets_pending{No changesets pending?}
79+
check_import{Is import ok?}
80+
set_status_to_calculating_review["set status to calculating review"]:::status_change
81+
set_nhs_number_if_unique["set nhs number if unique"]
82+
set_status_to_import_invalid["set status to import invalid"]:::status_change
83+
84+
start_process_patient_changeset --> set_nhs_number_if_unique
85+
set_nhs_number_if_unique --> set_status_to_calculating_review
86+
set_status_to_calculating_review --> check_no_changesets_pending
87+
set_status_to_calculating_review -..-> changeset_statuses_calculating_review
88+
check_no_changesets_pending -- yes --> check_import
89+
check_import -- no --> set_status_to_import_invalid
90+
set_status_to_import_invalid --> return
91+
set_status_to_import_invalid -..-> changeset_statuses_import_invalid
92+
return((return))
93+
end
94+
check_no_changesets_pending -- no --> start_review_patient_changeset
95+
check_import -- yes --> start_review_patient_changeset
96+
97+
subgraph ReviewPatientChangesetJob
98+
start_review_patient_changeset((perform))
99+
check_ready_for_review{check changesets are ready_for_review}
100+
check_none_pending{check no changesets are pending}
101+
set_status_to_ready_for_review["set status to ready for review"]:::status_change
102+
enqueue_review_class_import_school_move["enqueue review class import school move"]
103+
104+
start_review_patient_changeset --> check_ready_for_review
105+
check_ready_for_review -- yes --> finish_review_patient_changeset_job((finish))
106+
check_ready_for_review -- no --> set_status_to_ready_for_review
107+
set_status_to_ready_for_review --> check_none_pending
108+
set_status_to_ready_for_review -..-> changeset_statuses_ready_for_review
109+
check_none_pending -- no --> finish_review_patient_changeset_job
110+
check_none_pending -- yes --> enqueue_review_class_import_school_move
111+
end
112+
113+
subgraph ReviewClassImportSchoolMoveJob
114+
start_review_class_import_school_move((perform))
115+
create_school_moves_for_unknown_patients["create school moves for unknown patients"]
116+
117+
start_review_class_import_school_move --> create_school_moves_for_unknown_patients
118+
create_school_moves_for_unknown_patients --> finish((finish))
119+
end
120+
enqueue_review_class_import_school_move -- "individual changeset" --> start_review_class_import_school_move
121+
122+
subgraph CommitPatientChangesetsJob
123+
start_commit_patient_changesets((perform))
124+
set_status_to_processed["set status to processed"]:::status_change
125+
if_finished_commiting_changesets{if finished commiting changesets for import}
126+
set_status_to_calculating_review_2[set status to calculating review]:::status_change
127+
commit_consistent_changesets["commit consistent changesets"]
128+
set_status_to_calculating_review_2["set status to calculating_review"]
129+
enqueue_review_patient_changeset_job["enqueue review patient changeset job"]
130+
set_import_status_to_calculating_re_review["set import status to calculating_re_review"]
131+
enqueue_sync_patient_team_job["enqueue sync patient team job"]
132+
commit_patient_changeset_job_finish((finish))
133+
set_status_to_needs_re_review[set status to needs_re_review]:::status_change
134+
for_each_changeset_needing_re_review@{ shape: notch-pent, label: "for each changeset needing re-review" }
135+
136+
start_commit_patient_changesets -- "for all consistent changesets in batch" --> commit_consistent_changesets
137+
start_commit_patient_changesets -- "for all inconsistent changesets in batch" --> set_status_to_needs_re_review
138+
set_status_to_needs_re_review -..-> changeset_statuses_needs_re_review
139+
commit_consistent_changesets --> set_status_to_processed
140+
set_status_to_processed ---> if_finished_commiting_changesets
141+
set_status_to_needs_re_review --> if_finished_commiting_changesets
142+
set_status_to_processed -..-> changeset_statuses_processed
143+
if_finished_commiting_changesets -- no --> enqueue_sync_patient_team_job
144+
if_finished_commiting_changesets -- yes --> set_import_status_to_calculating_re_review:::import_status_change
145+
set_import_status_to_calculating_re_review --> for_each_changeset_needing_re_review
146+
for_each_changeset_needing_re_review --> set_status_to_calculating_review_2
147+
enqueue_review_patient_changeset_job --> for_each_changeset_needing_re_review
148+
set_status_to_calculating_review_2 --> enqueue_review_patient_changeset_job
149+
set_status_to_calculating_review_2 -..-> changeset_statuses_calculating_review
150+
enqueue_review_patient_changeset_job --> enqueue_sync_patient_team_job
151+
enqueue_sync_patient_team_job --> commit_patient_changeset_job_finish
152+
end
153+
enqueue_review_patient_changeset_job --"individual changeset"--> start_review_patient_changeset
154+
155+
```

0 commit comments

Comments
 (0)