@@ -128,61 +128,23 @@ def commit_changesets(changesets)
128128 end
129129 end
130130
131- def destroy_parent_relationships_and_invalidate_consents! (
132- current_user ,
133- consents
134- )
135- ActiveRecord ::Base . transaction do
136- parent_relationships =
137- self . parent_relationships . includes ( :parent , :patient )
138-
139- timestamp = Time . current . to_fs ( :long )
140- user_name = current_user &.full_name || "system"
141- invalidation_note =
142- "Consent invalidated on #{ timestamp } " \
143- "because #{ user_name } removed all parent-child relationships from an import."
144-
145- # Invalidate consents first before destroying parent relationships, which
146- # will make consents return an empty set.
147- consents . update_all (
148- notes : invalidation_note ,
149- invalidated_at : Time . current
150- )
151-
152- patient_ids_to_update = consents . map ( &:patient_id ) . uniq
153-
154- parents_to_check = parent_relationships . map ( &:parent )
155-
156- parent_relationships . destroy_all
157-
158- parents_to_check . each do |parent |
159- if !parent . destroyed? && parent . parent_relationships . empty? &&
160- parent . consents . empty?
161- parent . destroy!
162- end
163- end
164-
165- StatusUpdaterJob . perform_bulk ( patient_ids_to_update . zip )
131+ def remaining_parent_relationships ( remove_option :)
132+ if remove_option == "unconsented_only"
133+ parent_relationships -
134+ parent_relationship_consents . map ( &:parent_relationship )
135+ else
136+ parent_relationships
166137 end
167138 end
168139
169- def destroy_parent_relationships_without_consent! ( consents )
170- ActiveRecord ::Base . transaction do
171- parent_relationships_without_consents =
172- parent_relationships . includes ( :parent , :patient ) -
173- consents . map ( &:parent_relationship ) . uniq
174-
175- parents_to_check = parent_relationships_without_consents . map ( &:parent )
176-
177- parent_relationships_without_consents . each ( &:destroy! )
178-
179- parents_to_check . each do |parent |
180- if !parent . destroyed? && parent . parent_relationships . empty? &&
181- parent . consents . empty?
182- parent . destroy!
183- end
184- end
185- end
140+ def parent_relationship_consents ( scope : parent_relationships )
141+ Consent
142+ . includes ( patient : { parent_relationships : :parent } )
143+ . joins ( patient : :parent_relationships )
144+ . merge ( patients )
145+ . merge ( scope )
146+ . where ( "consents.parent_id = parent_relationships.parent_id" )
147+ . not_invalidated
186148 end
187149
188150 private
0 commit comments