When flag `USE_DEDUPLICATION_MODEL` is turn on, use this logic.
Validate request
- Validate mandatory query params
- first_name
- last_name
- birth_date
- Validate optional query params
- second_name
- tax_id
- birth_certificate
- phone_number (phone_number or auth_number)
- Validate mandatory query params
Search existing MPI entity
Search only active persons - MPI.persons.is_active=true.
We are looking for such parameters:
- tax_id and phone_number
- tax_id and last_name( by MetaPhoneRu)
- birth_certificate and phone_number
- birth_certificate and last_name( by MetaPhoneRu)
- phone_number and last_name( by MetaPhoneRu)
- birth_date and last_name( by MetaPhoneRu) and first_name( by MetaPhoneRu)
When search by phone use mpi.person_phones.number and mpi.person_auth_method.phone_number. If person has auth_method = third_person, don't search by third_person.auth_method.phone_number
After the search we get the clusters (maximum 6) and display them one by one - persons from the first cluster, then from the second, etc.
And within each cluster we sort:
- last_name_distance == 0
- last_name_distance + first_name_distance + tax_id_distance (Ascending)
Return empty array if no data found
Return only requested params (if equal tax_id, birth_certificate, birth_date, phone_number), last_name(if match by metaphone ) id, first_name, second_name, gender, birth_place and merged_persons if data found.