@afuadajo/csv-validator
Version:
A CSV validator library for Node.js
95 lines (94 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bulkPatientsValidators = exports.bulkInventoryValidators = void 0;
const numberValidation = (val, message) => {
if (Number.isNaN(Number(val)) || Number(val) < 0)
return message;
return '';
};
const dateValidation = (val, message) => {
if (Number.isNaN(Date.parse(val)) || new Date(val) <= new Date()) {
return message;
}
return '';
};
exports.bulkInventoryValidators = {
'Product Name': { required: true },
'Extra Information.': { required: true },
'Producty Category': { required: true },
'Brand Name': { required: true },
'Measurement/Form': { required: true },
'Over-The-Counter': { required: false },
'Batch Number': { required: true },
Quantity: {
required: true,
custom(val) {
return numberValidation(val, 'Quantity must be a valid number');
},
},
'Buying Price': {
required: true,
custom(val) {
return numberValidation(val, 'Buying Price must be a valid number');
},
},
'Selling Price': {
required: true,
custom(val) {
return numberValidation(val, 'Selling Price must be a valid number');
},
},
'Expiry Alert': {
required: true,
custom(val) {
return numberValidation(val, 'Expiry Alert must be a valid number');
},
},
'Out-Of-Stoct Alert': { required: true },
'Expiry Date': {
required: false,
custom(val) {
return dateValidation(val, 'Expiry Date must be a valid date in the future');
},
},
'Order Placed But Not In Stock': { required: false },
'Push All To Shelf': { required: false },
};
exports.bulkPatientsValidators = {
'First Name': { required: true },
'Middle Name.': { required: false },
'Last Name': { required: true },
'Phone Number': { required: true },
'Email Address': { email: true, required: false },
'D.O.B': {
required: true,
custom(val) {
if (Number.isNaN(Date.parse(val)) || new Date(val) >= new Date()) {
return 'D.O.B must be a valid date in the past';
}
return '';
},
},
Gender: {
required: true,
custom(val) {
if (!['male', 'female'].includes(val.toLocaleLowerCase()))
return 'Gender must be Male or Female';
return '';
},
},
'Marital Status': { required: true },
Nationality: { required: true },
'Home Address': { required: true },
'Secondary Phone Number': { required: false },
'Languages Spoken': { required: false },
'Work Address': { required: false },
'HMO Company': { required: false },
'HMO ID': { required: false },
'Next of Kin First Name': { required: true },
'Next of Kin Last Name': { required: true },
'Next of Kin Phone Number': { required: true },
'Next of Kin Email Address': { required: false },
'Next of Kin Home Address': { required: false },
'Relationship to Patient': { required: true },
};