/// <summary>Calculates the fema scores.</summary>
        /// <param name="values">  The values.</param>
        /// <param name="testData">Information describing the test.</param>
        private static void ComputeFemaDailyReportingScores(
            Dictionary <string, FieldValue> values,
            OrgTestData testData)
        {
            decimal val;

            val = testData.PerformedToday * 2;
            values.Add(DailyReporting.TestsOrderedToday, new FieldValue(val));

            val = testData.Performed * 2;
            values.Add(DailyReporting.TestsOrderedTotal, new FieldValue(val));

            val = (testData.Positive + testData.Negative) * 2;
            values.Add(DailyReporting.TestsWithResultsToday, new FieldValue(val));

            values.Add(DailyReporting.SpecimensRejectedTotal, new FieldValue(testData.Rejected));

            val = (testData.Performed * 2) - testData.Rejected - testData.Pending;
            values.Add(DailyReporting.TestsCompletedTotal, new FieldValue(val));

            values.Add(DailyReporting.PositiveC19Today, new FieldValue(testData.PositiveToday));

            values.Add(DailyReporting.PositiveC19Total, new FieldValue(testData.Positive));

            values.Add(
                DailyReporting.PercentC19PositiveToday,
                new FieldValue(testData.PositiveToday, testData.PositiveToday * 2));

            values.Add(
                DailyReporting.PercentC19PositiveTotal,
                new FieldValue(testData.Positive, testData.Positive * 2));
        }
        /// <summary>Builds field dictionary.</summary>
        /// <exception cref="ArgumentNullException">Thrown when one or more required arguments are null.</exception>
        /// <param name="deviceData"> Information describing the device.</param>
        /// <param name="patientData">Information describing the patient.</param>
        /// <param name="testData">   Information describing the test.</param>
        /// <param name="workerData"> Information describing the worker.</param>
        /// <returns>A Dictionary&lt;string,FieldValue&gt;</returns>
        public static Dictionary <string, FieldValue> BuildFieldDict(
            OrgDeviceData deviceData,
            OrgPatientData patientData,
            OrgTestData testData,
            OrgWorkerData workerData)
        {
            if (deviceData == null)
            {
                throw new ArgumentNullException(nameof(deviceData));
            }

            if (patientData == null)
            {
                throw new ArgumentNullException(nameof(patientData));
            }

            if (testData == null)
            {
                throw new ArgumentNullException(nameof(testData));
            }

            if (workerData == null)
            {
                throw new ArgumentNullException(nameof(workerData));
            }

            Dictionary <string, FieldValue> fieldDict = new Dictionary <string, FieldValue>();

            ComputeCdcPatientImpactScores(
                fieldDict,
                deviceData,
                patientData);

            ComputeCdcWorkerScores(
                fieldDict,
                workerData);

            ComputeFemaDailyReportingScores(
                fieldDict,
                testData);

            return(fieldDict);
        }