avniproject / Adolescent-Sewa-Rural

0 stars 0 forks source link

Program Summary: Remove Sickle Cell Disease - Disease (after saving the form) in both baseline and endline. #103

Closed kameshbhariya closed 3 days ago

kameshbhariya commented 3 weeks ago

The summary shows the double status of sickle cell.

Screenshot 2024-06-13 at 2.15.46 PM.png
vedfordev commented 3 weeks ago

backup:

//SAMPLE RULE EXAMPLE
'use strict';
({ params, imports }) => {
    const _ = imports.lodash; 
    const summaries = [];
    const programEnrolment = params.programEnrolment;
    //value can be fetched from entire enrolment using programEnrolment.findObservationInEntireEnrolment(CONCEPT_NAME);
    const nutrionalValue = programEnrolment.findLatestObservationInEntireEnrolment("BMI (kg/m²)");
    const sickleCellValue = programEnrolment.findLatestObservationInEntireEnrolment("Sickling test result");
    const sickleCellSummary = programEnrolment.findLatestObservationInEntireEnrolment("Sickle Cell Disease");

    if (nutrionalValue) {
        const value = nutrionalValue.getReadableValue();
        if (value < 14.5) summaries.push({
            name: "Nutrition status as per BMI", value: '9f289574-50ca-4ee7-b2fe-3246df3cfa57'
        }); else if (value < 18.5 && value >= 14.5) summaries.push({
            name: "Nutrition status as per BMI", value: 'dc5ce238-1358-428c-bcfa-7034b9a99510'
        }); else if (value >= 18.5 && value < 25) summaries.push({
            name: "Nutrition status as per BMI", value: '8ea2ec87-53f8-464d-9970-87f9886ed6a1'
        }); else if (value >= 25 && value < 30) summaries.push({
            name: "Nutrition status as per BMI", value: '9c9bd7b7-9a19-4caf-80bf-4da56e9e8933'
        }); else summaries.push({ name: "Nutrition status as per BMI", value: 'bb57b4b5-a301-4502-b9d0-e9723560cfa8' });
    }

    if (!_.isEqual(sickleCellValue, undefined) && sickleCellValue.getReadableValue()) {
        if ( sickleCellValue.getReadableValue() === "Disease" ) {
        summaries.push({ name: "Sickle Cell Disease", value:  '37dd0b32-a7a1-4a6a-86f3-bbe49ad350d8' });
        summaries.push({ name: "sickling test result", value: '37dd0b32-a7a1-4a6a-86f3-bbe49ad350d8' });
        } else if ( sickleCellValue.getReadableValue() === "Trait" ) {
        summaries.push({ name: "Sickle Cell Disease", value:  'e6ab611b-0021-4bf0-a3f8-49788154d996' }); 
        summaries.push({ name: "sickling test result", value: 'e6ab611b-0021-4bf0-a3f8-49788154d996' });   
        } else {
        summaries.push({ name: "Sickle Cell Disease", value:  'b1b0ba3a-be18-43de-b66f-028b37df0162' });
        summaries.push({ name: "sickling test result", value: 'b1b0ba3a-be18-43de-b66f-028b37df0162' });  
        }
    }

    const hbValues = programEnrolment.getObservationsForConceptName('Haemoglobin');
    if (hbValues) {

        let isAbnormal = false;
        if (!_.isEmpty(hbValues)) {
            const value = hbValues.map(({encounterDateTime, obs}) => {
                if(!isAbnormal) {
                    isAbnormal = obs <= 8;
                }
                return (`${imports.moment(encounterDateTime).format("DD-MM-YYYY")}: ${obs}g/dL`);
            })
                .join(", ");
            summaries.push({name: "HB values", value: value, abnormal: isAbnormal})
        }
}

 const bmiValues = programEnrolment.getObservationsForConceptName('BMI (kg/m²)');

        let isAbnormal = false;
        if (!_.isEmpty(bmiValues)) {
            const value = bmiValues.map(({encounterDateTime, obs}) => {
                if(!isAbnormal) {
                    isAbnormal = obs <= 14.5;
                }
                return (`${imports.moment(encounterDateTime).format("DD-MM-YYYY")}: ${obs}`);
            })
                .join(", ");
            summaries.push({name: "BMI values", value: value, abnormal: isAbnormal})//
        }

    const HBforAnemia = programEnrolment.findLatestObservationInEntireEnrolment('Haemoglobin');
    if (!_.isEmpty(HBforAnemia)) {

        if (HBforAnemia.getReadableValue() < 8) {
            summaries.push({ name: "Anaemic status", value: "1f92d18a-2c91-4421-8c41-2cc56f799c6d" })
        } else if (HBforAnemia.getReadableValue() < 11 && HBforAnemia.getReadableValue() >= 8) {
            summaries.push({ name: "Anaemic status", value: "830319d4-b616-4253-88ff-00ada2b3ff03" })
        } else {
            summaries.push({ name: "Anaemic status", value: "e9e15ea9-15b3-4fdd-9a21-e3f06fb4c8bb" })
        }
    }
    const schoolDropOut = programEnrolment.findLatestObservationInEntireEnrolment('Going to school');
    const addiction = programEnrolment.findLatestObservationInEntireEnrolment('Do you have any addiction');
    const chronicSickness = programEnrolment.findLatestObservationInEntireEnrolment('Is there any other condition you want to mention about him/her');
    const menstrualAbsenteesim = programEnrolment.findLatestObservationInEntireEnrolment('Does she remain absent during menstruation');

    let otherVulnerabilities = [];
    if (!_.isEqual(schoolDropOut, undefined) && schoolDropOut.getReadableValue() === 'Dropped out') {
        otherVulnerabilities.push('6303129d-722f-436e-a755-08995e82bf5a');
    }
    if (!_.isEqual(addiction, undefined) && !_.includes(addiction.getReadableValue(), "None")) {
        otherVulnerabilities.push('5a6fb60d-190a-47e3-9e91-fa7d213121a3');
    }
    if (!_.isEqual(chronicSickness, undefined) && !_.includes(chronicSickness.getReadableValue() , 'No problem') ){
        otherVulnerabilities.push('f6e14fa4-3b2f-4366-b546-85704ac7e19c');
    }
    if (!_.isEqual(menstrualAbsenteesim, undefined) && menstrualAbsenteesim.getReadableValue() !== 'No' ){
        otherVulnerabilities.push('90e6288b-ba73-49bc-a683-999722ad9f92');
    }

    if (!_.isEmpty(otherVulnerabilities)) {
        summaries.push({ name: "Other Vulnerabilities", value: otherVulnerabilities })
    }

    const nutritionalStatus  = programEnrolment.findLatestObservationInEntireEnrolment('Nutritional status as per WHO');
    if(nutritionalStatus){
        summaries.push({ name: "Nutritional status as per WHO", value: nutritionalStatus.getValue() });
    }

        const mentalhealth  = programEnrolment.findLatestObservationInEntireEnrolment('Mental Health Issue');
    if(mentalhealth){
        summaries.push({ name: "Mental Health Issue", value: mentalhealth.getValue() });
    }

    return summaries;
};