Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mysql = require("mysql");
- const uuidv4 = require("uuid/v4");
- var pool = mysql.createPool({
- connectionLimit: 10,
- host: "128.199.251.92",
- user: "root",
- password: "testing",
- database: "dashboard_doctor"
- });
- exports.getAllPatients = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- pool.query("SELECT patients.uuid AS _id, patients.name, ins_policy.policy_no, contacts.contact FROM ((patients INNER JOIN ins_policy ON patients.id = ins_policy.patient_id INNER JOIN contacts ON patients.id = contacts.patient_id ))", function (error, results, fields) {
- if (error) {
- throw error;
- } else {
- const res = results.map(result => (
- {
- _id: result._id,
- name: result.name,
- policy_no: result.policy_no,
- phone_number: result.contact
- // dob: result.dob,
- // job: result.job,
- }
- ))
- callback(null, res);
- }
- });
- };
- exports.getPatient = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- let getPatients = new Promise((resolve, reject) => {
- pool.query(
- `SELECT p.uuid AS _id, name, policy_no, gender, contact, dob, weight,height, blood_type, job, food_allergy, drug_allergy, lifestyle, genetic_disorders FROM patients p
- LEFT JOIN
- ins_policy i ON p.id = i.patient_id
- LEFT JOIN
- contacts c ON p.id = c.patient_id
- LEFT JOIN
- health_general h ON p.id = h.patient_id WHERE p.uuid = '` +
- event.uuid +
- "'",
- (err, res, field) => {
- if (err) {
- reject(err);
- }
- resolve(res);
- }
- );
- });
- let getSessionHistory = new Promise((resolve, reject) => {
- pool.query(`SELECT s.uuid as _id, json_unquote(json_extract(s.document, '$.complaint')) AS complaint, s.end_time AS timetamp from patients p LEFT JOIN sessions s ON p.id = s.patient_id WHERE p.uuid ='` + event.uuid +
- "'", (err, res, field) => {
- if (err) { reject(err) };
- resolve(res);
- });
- });
- let getHealthHistory = new Promise((resolve, reject) => {
- pool.query(`SELECT h.info, h.when, h.type FROM patients p
- LEFT JOIN
- health_history h ON p.id = h.id
- WHERE p.uuid ='` + event.uuid +
- "'", (err, res, field) => {
- if (err) { reject(err) };
- resolve(res);
- });
- });
- Promise.all([getPatients, getSessionHistory, getHealthHistory]).then(results => {
- const response = {
- _id: results[0][0]._id,
- name: results[0][0].name,
- policy_no: results[0][0].policy_no,
- gender: results[0][0].gender,
- phone_number: results[0][0].contact,
- dob: results[0][0].dob,
- weight: results[0][0].weight,
- height: results[0][0].height,
- blood_type: results[0][0].blood_type,
- job: results[0][0].job,
- session_history: results[1],
- food_allergy: results[0][0].food_allergy,
- drug_allergy: results[0][0].drug_allergy,
- lifestyle: results[0][0].lifestyle,
- genetic_disorders: results[0][0].genetic_disorders,
- health_history: results[2]
- }
- callback(null, response);
- });
- };
- exports.getHealthHistory = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- pool.query(
- `SELECT h.info, h.when, h.type FROM patients p LEFT JOIN health_history h ON p.id = h.id WHERE p.uuid ='` +
- event.uuid +
- "'",
- (err, res, field) => {
- if (err) {
- throw err;
- }
- callback(null, res);
- }
- );
- }
- exports.updatePatient = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- let healthGeneral = [
- "weight",
- "height",
- "food_allergies",
- "drug_allergies",
- "lifestyle",
- "genetic_disorders"
- ];
- let setQuery = [];
- for (const key in JSON.parse(JSON.stringify(event.body))) {
- if (healthGeneral.includes(key)) {
- if (typeof event[key] == Number) {
- setQuery.push(`health_general.${key} = ${event.body[key]}`);
- } else {
- setQuery.push(`health_general.${key} = '${event.body[key]}'`);
- }
- }
- }
- let updateQuery = new Promise((resolve, reject) => {
- pool.query(
- `UPDATE health_general LEFT JOIN patients p ON health_general.patient_id = p.id SET ${setQuery.join(
- ", "
- )} WHERE p.uuid = '${event.uuid}'`,
- (err, res, field) => {
- if (err) reject(err);
- resolve(res);
- }
- );
- });
- let getPatients = new Promise((resolve, reject) => {
- pool.query(
- `SELECT p.uuid AS _id, name, policy_no, gender, contact, dob, weight,height, blood_type, job, food_allergy, drug_allergy, lifestyle, genetic_disorders FROM patients p
- LEFT JOIN
- ins_policy i ON p.id = i.patient_id
- LEFT JOIN
- contacts c ON p.id = c.patient_id
- LEFT JOIN
- health_general h ON p.id = h.patient_id WHERE p.uuid = '` +
- event.uuid +
- "'",
- (err, res, field) => {
- if (err) {
- reject(err);
- }
- resolve(res);
- }
- );
- });
- Promise.all([getPatients]).then(results => {
- const response = {
- _id: results[0][0]._id,
- name: results[0][0].name,
- policy_no: results[0][0].policy_no,
- gender: results[0][0].gender,
- phone_number: results[0][0].contact,
- dob: results[0][0].dob,
- weight: results[0][0].weight,
- height: results[0][0].height,
- blood_type: results[0][0].blood_type,
- job: results[0][0].job,
- food_allergy: results[0][0].food_allergy,
- drug_allergy: results[0][0].drug_allergy,
- lifestyle: results[0][0].lifestyle,
- genetic_disorders: results[0][0].genetic_disorders,
- }
- if (setQuery.length !== 0) {
- updateQuery.then(() => {
- callback(null, response);
- });
- } else {
- callback(null, "No update field");
- }
- });
- }
- exports.addSessions = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- const qr = "INSERT INTO sessions SET ?";
- const post = {
- uuid: uuidv4(),
- patient_id: event.patient_id,
- doctor_id: event.doctor_id,
- document: JSON.stringify(event.document),
- chat_history: event.chat_history,
- start_time: event.start_time,
- end_time: event.end_time
- };
- pool.query(qr, post, function (error, results, fields) {
- if (error) {
- throw error;
- } else {
- callback(null, results);
- }
- });
- };
- exports.getListSessions = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- pool.query("SELECT * FROM sessions WHERE uuid='" + event.uuid + "'", function (
- error,
- results,
- fields
- ) {
- if (error) {
- throw error;
- } else {
- callback(null, results);
- }
- });
- };
- exports.getSessions = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- pool.query(`SELECT s.uuid AS _id, JSON_UNQUOTE(JSON_OBJECT('_id', p.uuid, 'name', name, 'policy_no', policy_no, 'npk', npk, 'gender', gender, 'phone_number', contact, 'birth', dob, 'weight', weight, 'height', height, 'blood_type', blood_type, 'job', job, 'food_allergies', food_allergy, 'drug_allergies', drug_allergy, 'lifestyle', lifestyle, 'genetic_disorders', genetic_disorders )) As patient, JSON_UNQUOTE(s.document) AS document, s.start_time AS started_at, s.end_time AS finished_at, s.chat_history AS chat_history, GROUP_CONCAT(JSON_UNQUOTE(JSON_OBJECT('_id', s.uuid, 'complaint', json_unquote(json_extract(s.document, '$.complaint')), 'timestamp', s.end_time))) AS session_history, GROUP_CONCAT(JSON_UNQUOTE(JSON_OBJECT('info',hh.info, 'when', hh.when, 'type', hh.type))) AS health_history
- FROM sessions s
- LEFT JOIN
- patients p ON s.patient_id = p.id
- LEFT JOIN
- ins_policy i ON s.patient_id = i.patient_id
- LEFT JOIN
- contacts c ON s.patient_id = c.patient_id
- LEFT JOIN
- health_general h ON s.patient_id = h.patient_id
- LEFT JOIN
- health_history hh ON s.patient_id = hh.patient_id
- WHERE p.uuid = '` + event.uuid + "'", function (error, results, fields) {
- if (error) {
- throw error;
- } else {
- var sBad = results[0].session_history
- var sGood = "[" + sBad.replace(/\n/g, ",") + "]";
- var aObjs = JSON.parse(sGood);
- var hsBad = results[0].health_history
- var hsGood = "[" + hsBad.replace(/\n/g, ",") + "]";
- var hsObjs = JSON.parse(hsGood);
- const response = {
- _id: results[0]._id,
- patient: JSON.parse(results[0].patient),
- document: JSON.parse(results[0].document),
- started_at: results[0].started_at,
- finished_at: results[0].finished_at,
- chat_history: results[0].chat_history,
- session_history: aObjs,
- health_history: hsObjs
- }
- callback(null, response);
- }
- });
- }
- exports.createSession = (event, context, callback) => {
- context.callbackWaitsForEmptyEventLoop = false;
- const dr = "INSERT INTO doctors SET ?";
- const post = {
- uuid: uuidv4(),
- name: event.doctorName
- };
- const getDoctor = () => new Promise((resolve, reject) => {
- pool.query(`SELECT doctors.name FROM doctors WHERE name = '` + event.doctorName + `'`,
- (err, res, field) => {
- if (err) {
- reject(err);
- }
- resolve(res);
- })
- })
- const createDoctor = () => new Promise((resolve, reject) => {
- pool.query(`INSERT INTO doctors SET uuid = '${post.uuid}', name = '${post.name}'`, (err, res, field) => {
- if (err) {
- reject(err);
- }
- resolve(res);
- });
- });
- const getPatient = () => new Promise((resolve, reject) => {
- pool.query(`SELECT id FROM patients WHERE uuid = '${event.uuid}'`, (err, res, field) => {
- if (err) {
- reject(err);
- }
- resolve(res)
- })
- })
- const createSession = () => new Promise((resolve, reject) => {
- pool.query(`INSERT INTO `sessions` (`id`, `uuid`, `patient_id`, `doctor_id`, `document`, `chat_history`, `start_time`, `end_time`) VALUES (NULL, '89ujiokm,mjhygt', '4', '9', '', '', current_timestamp(), current_timestamp());`)
- })
- // getDoctor().then(res => {
- // if (res.length === 0) {
- // createDoctor()
- // .then(resp => {
- // callback(null, resp)
- // })
- // } else {
- // callback(null, res)
- // }
- // })
- }
Add Comment
Please, Sign In to add comment