Looking for help?
Search
Find by NID
CREATE TABLE IF NOT EXISTS nid_mapping ( national_id varchar, health_id varchar, PRIMARY KEY (national_id, health_id) );
- When patient is created or updated this mapping CF is updated (if NID is present/updated).
- When queried by NID, all HIDs are retrieved from this table.
- For each HID patient CF is queried for other patient details and the result it returned.
- Separate mappings tables (brn_mapping, uid_mapping, phone_number_mapping) exist for BRN, UID, and phone number.
- That implies patient can be searched by any of these params (nid, uid, brn, phone no) separately.
Find by Name & Location
CREATE TABLE IF NOT EXISTS name_mapping ( division_id varchar, district_id varchar, upazila_id varchar, given_name varchar, sur_name varchar, health_id varchar, PRIMARY KEY ((division_id, district_id, upazila_id), given_name, sur_name, health_id) );
- Patient cannot be searched by given_name only. At least address (division, district and upazila) along with given_name have to be provided. Surname is optional.
- When patient is created or updated this mapping CF is updated (given_name, division_id, district_id, upazila_id are mandatory for create).
- When queried by address and given_name, all HIDs are retrieved from this table.
- For each HID patient CF is queried for other patient details and the result it returned.
- On each of these patient details, other filters (city corp id, union id, rural ward id) are applied in memory.
Find by multiple parameters
- Example, search by nid + brn + given_name.
- When multiple parameters are sent, one of the mapping tables is queried and other parameters are used to filter the patients in memory.
- The order in which mapping tables are queried is as follows (only one is queried): NID, BRN, UID, Phone No, Name + Address.