Created
March 24, 2020 13:00
-
-
Save nurfarazi/d113e957d0ff573d0a0fd0c37ed668b2 to your computer and use it in GitHub Desktop.
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
export const covid19UserResponse = functions.https.onCall(async (data, context) => { | |
try { | |
// https://docs.google.com/spreadsheets/d/13x-6koKiqRnIK6_trJX-abLJyi65OzqV621u9iwM1qw/edit#gid=2008915096 | |
await admin.firestore().collection('corona-user-responses').add(data); | |
// tslint:disable-next-line:radix | |
let is_elder = parseInt(data['age']['answer']) > 60 ? '1' : '0'; | |
let has_diseases_history = data['high_risk']['answer'] === 'true' ? '1' : '0'; | |
let symptom_risk = getSymptomRisk(data); | |
let epidemic_risk = getEpidemicRisk(data); | |
let finalRiskAssessment = getFinalRiskAssessment(symptom_risk, is_elder, has_diseases_history, epidemic_risk); | |
let message = getMessage(finalRiskAssessment); | |
return { | |
message | |
}; | |
} catch (error) { | |
return error; | |
} | |
}); | |
function getSymptomRisk(data): number { | |
let is_feverish = data['is_feverish']['answer'] === 'true' ? '1' : '0'; | |
let has_sore_throat = data['has_sore_throat']['answer'] === 'true' ? '1' : '0'; | |
let has_breathlessness = data['has_breathlessness']['answer'] === 'true' ? '1' : '0'; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `000`) return 0; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `001`) return 2; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `010`) return 1; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `011`) return 2; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `100`) return 1; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `101`) return 2; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `110`) return 1; | |
if (`${is_feverish}${has_sore_throat}${has_breathlessness}` === `111`) return 2; | |
return 0; | |
} | |
function getEpidemicRisk(data) { | |
let is_visited_abroad = data['is_visited_abroad']['answer'] === 'true' ? '1' : '0'; | |
let is_contacted_with_covid = data['is_contacted_with_covid']['answer'] === 'true' ? '1' : '0'; | |
let is_contacted_with_family_who_cough = data['is_contacted_with_family_who_cough']['answer'] === 'true' ? '1' : '0'; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `000`) return 0; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `001`) return 1; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `010`) return 2; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `011`) return 2; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `100`) return 1; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `101`) return 2; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `110`) return 2; | |
if (`${is_visited_abroad}${is_contacted_with_covid}${is_contacted_with_family_who_cough}` === `111`) return 2; | |
return 0; | |
} | |
// tslint:disable-next-line:cyclomatic-complexity | |
function getFinalRiskAssessment(symptom_risk, is_elder, has_diseases_history, epidemic_risk): number { | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0000`) return 0; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0001`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0002`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0010`) return 0; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0011`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0012`) return 2; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0100`) return 0; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0101`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0102`) return 3; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0110`) return 0; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0111`) return 2; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `0112`) return 2; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1000`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1001`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1002`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1010`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1011`) return 2; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1012`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1100`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1101`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1102`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1110`) return 1; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1111`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `1112`) return 4; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2000`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2001`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2002`) return 6; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2010`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2011`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2012`) return 6; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2100`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2101`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2102`) return 6; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2110`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2111`) return 5; | |
if (`${symptom_risk}${is_elder}${has_diseases_history}${epidemic_risk}` === `2112`) return 6; | |
return 0; | |
} | |
function getMessage(risk) { | |
if (`${risk}` === `0`) return 'Safe'; | |
if (`${risk}` === `1`) return 'Stay Home/Quarantine'; | |
if (`${risk}` === `2`) return 'Mandatory Quarantine/Followup'; | |
if (`${risk}` === `3`) return 'Request Test'; | |
if (`${risk}` === `4`) return 'Urgent/Contact with Covid Facility'; | |
if (`${risk}` === `5`) return 'Extra Urgent'; | |
if (`${risk}` === `6`) return 'VIP'; | |
return 'Safe'; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment