Skip to content

Instantly share code, notes, and snippets.

@pmogollons
Created March 11, 2020 16:03
Show Gist options
  • Save pmogollons/302c9e029122068ebd4d2acfd9bc1fd6 to your computer and use it in GitHub Desktop.
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.
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