Created
March 11, 2020 16:03
-
-
Save pmogollons/302c9e029122068ebd4d2acfd9bc1fd6 to your computer and use it in GitHub Desktop.
Función para extraer los datos del codigo de barras PDF417 de una cedula colombiana.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import moment from 'moment'; | |
import { capitalize } from './helpers'; | |
// Data comes directly from react-native-camera onGoogleVisionBarcodesDetected method | |
export function extractColDocumentData(data) { | |
const dataArray = data.barcodes[0].data.replace(/[^A-Za-z0-9+]+/g, ' ').split(' '); | |
let indexMod = 0; | |
let idNumber; | |
let lastName1; | |
// Is old document | |
if (/[A-Z]/g.test(dataArray[3])) { | |
indexMod = - 1; | |
const idString = dataArray[3].replace(/[A-Z]/g, ''); | |
idNumber = idString.substring(10, idString.length); | |
lastName1 = capitalize(dataArray[3].replace(/[0-9]/g, '')); | |
} else { | |
idNumber = dataArray[4].replace(/[A-Z]/g, ''); | |
lastName1 = capitalize(dataArray[4].replace(/[0-9]/g, '')); | |
} | |
const lastName2 = capitalize(dataArray[5 + indexMod].replace(/\W/g, '')); | |
const firstName1 = capitalize(dataArray[6 + indexMod].replace(/\W/g, '')); | |
let middleName; | |
if (!(/[0-9]/g.test(dataArray[7 + indexMod]))) { | |
middleName = capitalize(dataArray[7 + indexMod]); | |
} | |
const extraData = dataArray[middleName ? 8 + indexMod : 7 + indexMod]; | |
const gender = extraData.includes('M') ? 'MALE' : 'FEMALE'; | |
const birthDate = moment(extraData.substr(2, 10), 'YYYYMMDD'); | |
const bloodType = extraData.substr(-2); | |
return { | |
idNumber, | |
lastName1, | |
lastName2, | |
firstName1, | |
middleName, | |
gender, | |
birthDate, | |
bloodType, | |
fullName: `${firstName1} ${middleName || ''} ${lastName1} ${lastName2 || ''}`, | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment