tabletcommand-incident 0.6.11 → 0.6.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/domain.js +17 -7
- package/build/domain.js.map +1 -1
- package/build/incidentProcessor.js +18 -8
- package/build/incidentProcessor.js.map +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/ruleLegacy/cleanupComments.js.map +1 -1
- package/build/ruleLegacy/cleanupCommentsFilters.js.map +1 -1
- package/build/ruleLegacy/cleanupLatLongSantaClaraCity.js.map +1 -1
- package/build/ruleLegacy/cleanupNull.js.map +1 -1
- package/build/ruleLegacy/cleanupReportNumber.js.map +1 -1
- package/build/ruleLegacy/closeIncidentAfterHours.js.map +1 -1
- package/build/ruleLegacy/closeIncidentMatchingIncidentNumber.js.map +1 -1
- package/build/ruleLegacy/closeIncidentOfCertainType.js.map +1 -1
- package/build/ruleLegacy/copyCommandName.js.map +1 -1
- package/build/ruleLegacy/mapUnitDatesVerdugo.js.map +1 -1
- package/build/ruleLegacy/rebuildUnitDispatchNumber.js.map +1 -1
- package/build/ruleLegacy/removeEmptyPersonFromUnit.js.map +1 -1
- package/build/ruleLegacy/removeField.js.map +1 -1
- package/build/ruleLegacy/setChannelUrlForDepartment.js.map +1 -1
- package/build/ruleLegacy/setChannelsFromRadioChannels.js.map +1 -1
- package/build/ruleLegacy/setFireMapSantaClaraCity.js.map +1 -1
- package/build/ruleLegacy/setFormatUnitsPulsepoint.js.map +1 -1
- package/build/ruleLegacy/setLatitudeLongitude.js.map +1 -1
- package/build/ruleLegacy/setLegacyPriorIncidentChanged.js.map +1 -1
- package/build/ruleLegacy/setLegacyRenameUnit.js.map +1 -1
- package/build/ruleLegacy/setLocationPreferenceDerry.js.map +1 -1
- package/build/ruleLegacy/setLocationPreferenceTorrance.js.map +1 -1
- package/build/ruleLegacy/setMapIncidentTypePulsepoint.js.map +1 -1
- package/build/ruleLegacy/setRadioChannelsFromLegacyChannels.js.map +1 -1
- package/build/ruleLegacy/setRadioChannelsFromRadioNames.js.map +1 -1
- package/build/ruleLegacy/setStreetNumber.js.map +1 -1
- package/build/ruleLegacy/setUnitDispatchNumberAsString.js.map +1 -1
- package/build/ruleLegacy/setUnitUUID.js.map +1 -1
- package/build/ruleProcessor.js +2 -2
- package/build/ruleProcessor.js.map +1 -1
- package/build/ruleProcessorLegacy.js +1 -1
- package/build/ruleProcessorLegacy.js.map +1 -1
- package/build/rules/append-priority-description-to-call-type.js +47 -0
- package/build/rules/append-priority-description-to-call-type.js.map +1 -0
- package/build/rules/clean-up-comments.js.map +1 -1
- package/build/rules/clean-up-lat-long.js.map +1 -1
- package/build/rules/clear-field.js.map +1 -1
- package/build/rules/close-incident-after-hours.js.map +1 -1
- package/build/rules/close-incident-matching-incident-number.js.map +1 -1
- package/build/rules/close-incident-of-certain-type.js.map +1 -1
- package/build/rules/copy-incident-number.js.map +1 -1
- package/build/rules/copy-location-comment.js.map +1 -1
- package/build/rules/index.js +8 -6
- package/build/rules/index.js.map +1 -1
- package/build/rules/join-call-type-priority.js.map +1 -1
- package/build/rules/join-call-type-sacramento.js.map +1 -1
- package/build/rules/map-unit-dates-verdugo.js.map +1 -1
- package/build/rules/remove-incident-field.js +92 -0
- package/build/rules/remove-incident-field.js.map +1 -0
- package/build/rules/remove-person-from-unit.js +2 -2
- package/build/rules/remove-person-from-unit.js.map +1 -1
- package/build/rules/set-address.js +9 -9
- package/build/rules/set-address.js.map +1 -1
- package/build/rules/set-channels-from-radio-channels.js.map +1 -1
- package/build/rules/set-city-alameda.js.map +1 -1
- package/build/rules/set-city-calfire-lnu.js.map +1 -1
- package/build/rules/set-city-cleanup.js.map +1 -1
- package/build/rules/set-city-southern-marin.js.map +1 -1
- package/build/rules/set-city-verdugo.js.map +1 -1
- package/build/rules/set-comment-opts-ack-type.js.map +1 -1
- package/build/rules/set-common-place-name.js.map +1 -1
- package/build/rules/set-communication-channels-from-radio-names.js.map +1 -1
- package/build/rules/set-cross-streets.js.map +1 -1
- package/build/rules/set-fire-alarm-at-dispatch-from-alarm-level.js.map +1 -1
- package/build/rules/set-fire-map-from-map-pages-southern-marin.js.map +1 -1
- package/build/rules/set-fire-map-pages-ontario.js.map +1 -1
- package/build/rules/set-fire-map-santa-clara-city.js.map +1 -1
- package/build/rules/set-format-units-pulsepoint.js.map +1 -1
- package/build/rules/set-incident-type-ontario.js.map +1 -1
- package/build/rules/set-location-preference.js.map +1 -1
- package/build/rules/set-map-incident-type-pulsepoint.js.map +1 -1
- package/build/rules/set-prior-incident-comment-field.js.map +1 -1
- package/build/rules/set-street-number.js.map +1 -1
- package/build/setIncidentType.js.map +1 -1
- package/build/store.js +18 -8
- package/build/store.js.map +1 -1
- package/build/test/domain.js.map +1 -1
- package/build/test/incidentProcessor.js +17 -7
- package/build/test/incidentProcessor.js.map +1 -1
- package/build/test/index.js +63 -22
- package/build/test/index.js.map +1 -1
- package/build/test/mock.js +70 -12
- package/build/test/mock.js.map +1 -1
- package/build/test/rules/close-incident-after-hours.js.map +1 -1
- package/build/test/rules/close-incident-matching-incident-number.js.map +1 -1
- package/build/test/rules/close-incident-of-certain-type.js.map +1 -1
- package/build/test/rules/map-unit-dates-verdugo.js.map +1 -1
- package/build/test/rules/set-format-units-pulsepoint.js.map +1 -1
- package/build/test/rules/set-prior-incident-comment-field.js +1 -1
- package/build/test/rules/set-prior-incident-comment-field.js.map +1 -1
- package/build/test/rulesLegacy.js +6 -6
- package/build/test/rulesLegacy.js.map +1 -1
- package/build/verify/correction.js +17 -7
- package/build/verify/correction.js.map +1 -1
- package/definitions/domain.d.ts +0 -1
- package/definitions/domain.d.ts.map +1 -1
- package/definitions/incidentProcessor.d.ts.map +1 -1
- package/definitions/rules/{set-fire-map-santa-clara-city copy.d.ts → append-priority-description-to-call-type.d.ts} +2 -2
- package/definitions/rules/append-priority-description-to-call-type.d.ts.map +1 -0
- package/definitions/rules/index.d.ts.map +1 -1
- package/definitions/rules/remove-incident-field.d.ts +14 -0
- package/definitions/rules/remove-incident-field.d.ts.map +1 -0
- package/definitions/store.d.ts +0 -26
- package/definitions/store.d.ts.map +1 -1
- package/definitions/test/mock.d.ts +1 -0
- package/definitions/test/mock.d.ts.map +1 -1
- package/gulpfile.js +13 -4
- package/package.json +15 -14
- package/src/rules/append-priority-description-to-call-type.ts +49 -0
- package/src/rules/index.ts +6 -2
- package/src/rules/remove-incident-field.ts +104 -0
- package/src/rules/set-address.ts +9 -9
- package/src/test/index.ts +47 -17
- package/src/test/mock.ts +75 -10
- package/definitions/rules/set-fire-map-santa-clara-city copy.d.ts.map +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
2
|
+
|
|
3
|
+
import { CADIncident } from "tabletcommand-backend-models";
|
|
4
|
+
import { IncidentRule, IncidentRuleChange } from ".";
|
|
5
|
+
import { CADUnitType } from "tabletcommand-backend-models/definitions/types/cad-incident";
|
|
6
|
+
import { CADPersonSchemaType } from "tabletcommand-backend-models/definitions/types/common-incident";
|
|
7
|
+
|
|
8
|
+
export type FieldToClear = keyof CADIncident;
|
|
9
|
+
|
|
10
|
+
export class IncidentRuleRemovePersonFromUnit implements IncidentRule {
|
|
11
|
+
name = "Remove Person From Unit";
|
|
12
|
+
matched = false;
|
|
13
|
+
changed = false;
|
|
14
|
+
changes: IncidentRuleChange[] = [];
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
//
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
apply(item: Partial<CADIncident>, _atDate: Date): Partial<CADIncident> {
|
|
22
|
+
if (!_.isArray(item.Unit)) {
|
|
23
|
+
return item;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let ruleMatched = false;
|
|
27
|
+
|
|
28
|
+
_.each(item.Unit as CADUnitType[], function(unit) {
|
|
29
|
+
if (!_.isObject(unit)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (!_.isArray(unit.Personnel) || unit.Personnel.length === 0) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const revisedItems: CADPersonSchemaType[] = [];
|
|
38
|
+
let personnelCount = (_.isNumber(unit.PersonnelCount) && _.isFinite(unit.PersonnelCount) && unit.PersonnelCount > 0) ? unit.PersonnelCount : 0;
|
|
39
|
+
_.each(unit.Personnel, function(person: CADPersonSchemaType) {
|
|
40
|
+
if (!_.isObject(person) || !_.isString(person.PersonnelName)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (shouldRemovePerson(person) && personnelCount > 0) {
|
|
45
|
+
personnelCount = personnelCount - 1;
|
|
46
|
+
ruleMatched = true;
|
|
47
|
+
} else {
|
|
48
|
+
revisedItems.push(person);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
unit.Personnel = revisedItems;
|
|
52
|
+
unit.PersonnelCount = personnelCount;
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
this.matched = ruleMatched;
|
|
56
|
+
this.changed = ruleMatched;
|
|
57
|
+
this.changes.push({
|
|
58
|
+
name: this.name,
|
|
59
|
+
matched: this.matched,
|
|
60
|
+
changed: this.changed,
|
|
61
|
+
change: {
|
|
62
|
+
Unit: item.Unit,
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return item;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function shouldRemovePerson(item: Partial<CADPersonSchemaType>): boolean {
|
|
71
|
+
if (!_.isString(item.PersonnelName)) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const name = item.PersonnelName;
|
|
75
|
+
|
|
76
|
+
// Names have a comma (e.g. Smith, John)
|
|
77
|
+
const hasComma = name.indexOf(",") >= 0;
|
|
78
|
+
if (hasComma) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Names do not have number
|
|
83
|
+
if (/\d/g.test(name)) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const apparatus = [
|
|
88
|
+
"battalion",
|
|
89
|
+
"bc",
|
|
90
|
+
"engine",
|
|
91
|
+
"rescue",
|
|
92
|
+
"truck",
|
|
93
|
+
];
|
|
94
|
+
|
|
95
|
+
let matchedApparatus = false;
|
|
96
|
+
apparatus.forEach((a) => {
|
|
97
|
+
const shouldRemove = name.toLowerCase().indexOf(a.toLowerCase()) >= 0;
|
|
98
|
+
if (shouldRemove) {
|
|
99
|
+
matchedApparatus = true;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return matchedApparatus;
|
|
104
|
+
}
|
package/src/rules/set-address.ts
CHANGED
|
@@ -47,28 +47,28 @@ export class IncidentRuleSetAddress implements IncidentRule {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
function
|
|
50
|
+
function strValueForKey(object: Record<string, unknown> | undefined, key: string): string {
|
|
51
51
|
if (!_.isObject(object)) {
|
|
52
|
-
return
|
|
52
|
+
return "";
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
if (_.isString(object[key])
|
|
56
|
-
return
|
|
55
|
+
if (_.isString(object[key])) {
|
|
56
|
+
return object[key].trim();
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
if (_.isNumber(object[key]) && _.isFinite(object[key])) {
|
|
60
|
-
return
|
|
60
|
+
return `${object[key]}`;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
return
|
|
63
|
+
return "";
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
function buildLineOutOfParts(object: Partial<CADIncident>, parts: string[]): string {
|
|
67
67
|
const pieces: string[] = [];
|
|
68
68
|
_.forEach(parts, function(part) {
|
|
69
|
-
const
|
|
70
|
-
if (object && object[part] &&
|
|
71
|
-
pieces.push(
|
|
69
|
+
const value = strValueForKey(object, part);
|
|
70
|
+
if (object && object[part] && value !== "") {
|
|
71
|
+
pieces.push(value);
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
|
package/src/test/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { assert } from "chai";
|
|
|
2
2
|
import "mocha";
|
|
3
3
|
import _ from "lodash";
|
|
4
4
|
import * as modelsModule from "tabletcommand-backend-models";
|
|
5
|
+
import { BackendModels } from "tabletcommand-backend-models";
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
8
|
HandleProcessIncidentRequestResult,
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
import mockModule from "./mock";
|
|
15
16
|
import { CADUnitType } from "tabletcommand-backend-models/definitions/types/cad-incident";
|
|
16
17
|
|
|
18
|
+
let modelsLib: BackendModels;
|
|
17
19
|
let mock: ReturnType<typeof mockModule>;
|
|
18
20
|
let incidentProcessor: IncidentProcessorModule;
|
|
19
21
|
|
|
@@ -24,6 +26,7 @@ describe("index", function() {
|
|
|
24
26
|
mongoose,
|
|
25
27
|
models
|
|
26
28
|
} = await modelsModule.connect(process.env.NODE_MONGO_URL || "");
|
|
29
|
+
modelsLib = models;
|
|
27
30
|
|
|
28
31
|
mock = mockModule({
|
|
29
32
|
mongoose,
|
|
@@ -693,7 +696,7 @@ describe("index", function() {
|
|
|
693
696
|
const atDate = new Date();
|
|
694
697
|
const sampleIncidentNumber = "Yolo-Communications-0001";
|
|
695
698
|
|
|
696
|
-
function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
|
|
699
|
+
function validateRulesResult(sut: HandleProcessIncidentRequestResult, step: number) {
|
|
697
700
|
if ("error" in sut) {
|
|
698
701
|
assert.fail(sut.error.toString());
|
|
699
702
|
} else {
|
|
@@ -702,37 +705,64 @@ describe("index", function() {
|
|
|
702
705
|
} = sut;
|
|
703
706
|
|
|
704
707
|
assert.strictEqual(incident?.TacticalChannel, "BROWN/ECHO6/VFIRE25");
|
|
708
|
+
switch (step) {
|
|
709
|
+
case 0:
|
|
710
|
+
assert.equal(incident?.AgencyIncidentCallTypeDescription, "*MEDAID Medical Incident - C2"); // cspell: words MEDAID
|
|
711
|
+
break;
|
|
712
|
+
case 1:
|
|
713
|
+
assert.equal(incident?.AgencyIncidentCallTypeDescription, "Traumatic Injuries - A - C2");
|
|
714
|
+
break;
|
|
715
|
+
case 2:
|
|
716
|
+
assert.equal(incident?.AgencyIncidentCallTypeDescription, "*MEDAID Medical Incident - C3");
|
|
717
|
+
break;
|
|
718
|
+
case 3:
|
|
719
|
+
assert.equal(incident?.AgencyIncidentCallTypeDescription, "BURN Control Burn");
|
|
720
|
+
break;
|
|
721
|
+
default:
|
|
722
|
+
assert.fail(`Unhandled step ${step}.`);
|
|
723
|
+
// break;
|
|
724
|
+
}
|
|
705
725
|
}
|
|
706
726
|
}
|
|
707
727
|
|
|
708
728
|
it("process stream through legacy", async function() {
|
|
709
729
|
const department = mock.departmentYolo;
|
|
710
730
|
const departmentId = department._id.toString();
|
|
711
|
-
const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
|
|
712
|
-
const streamItem = _.first(existingStreamItems);
|
|
713
731
|
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
732
|
+
// Clear incident stream
|
|
733
|
+
await mock.clearTestIncidentStream(departmentId, sampleIncidentNumber);
|
|
734
|
+
const candidateStreamItems = mock.incidentStreamItems.filter((x) => {
|
|
735
|
+
return x.departmentId === departmentId && x.incidentNumber === sampleIncidentNumber;
|
|
736
|
+
});
|
|
737
|
+
// Hack to process incident requests one by one
|
|
738
|
+
let step = 0;
|
|
739
|
+
for (const streamItem of candidateStreamItems) {
|
|
740
|
+
// Save each stream item then run legacy processor
|
|
741
|
+
const s = await new modelsLib.CADIncidentStream(streamItem).save();
|
|
742
|
+
const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(s, department, atDate);
|
|
743
|
+
validateRulesResult(sut, step);
|
|
744
|
+
step = step + 1;
|
|
717
745
|
}
|
|
718
|
-
|
|
719
|
-
const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, department, atDate);
|
|
720
|
-
validateRulesResult(sut);
|
|
721
746
|
});
|
|
722
747
|
|
|
723
748
|
it("process stream through correction", async function() {
|
|
724
749
|
const department = mock.departmentYolo;
|
|
725
750
|
const departmentId = department._id.toString();
|
|
726
|
-
const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
|
|
727
|
-
const streamItem = _.first(existingStreamItems);
|
|
728
751
|
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
752
|
+
// Clear incident stream
|
|
753
|
+
await mock.clearTestIncidentStream(departmentId, sampleIncidentNumber);
|
|
754
|
+
const candidateStreamItems = mock.incidentStreamItems.filter((x) => {
|
|
755
|
+
return x.departmentId === departmentId && x.incidentNumber === sampleIncidentNumber;
|
|
756
|
+
});
|
|
757
|
+
// Hack to process incident requests one by one
|
|
758
|
+
let step = 0;
|
|
759
|
+
for (const streamItem of candidateStreamItems) {
|
|
760
|
+
// Save each stream item then run legacy processor
|
|
761
|
+
const s = await new modelsLib.CADIncidentStream(streamItem).save();
|
|
762
|
+
const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(s.incidentNumber, department, atDate);
|
|
763
|
+
validateRulesResult(sut, step);
|
|
764
|
+
step = step + 1;
|
|
732
765
|
}
|
|
733
|
-
|
|
734
|
-
const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, department, atDate);
|
|
735
|
-
validateRulesResult(sut);
|
|
736
766
|
});
|
|
737
767
|
});
|
|
738
768
|
});
|
package/src/test/mock.ts
CHANGED
|
@@ -6,6 +6,9 @@ import {
|
|
|
6
6
|
Department,
|
|
7
7
|
MongooseModule,
|
|
8
8
|
} from "tabletcommand-backend-models";
|
|
9
|
+
import {
|
|
10
|
+
FilterQuery,
|
|
11
|
+
} from "mongoose";
|
|
9
12
|
|
|
10
13
|
export default function({
|
|
11
14
|
models,
|
|
@@ -707,7 +710,7 @@ export default function({
|
|
|
707
710
|
"incidentNumber": "Verdugo-0001",
|
|
708
711
|
"uuid": "d3d23200-e0fa-443f-b647-5f18d150b5c0",
|
|
709
712
|
"tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
|
|
710
|
-
"createdAt": new Date("2024-01-22T10:11:47.
|
|
713
|
+
"createdAt": new Date("2024-01-22T10:11:47.617Z"),
|
|
711
714
|
"payload": {
|
|
712
715
|
"AgencyID": "EMS1143",
|
|
713
716
|
"IncidentNumber": "Verdugo-0001",
|
|
@@ -768,7 +771,7 @@ export default function({
|
|
|
768
771
|
"incidentNumber": "Yolo-Communications-0001",
|
|
769
772
|
"uuid": "d3d23200-e0fa-443f-b647-5f18d150b5c0",
|
|
770
773
|
"tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
|
|
771
|
-
"createdAt": new Date("2024-01-22T10:11:47.
|
|
774
|
+
"createdAt": new Date("2024-01-22T10:11:47.617Z"),
|
|
772
775
|
"payload": {
|
|
773
776
|
"AgencyID": "EMS1143",
|
|
774
777
|
"IncidentNumber": "Yolo-Communications-0001",
|
|
@@ -776,10 +779,8 @@ export default function({
|
|
|
776
779
|
"EntryDateTime": "2024-01-22T02:08:06-08:00",
|
|
777
780
|
"CallReceivedDateTime": "2024-01-22T02:11:20-08:00",
|
|
778
781
|
"ReportNumber": "PAS",
|
|
779
|
-
"CallSource": "9",
|
|
780
782
|
"CallerNumber": "213-326-3434",
|
|
781
783
|
"AlarmLevel": "1",
|
|
782
|
-
"Priority": "3",
|
|
783
784
|
"LocationComment": "BACK HOUSE",
|
|
784
785
|
"StreetNumber": "2019",
|
|
785
786
|
"Predirectional": "E",
|
|
@@ -792,8 +793,8 @@ export default function({
|
|
|
792
793
|
"Longitude": "-118.108744",
|
|
793
794
|
"Latitude": "34.154423",
|
|
794
795
|
"AgencyIncidentCallType": "BREATH",
|
|
795
|
-
"AgencyIncidentCallTypeDescription": "
|
|
796
|
-
"
|
|
796
|
+
"AgencyIncidentCallTypeDescription": "*MEDAID Medical Incident", // cspell: words MEDAID
|
|
797
|
+
"AgencyIncidentPriorityDescription": "Code 2 Response",
|
|
797
798
|
"ClosedDateTime": "",
|
|
798
799
|
"Comment": [
|
|
799
800
|
{
|
|
@@ -826,12 +827,66 @@ export default function({
|
|
|
826
827
|
],
|
|
827
828
|
},
|
|
828
829
|
},
|
|
830
|
+
{
|
|
831
|
+
departmentId: departmentYolo._id.toString(),
|
|
832
|
+
"incidentNumber": "Yolo-Communications-0001",
|
|
833
|
+
"uuid": "28b01a6e-472d-4c36-92b9-38fecd6dbb70",
|
|
834
|
+
"tag": "dc1e6118-b34f-432a-91f9-66c7ee298bbd",
|
|
835
|
+
"createdAt": new Date("2024-01-22T10:12:00.000Z"),
|
|
836
|
+
"payload": {
|
|
837
|
+
"AgencyID": "EMS1143",
|
|
838
|
+
"IncidentNumber": "Yolo-Communications-0001",
|
|
839
|
+
"AgencyIncidentCallTypeDescription": "Traumatic Injuries - A",
|
|
840
|
+
"AgencyIncidentPriorityDescription": "Code 2 Response",
|
|
841
|
+
"ClosedDateTime": "",
|
|
842
|
+
"Longitude": -118.108744,
|
|
843
|
+
"Latitude": 34.154423,
|
|
844
|
+
"Unit": [
|
|
845
|
+
],
|
|
846
|
+
},
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
departmentId: departmentYolo._id.toString(),
|
|
850
|
+
"incidentNumber": "Yolo-Communications-0001",
|
|
851
|
+
"uuid": "4d50c25e-8cd3-4bca-8713-abb97ee997f1",
|
|
852
|
+
"tag": "72e299c0-7686-4ebf-a822-2a71b633be89",
|
|
853
|
+
"createdAt": new Date("2024-01-22T10:13:00.000Z"),
|
|
854
|
+
"payload": {
|
|
855
|
+
"AgencyID": "EMS1143",
|
|
856
|
+
"IncidentNumber": "Yolo-Communications-0001",
|
|
857
|
+
"AgencyIncidentCallTypeDescription": "*MEDAID Medical Incident",
|
|
858
|
+
"AgencyIncidentPriorityDescription": "Code 3 Response",
|
|
859
|
+
"ClosedDateTime": "",
|
|
860
|
+
"Longitude": -118.108744,
|
|
861
|
+
"Latitude": 34.154423,
|
|
862
|
+
"Unit": [
|
|
863
|
+
],
|
|
864
|
+
},
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
departmentId: departmentYolo._id.toString(),
|
|
868
|
+
"incidentNumber": "Yolo-Communications-0001",
|
|
869
|
+
"uuid": "b471088c-8fea-4a20-9435-e65d596d7511",
|
|
870
|
+
"tag": "06c40396-d92d-43d0-8a6e-d6a2b729ec0f",
|
|
871
|
+
"createdAt": new Date("2024-01-22T10:14:00.000Z"),
|
|
872
|
+
"payload": {
|
|
873
|
+
"AgencyID": "EMS1143",
|
|
874
|
+
"IncidentNumber": "Yolo-Communications-0001",
|
|
875
|
+
"AgencyIncidentCallTypeDescription": "BURN Control Burn",
|
|
876
|
+
"AgencyIncidentPriorityDescription": "3 Minor Incidents",
|
|
877
|
+
"ClosedDateTime": "",
|
|
878
|
+
"Longitude": -118.108744,
|
|
879
|
+
"Latitude": 34.154423,
|
|
880
|
+
"Unit": [
|
|
881
|
+
],
|
|
882
|
+
},
|
|
883
|
+
},
|
|
829
884
|
{
|
|
830
885
|
departmentId: departmentConfire._id.toString(),
|
|
831
886
|
"incidentNumber": "Confire-SB-0001",
|
|
832
887
|
"uuid": "d3d23200-e0fa-443f-b647-5f18d15bbccc",
|
|
833
888
|
"tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
|
|
834
|
-
"createdAt": new Date("2024-01-22T10:11:47.
|
|
889
|
+
"createdAt": new Date("2024-01-22T10:11:47.617Z"),
|
|
835
890
|
"payload": {
|
|
836
891
|
"AgencyID": "EMS1143",
|
|
837
892
|
"IncidentNumber": "Confire-SB-0001",
|
|
@@ -853,7 +908,7 @@ export default function({
|
|
|
853
908
|
"incidentNumber": "Sacramento-SB-0001",
|
|
854
909
|
"uuid": "d3d23200-e0fa-443f-b647-5f18daabbccc",
|
|
855
910
|
"tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
|
|
856
|
-
"createdAt": new Date("2024-01-22T10:11:47.
|
|
911
|
+
"createdAt": new Date("2024-01-22T10:11:47.617Z"),
|
|
857
912
|
"payload": {
|
|
858
913
|
"AgencyID": "EMS1143",
|
|
859
914
|
"IncidentNumber": "Sacramento-SB-0001",
|
|
@@ -985,15 +1040,24 @@ export default function({
|
|
|
985
1040
|
}
|
|
986
1041
|
|
|
987
1042
|
async function getIncidentStreamItems(departmentId: string, incidentNumber: string): Promise<CADIncidentStream[]> {
|
|
988
|
-
const
|
|
1043
|
+
const query: FilterQuery<CADIncidentStream> = {
|
|
989
1044
|
departmentId,
|
|
990
1045
|
incidentNumber,
|
|
991
|
-
}
|
|
1046
|
+
};
|
|
1047
|
+
const items = await models.CADIncidentStream.find(query).sort({
|
|
992
1048
|
createdAt: 1,
|
|
993
1049
|
});
|
|
994
1050
|
return items;
|
|
995
1051
|
}
|
|
996
1052
|
|
|
1053
|
+
async function clearTestIncidentStream(departmentId: string, incidentNumber: string) {
|
|
1054
|
+
const deleteQuery: FilterQuery<CADIncidentStream> = {
|
|
1055
|
+
departmentId,
|
|
1056
|
+
incidentNumber,
|
|
1057
|
+
};
|
|
1058
|
+
await models.CADIncidentStream.deleteMany(deleteQuery);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
997
1061
|
return {
|
|
998
1062
|
departmentId,
|
|
999
1063
|
|
|
@@ -1013,6 +1077,7 @@ export default function({
|
|
|
1013
1077
|
|
|
1014
1078
|
incidentStreamItems,
|
|
1015
1079
|
getIncidentStreamItems,
|
|
1080
|
+
clearTestIncidentStream,
|
|
1016
1081
|
|
|
1017
1082
|
shouldRun,
|
|
1018
1083
|
prepareTestData,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set-fire-map-santa-clara-city copy.d.ts","sourceRoot":"","sources":["../../src/rules/set-fire-map-santa-clara-city copy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,GAAG,CAAC;AAErD,qBAAa,oCAAqC,YAAW,YAAY;IACvE,IAAI,SAAmC;IACvC,OAAO,UAAS;IAChB,OAAO,UAAS;IAChB,OAAO,EAAE,kBAAkB,EAAE,CAAM;;IAOnC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;CAoCvE"}
|