Skip to content

Commit

Permalink
Merge pull request #278 from AUS-DOH-Safety-and-Quality/i-chart-media…
Browse files Browse the repository at this point in the history
…n-types

More options for i charts
  • Loading branch information
andrjohns authored Apr 5, 2024
2 parents cf205f7 + 1061cff commit 4877c97
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 7 deletions.
3 changes: 2 additions & 1 deletion capabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@
"enumeration" : [
{ "displayName" : "run - Run Chart", "value" : "run" },
{ "displayName" : "i - Individual Measurements", "value" : "i" },
{ "displayName" : "i_m - Individual Measurements (Median centerline)", "value" : "i_m" },
{ "displayName" : "i_m - Individual Measurements: Median centerline", "value" : "i_m" },
{ "displayName" : "i_mm - Individual Measurements: Median centerline, Median MR Limits", "value" : "i_mm" },
{ "displayName" : "mr - Moving Range of Individual Measurements", "value" : "mr" },
{ "displayName" : "p - Proportions", "value" : "p" },
{ "displayName" : "p prime - Proportions: Large-Sample Corrected", "value" : "pp" },
Expand Down
2 changes: 1 addition & 1 deletion pbiviz.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"displayName":"SPC Charts",
"guid":"PBISPC",
"visualClassName":"Visual",
"version":"1.4.3.3",
"version":"1.4.3.4",
"description":"A PowerBI custom visual for SPC charts",
"supportUrl":"https://github.com/AUS-DOH-Safety-and-Quality/PowerBI-SPC",
"gitHubUrl":"https://github.com/AUS-DOH-Safety-and-Quality/PowerBI-SPC"
Expand Down
3 changes: 2 additions & 1 deletion src/Classes/derivedSettingsClass.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { defaultSettingsType } from "./settingsClass"
const valueNames: Record<string, string> = {
"i": "Observation",
"i_m": "Observation",
"i_mm": "Observation",
"c": "Count",
"t": "Time",
"xbar": "Group Mean",
Expand Down Expand Up @@ -53,7 +54,7 @@ export default class derivedSettingsClass {

this.chart_type_props = {
needs_denominator: ["p", "pp", "u", "up", "xbar", "s"].includes(chartType),
denominator_optional: ["i", "i_m", "run", "mr"].includes(chartType),
denominator_optional: ["i", "i_m", "i_mm", "run", "mr"].includes(chartType),
numerator_non_negative: ["p", "pp", "u", "up", "s", "c", "g", "t"].includes(chartType),
numerator_leq_denominator: ["p", "pp", "u", "up"].includes(chartType),
has_control_limits: !(["run"].includes(chartType)),
Expand Down
6 changes: 3 additions & 3 deletions src/Limit Calculations/i_m.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { abs, diff, divide, rep, median } from "../Functions";
import { abs, diff, divide, rep, median, mean } from "../Functions";
import { type controlLimitsObject, type controlLimitsArgs } from "../Classes";

export default function imLimits(args: controlLimitsArgs): controlLimitsObject {
Expand All @@ -10,11 +10,11 @@ export default function imLimits(args: controlLimitsArgs): controlLimitsObject {
const cl: number = median(ratio);

const consec_diff: number[] = abs(diff(ratio));
const consec_diff_ulim: number = median(consec_diff) * 3.267;
const consec_diff_ulim: number = mean(consec_diff) * 3.267;
const outliers_in_limits: boolean = args.outliers_in_limits;
const consec_diff_valid: number[] = outliers_in_limits ? consec_diff : consec_diff.filter(d => d < consec_diff_ulim);

const sigma: number = median(consec_diff_valid) / 1.128;
const sigma: number = mean(consec_diff_valid) / 1.128;

return {
keys: args.keys,
Expand Down
32 changes: 32 additions & 0 deletions src/Limit Calculations/i_mm.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { abs, diff, divide, rep, median } from "../Functions";
import { type controlLimitsObject, type controlLimitsArgs } from "../Classes";

export default function imLimits(args: controlLimitsArgs): controlLimitsObject {
const useRatio: boolean = (args.denominators && args.denominators.length > 0);
const ratio: number[] = useRatio
? divide(args.numerators, args.denominators)
: args.numerators;

const cl: number = median(ratio);

const consec_diff: number[] = abs(diff(ratio));
const consec_diff_ulim: number = median(consec_diff) * 3.267;
const outliers_in_limits: boolean = args.outliers_in_limits;
const consec_diff_valid: number[] = outliers_in_limits ? consec_diff : consec_diff.filter(d => d < consec_diff_ulim);

const sigma: number = median(consec_diff_valid) / 1.128;

return {
keys: args.keys,
values: ratio.map(d => isNaN(d) ? 0 : d),
numerators: useRatio ? args.numerators : undefined,
denominators: useRatio ? args.denominators : undefined,
targets: rep(cl, args.keys.length),
ll99: rep(cl - 3 * sigma, args.keys.length),
ll95: rep(cl - 2 * sigma, args.keys.length),
ll68: rep(cl - 1 * sigma, args.keys.length),
ul68: rep(cl + 1 * sigma, args.keys.length),
ul95: rep(cl + 2 * sigma, args.keys.length),
ul99: rep(cl + 3 * sigma, args.keys.length)
};
}
1 change: 1 addition & 0 deletions src/Limit Calculations/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export { default as c } from "./c"
export { default as g } from "./g"
export { default as i } from "./i"
export { default as i_m } from "./i_m"
export { default as i_mm } from "./i_mm"
export { default as mr } from "./mr"
export { default as p } from "./p"
export { default as pp } from "./pprime"
Expand Down
2 changes: 1 addition & 1 deletion src/defaultSettings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ const defaultSettings = {
right_padding: { default: 10 }
},
spc: {
chart_type: { default: "i", valid: ["run", "i", "i_m", "mr", "p", "pp", "u", "up", "c", "xbar", "s", "g", "t"] },
chart_type: { default: "i", valid: ["run", "i", "i_m", "i_mm", "mr", "p", "pp", "u", "up", "c", "xbar", "s", "g", "t"] },
outliers_in_limits: { default: false },
multiplier: { default: 1, valid: { numberRange: { min: 0 } } },
sig_figs: { default: 2, valid: { numberRange: { min: 0, max: 20 } } },
Expand Down

0 comments on commit 4877c97

Please sign in to comment.