Tangerine-Community / Tangerine

Digitize your offline data collection. Create your Forms online with Tangerine Editor, conduct them offline with the Tangerine Android App. All results you collect can be exported as a CSV file, easy for processing in a spreadsheet. Tangerine has been used in over 1 million assessments and surveys in over 60 countries and in 100 languages.
http://www.tangerinecentral.org/
GNU General Public License v3.0
48 stars 30 forks source link

Integrate biometric fingerprint scanning plugin with Tangerine #1729

Open chrisekelley opened 4 years ago

chrisekelley commented 4 years ago

User story: In a Tangerine assessment, after the enumerator fills out the age, grade, and gender of a child, the next section is for managing the child's identity. The enumerator scans the child's fingerprint; if the widget returns a student id, this id is stored in this assessment and the assessment proceeds to the next section. If it does not return a student id, the system captures the child's fingerprint, assigns a student id, and saves both the fingerprint info and student id to the assessment.

We need to create a new biometric widget for tangerine that uses the cordova-plugin-fingerprint-identification plugin to capture fingerprints, search assessments for the field that stores the biometric fingerprint template data, and either assigns a student id or returns a student id if the plugin matches the fingerprint with the template stored in the assessments.

chrisekelley commented 4 years ago

Background for LOE estimate:

I think this would use the Case Management module. How do you search for a Person's record? Where would we save the fp data?

chrisekelley commented 4 years ago

LOE details: 4 parts

Total Coding LOE: 12 days

Testing this can be time consuming and cumbersome. I would recommend adding 14 days to test and fix bugs.

chrisekelley commented 4 years ago

data stricture for fingerprintScan Data

We will continue to use the current SQLlite database on the plugin's Java side to perform searches, but we will need to copy this fp data to the pouch db and manage its replication to the server and to other tabs that need it.

1st milestone:

When to clear the sqllite cache? on replication, process one fp at a time? process spinner when processing. Also, every time we save a record, check for fp data in the json, if yes, send to the plugin to pass to the SQLLite db.

chrisekelley commented 4 years ago

Dev notes:

Building in the TangyBiometrics project using my Lenovo TB-8504F (Android 8.1.0) using a Secugen Hamster Pro 20 scanner. On the tablet, place licenses in Neurotechnology/Licenses. Need the following:

chrisekelley commented 4 years ago

Current application UX:

When the user wants to register someone, enter the person's name and press Scan.

The first time it is run, it asks for USB permissions:

usb_permission

Entering name to register a new Person:

registration

When the registration is successful, it displays "Fingerprint enrolled for " + firstName"

To search for a Person, do not enter anything in the text box. Place a finger on the scanner and search. When a user is found, displays "Identification Results: Chris"

main-screen

When you enter another name but scan the same fingerprint, it displays "Enrollment Failed. Duplicate ID"

duplicate_id

chrisekelley commented 4 years ago

Early version of test instructions

TangyBiometrics Instructions.docx