以下是 JavaScript 中的药物数据格式化函数,该函数将药物数据转换为易于理解的格式,并根据溶剂属性进行分类。

function formatMedicationData(medications) {
  const records = Object.values(medications).flat();

  const solventTrueRecords = records.filter(record => record.solvent === true);
  const solventFalseRecords = records.filter(record => record.solvent === false);

  const processRecord = (acc, medication) => {
    const { medicationDate, medicineName, dosage, orderClass, solvent } = medication;
    const date = medicationDate.split(' ')[0];

    const medicationInfo = acc[medicineName]?.[date]?.medicationInfo || medication.medicationInfo;
    const medicineType = acc[medicineName]?.[date]?.medicineType || medication.medicineType;
    const orderClassVal = acc[medicineName]?.[date]?.orderClass || medication.orderClass;

    const hour = Number(medicationDate.split(' ')[1].split(':')[0]);

    const timeOfDay = hour >= 6 && hour < 12 ? 'morning'
      : hour >= 12 && hour < 18 ? 'nooning'
      : 'evening';

    const medicationInfoObj = {
      medicationInfo,
      medicineType,
      orderClass: orderClassVal,
      morning: acc[medicineName]?.[date]?.morning || 0,
      nooning: acc[medicineName]?.[date]?.nooning || 0,
      evening: acc[medicineName]?.[date]?.evening || 0,
      [timeOfDay]: (acc[medicineName]?.[date]?.[timeOfDay] || 0) + dosage,
    };

    if (!acc[medicineName]) {
      acc[medicineName] = {};
    }

    if (!acc[medicineName][date]) {
      acc[medicineName][date] = medicationInfoObj;
    } else {
      acc[medicineName][date] = { ...acc[medicineName][date], ...medicationInfoObj };
    }

    return acc;
  };

  const resultsTrue = solventTrueRecords.reduce(processRecord, {});
  const resultsFalse = solventFalseRecords.reduce(processRecord, {});

  const finalResultsTrue = Object.entries(resultsTrue)
    .map(([medicineName, dates]) => ({
      medicineName,
      ...dates,
      solvent: true,
    }));

  const finalResultsFalse = Object.entries(resultsFalse)
    .map(([medicineName, dates]) => ({
      medicineName,
      ...dates,
      solvent: false,
    }));

  console.log('finalResultsTrue:', finalResultsTrue);
  console.log('finalResultsFalse:', finalResultsFalse);

  return [...finalResultsTrue, ...finalResultsFalse];
}

该函数执行以下操作:

  1. 扁平化数据: 将药物数据数组扁平化,以便能够轻松地过滤和处理每个记录。
  2. 按溶剂属性分类: 将记录根据溶剂属性 (solvent) 分成两组。
  3. 处理每个记录: 对每个记录进行处理,将数据按照药物名称、日期和时间进行分组,并将每个时间段的剂量进行累加。
  4. 生成最终结果: 将处理后的数据转换为包含药物名称、日期、时间段剂量和溶剂属性的数组。

如何在控制台中输出 finalResultsTruefinalResultsFalse

您可以使用 console.log() 方法在控制台中输出这两个数组。在上面的代码中,我已经将 console.log() 方法添加到函数的末尾,以便在函数执行后输出这两个数组的内容。

例如,如果您有一个包含药物数据的数组 medications,您可以使用以下代码调用该函数:

const medications = [/* your medication data */];
const formattedData = formatMedicationData(medications);

这将调用 formatMedicationData() 函数并将结果存储在 formattedData 变量中。然后,您可以使用 console.log(formattedData) 在控制台中输出结果。

JavaScript 药物数据格式化函数 - 优化和输出

原文地址: https://www.cveoy.top/t/topic/oUqZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录