local-risk-alert-feed 0.1.0 → 0.2.1
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/dist/cjs/core/alert-aggregator.js +24 -15
- package/dist/cjs/core/alert-aggregator.js.map +1 -1
- package/dist/cjs/index.js +3 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/plugins/events/index.js +3 -1
- package/dist/cjs/plugins/events/index.js.map +1 -1
- package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js +235 -0
- package/dist/cjs/plugins/events/phoenix-convention-center.plugin.js.map +1 -0
- package/dist/cjs/plugins/events/phoenix-events.plugin.js +24 -195
- package/dist/cjs/plugins/events/phoenix-events.plugin.js.map +1 -1
- package/dist/cjs/plugins/fire-emt/index.js +3 -1
- package/dist/cjs/plugins/fire-emt/index.js.map +1 -1
- package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js +221 -0
- package/dist/cjs/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -0
- package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js +153 -154
- package/dist/cjs/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
- package/dist/cjs/plugins/index.js +2 -7
- package/dist/cjs/plugins/index.js.map +1 -1
- package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js +70 -77
- package/dist/cjs/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
- package/dist/esm/core/alert-aggregator.js +24 -15
- package/dist/esm/core/alert-aggregator.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/plugins/events/index.js +1 -0
- package/dist/esm/plugins/events/index.js.map +1 -1
- package/dist/esm/plugins/events/phoenix-convention-center.plugin.js +231 -0
- package/dist/esm/plugins/events/phoenix-convention-center.plugin.js.map +1 -0
- package/dist/esm/plugins/events/phoenix-events.plugin.js +24 -195
- package/dist/esm/plugins/events/phoenix-events.plugin.js.map +1 -1
- package/dist/esm/plugins/fire-emt/index.js +1 -0
- package/dist/esm/plugins/fire-emt/index.js.map +1 -1
- package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js +217 -0
- package/dist/esm/plugins/fire-emt/nifc-wildfire.plugin.js.map +1 -0
- package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js +153 -154
- package/dist/esm/plugins/fire-emt/phoenix-fire.plugin.js.map +1 -1
- package/dist/esm/plugins/index.js +1 -5
- package/dist/esm/plugins/index.js.map +1 -1
- package/dist/esm/plugins/traffic/arizona-traffic.plugin.js +70 -77
- package/dist/esm/plugins/traffic/arizona-traffic.plugin.js.map +1 -1
- package/dist/types/core/alert-aggregator.d.ts +1 -1
- package/dist/types/core/alert-aggregator.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/plugins/events/index.d.ts +2 -0
- package/dist/types/plugins/events/index.d.ts.map +1 -1
- package/dist/types/plugins/events/phoenix-convention-center.plugin.d.ts +55 -0
- package/dist/types/plugins/events/phoenix-convention-center.plugin.d.ts.map +1 -0
- package/dist/types/plugins/events/phoenix-events.plugin.d.ts +5 -37
- package/dist/types/plugins/events/phoenix-events.plugin.d.ts.map +1 -1
- package/dist/types/plugins/fire-emt/index.d.ts +2 -0
- package/dist/types/plugins/fire-emt/index.d.ts.map +1 -1
- package/dist/types/plugins/fire-emt/nifc-wildfire.plugin.d.ts +43 -0
- package/dist/types/plugins/fire-emt/nifc-wildfire.plugin.d.ts.map +1 -0
- package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts +21 -13
- package/dist/types/plugins/fire-emt/phoenix-fire.plugin.d.ts.map +1 -1
- package/dist/types/plugins/index.d.ts +2 -6
- package/dist/types/plugins/index.d.ts.map +1 -1
- package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts +5 -14
- package/dist/types/plugins/traffic/arizona-traffic.plugin.d.ts.map +1 -1
- package/package.json +1 -11
- package/dist/cjs/plugins/police-blotter/index.js +0 -6
- package/dist/cjs/plugins/police-blotter/index.js.map +0 -1
- package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js +0 -198
- package/dist/cjs/plugins/police-blotter/phoenix-police.plugin.js.map +0 -1
- package/dist/cjs/plugins/pulsepoint/index.js +0 -6
- package/dist/cjs/plugins/pulsepoint/index.js.map +0 -1
- package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js +0 -275
- package/dist/cjs/plugins/pulsepoint/pulsepoint.plugin.js.map +0 -1
- package/dist/esm/plugins/police-blotter/index.js +0 -2
- package/dist/esm/plugins/police-blotter/index.js.map +0 -1
- package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js +0 -194
- package/dist/esm/plugins/police-blotter/phoenix-police.plugin.js.map +0 -1
- package/dist/esm/plugins/pulsepoint/index.js +0 -2
- package/dist/esm/plugins/pulsepoint/index.js.map +0 -1
- package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js +0 -271
- package/dist/esm/plugins/pulsepoint/pulsepoint.plugin.js.map +0 -1
- package/dist/types/plugins/police-blotter/index.d.ts +0 -3
- package/dist/types/plugins/police-blotter/index.d.ts.map +0 -1
- package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts +0 -49
- package/dist/types/plugins/police-blotter/phoenix-police.plugin.d.ts.map +0 -1
- package/dist/types/plugins/pulsepoint/index.d.ts +0 -3
- package/dist/types/plugins/pulsepoint/index.d.ts.map +0 -1
- package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts +0 -61
- package/dist/types/plugins/pulsepoint/pulsepoint.plugin.d.ts.map +0 -1
|
@@ -14,101 +14,66 @@ const PHOENIX_CENTER = {
|
|
|
14
14
|
*/
|
|
15
15
|
const COVERAGE_RADIUS_METERS = 50_000;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Category to risk level and alert category mapping.
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
20
|
-
// Fire
|
|
21
|
-
|
|
19
|
+
const CATEGORY_MAP = {
|
|
20
|
+
// Fire categories
|
|
21
|
+
FIRE: { category: 'fire', risk: 'high' },
|
|
22
22
|
'STRUCTURE FIRE': { category: 'fire', risk: 'extreme' },
|
|
23
|
-
FIRE: { category: 'fire', risk: 'severe' },
|
|
24
|
-
BRUSH_FIRE: { category: 'fire', risk: 'severe' },
|
|
25
23
|
'BRUSH FIRE': { category: 'fire', risk: 'severe' },
|
|
26
|
-
VEHICLE_FIRE: { category: 'fire', risk: 'high' },
|
|
27
|
-
'VEHICLE FIRE': { category: 'fire', risk: 'high' },
|
|
28
|
-
DUMPSTER_FIRE: { category: 'fire', risk: 'moderate' },
|
|
29
|
-
'DUMPSTER FIRE': { category: 'fire', risk: 'moderate' },
|
|
30
|
-
SMOKE_INVESTIGATION: { category: 'fire', risk: 'moderate' },
|
|
31
|
-
'SMOKE INVESTIGATION': { category: 'fire', risk: 'moderate' },
|
|
32
|
-
ALARM: { category: 'fire', risk: 'low' },
|
|
33
|
-
'FIRE ALARM': { category: 'fire', risk: 'low' },
|
|
34
|
-
// Medical-related
|
|
35
|
-
CARDIAC: { category: 'medical', risk: 'severe' },
|
|
36
|
-
'CARDIAC ARREST': { category: 'medical', risk: 'severe' },
|
|
37
|
-
STROKE: { category: 'medical', risk: 'severe' },
|
|
38
|
-
TRAUMA: { category: 'medical', risk: 'severe' },
|
|
39
|
-
'MAJOR TRAUMA': { category: 'medical', risk: 'severe' },
|
|
40
|
-
MEDICAL: { category: 'medical', risk: 'high' },
|
|
41
|
-
'MEDICAL AID': { category: 'medical', risk: 'high' },
|
|
42
|
-
'MEDICAL EMERGENCY': { category: 'medical', risk: 'high' },
|
|
43
|
-
OVERDOSE: { category: 'medical', risk: 'high' },
|
|
44
|
-
'DRUG OVERDOSE': { category: 'medical', risk: 'high' },
|
|
45
|
-
BREATHING: { category: 'medical', risk: 'high' },
|
|
46
|
-
'BREATHING PROBLEMS': { category: 'medical', risk: 'high' },
|
|
47
|
-
UNCONSCIOUS: { category: 'medical', risk: 'high' },
|
|
48
|
-
'UNCONSCIOUS PERSON': { category: 'medical', risk: 'high' },
|
|
49
|
-
FALL: { category: 'medical', risk: 'moderate' },
|
|
50
|
-
SICK: { category: 'medical', risk: 'moderate' },
|
|
51
|
-
'SICK PERSON': { category: 'medical', risk: 'moderate' },
|
|
52
|
-
TRANSFER: { category: 'medical', risk: 'low' },
|
|
53
|
-
'PATIENT TRANSFER': { category: 'medical', risk: 'low' },
|
|
54
|
-
// Traffic/accident-related (categorize as medical for injuries)
|
|
55
|
-
ACCIDENT: { category: 'medical', risk: 'high' },
|
|
56
|
-
'TRAFFIC ACCIDENT': { category: 'medical', risk: 'high' },
|
|
57
|
-
'MOTOR VEHICLE ACCIDENT': { category: 'medical', risk: 'high' },
|
|
58
|
-
MVA: { category: 'medical', risk: 'high' },
|
|
59
|
-
EXTRICATION: { category: 'medical', risk: 'severe' },
|
|
60
|
-
'VEHICLE EXTRICATION': { category: 'medical', risk: 'severe' },
|
|
61
|
-
// Hazmat
|
|
62
24
|
HAZMAT: { category: 'fire', risk: 'severe' },
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
25
|
+
// EMS categories
|
|
26
|
+
ALS: { category: 'medical', risk: 'high' }, // Advanced Life Support
|
|
27
|
+
BLS: { category: 'medical', risk: 'moderate' }, // Basic Life Support
|
|
28
|
+
CEMS: { category: 'medical', risk: 'moderate' }, // Community EMS
|
|
29
|
+
// Service categories
|
|
30
|
+
'MISC SERVICE': { category: 'fire', risk: 'low' },
|
|
31
|
+
SERVICE: { category: 'fire', risk: 'low' },
|
|
66
32
|
};
|
|
67
33
|
/**
|
|
68
|
-
* Plugin that fetches fire and EMS incident data from Phoenix
|
|
34
|
+
* Plugin that fetches fire and EMS incident data from Phoenix Fire Department ArcGIS service.
|
|
69
35
|
*
|
|
70
|
-
*
|
|
36
|
+
* Uses the Phoenix Fire 30-day incident history which is updated frequently (data is ~1-2 days old).
|
|
37
|
+
*
|
|
38
|
+
* @see https://maps.phoenix.gov/phxfire/rest/services/IncidentHistory30DayPoints/MapServer
|
|
71
39
|
*/
|
|
72
40
|
class PhoenixFirePlugin extends base_plugin_1.BasePlugin {
|
|
73
41
|
metadata = {
|
|
74
42
|
id: 'phoenix-fire',
|
|
75
43
|
name: 'Phoenix Fire Department',
|
|
76
|
-
version: '
|
|
77
|
-
description: 'Fire and EMS incidents from Phoenix
|
|
44
|
+
version: '2.0.0',
|
|
45
|
+
description: 'Fire and EMS incidents from Phoenix Regional Dispatch Center',
|
|
78
46
|
coverage: {
|
|
79
47
|
type: 'regional',
|
|
80
48
|
center: PHOENIX_CENTER,
|
|
81
49
|
radiusMeters: COVERAGE_RADIUS_METERS,
|
|
82
|
-
description: 'Phoenix, AZ metropolitan area',
|
|
50
|
+
description: 'Phoenix, AZ metropolitan area (Phoenix, Paradise Valley, Laveen)',
|
|
83
51
|
},
|
|
84
52
|
supportedTemporalTypes: ['historical', 'real-time'],
|
|
85
53
|
supportedCategories: ['fire', 'medical'],
|
|
86
|
-
refreshIntervalMs:
|
|
54
|
+
refreshIntervalMs: 5 * 60 * 1000, // 5 minutes
|
|
87
55
|
};
|
|
88
56
|
fireConfig;
|
|
89
57
|
constructor(config) {
|
|
90
58
|
super(config);
|
|
91
59
|
this.fireConfig = {
|
|
92
|
-
|
|
60
|
+
includeEMS: true,
|
|
61
|
+
includeService: false,
|
|
62
|
+
limit: 500,
|
|
93
63
|
...config,
|
|
94
64
|
};
|
|
95
65
|
}
|
|
96
66
|
async fetchAlerts(options) {
|
|
97
|
-
const { location, timeRange, radiusMeters,
|
|
67
|
+
const { location, timeRange, radiusMeters, categories } = options;
|
|
98
68
|
const cacheKey = this.generateCacheKey(options);
|
|
99
|
-
|
|
100
|
-
const url = this.buildApiUrl(location, timeRange, radiusMeters, limit);
|
|
69
|
+
const warnings = [];
|
|
101
70
|
try {
|
|
102
|
-
const { data, fromCache } = await this.getCachedOrFetch(cacheKey, () => this.fetchIncidents(
|
|
103
|
-
let alerts = data.map((incident) => this.transformIncident(incident));
|
|
104
|
-
// Filter by categories if specified
|
|
105
|
-
if (categories && categories.length > 0) {
|
|
106
|
-
alerts = alerts.filter((alert) => categories.includes(alert.category));
|
|
107
|
-
}
|
|
71
|
+
const { data, fromCache } = await this.getCachedOrFetch(cacheKey, () => this.fetchIncidents(location, timeRange, radiusMeters, categories), this.config.cacheTtlMs);
|
|
108
72
|
return {
|
|
109
|
-
alerts,
|
|
73
|
+
alerts: data,
|
|
110
74
|
fromCache,
|
|
111
75
|
cacheKey,
|
|
76
|
+
warnings: warnings.length > 0 ? warnings : undefined,
|
|
112
77
|
};
|
|
113
78
|
}
|
|
114
79
|
catch (error) {
|
|
@@ -117,61 +82,82 @@ class PhoenixFirePlugin extends base_plugin_1.BasePlugin {
|
|
|
117
82
|
}
|
|
118
83
|
}
|
|
119
84
|
/**
|
|
120
|
-
*
|
|
85
|
+
* Fetch incidents from Phoenix Fire ArcGIS service.
|
|
121
86
|
*/
|
|
122
|
-
|
|
123
|
-
// Phoenix Fire
|
|
124
|
-
const baseUrl = 'https://
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
whereClauses.push(`incident_date >= '${startDate}'`);
|
|
136
|
-
whereClauses.push(`incident_date <= '${endDate}'`);
|
|
137
|
-
// Location filter using within_circle
|
|
138
|
-
whereClauses.push(`within_circle(geocoded_column, ${location.latitude}, ${location.longitude}, ${radiusMeters})`);
|
|
139
|
-
params.set('$where', whereClauses.join(' AND '));
|
|
140
|
-
// Add app token if provided
|
|
141
|
-
if (this.fireConfig.appToken) {
|
|
142
|
-
params.set('$$app_token', this.fireConfig.appToken);
|
|
87
|
+
async fetchIncidents(location, timeRange, radiusMeters, categories) {
|
|
88
|
+
// Phoenix Fire 30-day incident history
|
|
89
|
+
const baseUrl = 'https://maps.phoenix.gov/phxfire/rest/services/IncidentHistory30DayPoints/MapServer/0/query';
|
|
90
|
+
// Build where clause for time range using DATE format (required by this ArcGIS server)
|
|
91
|
+
const startDate = new Date(timeRange.start).toISOString().split('T')[0];
|
|
92
|
+
const endDate = new Date(timeRange.end).toISOString().split('T')[0];
|
|
93
|
+
// Build type filter
|
|
94
|
+
const typeFilters = ["TYPE='FIRE'"];
|
|
95
|
+
if (this.fireConfig.includeEMS) {
|
|
96
|
+
typeFilters.push("TYPE='EMS'");
|
|
97
|
+
}
|
|
98
|
+
if (this.fireConfig.includeService) {
|
|
99
|
+
typeFilters.push("TYPE='SERVICE'");
|
|
143
100
|
}
|
|
144
|
-
|
|
101
|
+
const params = new URLSearchParams({
|
|
102
|
+
where: `REPORTED >= DATE '${startDate}' AND REPORTED <= DATE '${endDate}' AND (${typeFilters.join(' OR ')})`,
|
|
103
|
+
outFields: '*',
|
|
104
|
+
f: 'geojson',
|
|
105
|
+
outSR: '4326',
|
|
106
|
+
resultRecordCount: String(this.fireConfig.limit),
|
|
107
|
+
orderByFields: 'REPORTED DESC',
|
|
108
|
+
});
|
|
109
|
+
const url = `${baseUrl}?${params}`;
|
|
110
|
+
const response = await this.fetchJson(url);
|
|
111
|
+
if (!response.features) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
// Transform and filter by location
|
|
115
|
+
const alerts = response.features
|
|
116
|
+
.filter(f => {
|
|
117
|
+
if (!f.geometry?.coordinates)
|
|
118
|
+
return false;
|
|
119
|
+
const [lng, lat] = f.geometry.coordinates;
|
|
120
|
+
const distance = this.calculateDistance(location.latitude, location.longitude, lat, lng);
|
|
121
|
+
if (distance > radiusMeters)
|
|
122
|
+
return false;
|
|
123
|
+
// Filter by categories if specified
|
|
124
|
+
if (categories && categories.length > 0) {
|
|
125
|
+
const alertCategory = this.mapTypeToCategory(f.properties.TYPE);
|
|
126
|
+
if (!categories.includes(alertCategory))
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
return true;
|
|
130
|
+
})
|
|
131
|
+
.map(f => this.transformIncident(f.properties, f.geometry.coordinates));
|
|
132
|
+
return alerts;
|
|
145
133
|
}
|
|
146
134
|
/**
|
|
147
|
-
*
|
|
135
|
+
* Map incident type to alert category.
|
|
148
136
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
137
|
+
mapTypeToCategory(type) {
|
|
138
|
+
if (type === 'FIRE')
|
|
139
|
+
return 'fire';
|
|
140
|
+
if (type === 'EMS')
|
|
141
|
+
return 'medical';
|
|
142
|
+
return 'fire';
|
|
151
143
|
}
|
|
152
144
|
/**
|
|
153
145
|
* Transform a Phoenix Fire incident to our Alert format.
|
|
154
146
|
*/
|
|
155
|
-
transformIncident(incident) {
|
|
156
|
-
const
|
|
157
|
-
const { category, risk } = this.
|
|
158
|
-
// Parse
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
// Build
|
|
164
|
-
const
|
|
165
|
-
const dispatchTime = incident.dispatch_time ?? '00:00:00';
|
|
166
|
-
const issued = `${incidentDate}T${dispatchTime}`;
|
|
167
|
-
// Determine if this is real-time (within last hour) or historical
|
|
168
|
-
const issuedTime = new Date(issued).getTime();
|
|
169
|
-
const oneHourAgo = Date.now() - 60 * 60 * 1000;
|
|
170
|
-
const temporalType = issuedTime > oneHourAgo ? 'real-time' : 'historical';
|
|
147
|
+
transformIncident(incident, coordinates) {
|
|
148
|
+
const [longitude, latitude] = coordinates;
|
|
149
|
+
const { category, risk } = this.mapCategoryToRisk(incident.TYPE, incident.CATEGORY);
|
|
150
|
+
// Parse timestamp
|
|
151
|
+
const issued = new Date(incident.REPORTED).toISOString();
|
|
152
|
+
// Determine if real-time (within last 24 hours)
|
|
153
|
+
const isRecent = Date.now() - incident.REPORTED < 24 * 60 * 60 * 1000;
|
|
154
|
+
const temporalType = isRecent ? 'real-time' : 'historical';
|
|
155
|
+
// Build title
|
|
156
|
+
const title = this.buildTitle(incident.TYPE, incident.CATEGORY);
|
|
171
157
|
return this.createAlert({
|
|
172
|
-
id: `phoenix-fire-${incident.
|
|
173
|
-
externalId: incident.
|
|
174
|
-
title
|
|
158
|
+
id: `phoenix-fire-${incident.INCIDENT}`,
|
|
159
|
+
externalId: incident.INCIDENT,
|
|
160
|
+
title,
|
|
175
161
|
description: this.buildDescription(incident),
|
|
176
162
|
riskLevel: risk,
|
|
177
163
|
priority: this.riskLevelToPriority(risk),
|
|
@@ -179,84 +165,97 @@ class PhoenixFirePlugin extends base_plugin_1.BasePlugin {
|
|
|
179
165
|
temporalType,
|
|
180
166
|
location: {
|
|
181
167
|
point: { latitude, longitude },
|
|
182
|
-
|
|
183
|
-
city: incident.city ?? 'Phoenix',
|
|
168
|
+
city: incident.CITY === 'PHX' ? 'Phoenix' : incident.CITY,
|
|
184
169
|
state: 'AZ',
|
|
185
|
-
zipCode: incident.zip,
|
|
186
170
|
},
|
|
187
171
|
timestamps: {
|
|
188
172
|
issued,
|
|
189
173
|
eventStart: issued,
|
|
190
|
-
eventEnd: incident.clear_time ? `${incidentDate}T${incident.clear_time}` : undefined,
|
|
191
174
|
},
|
|
192
175
|
metadata: {
|
|
193
|
-
incidentNumber: incident.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
176
|
+
incidentNumber: incident.INCIDENT,
|
|
177
|
+
type: incident.TYPE,
|
|
178
|
+
category: incident.CATEGORY,
|
|
179
|
+
classification: incident.CLASSIFICATION,
|
|
180
|
+
station: incident.STATION?.trim(),
|
|
181
|
+
fireDistrict: incident.FIRE_DISTRICT,
|
|
182
|
+
councilDistrict: incident.COUNCIL_DISTRICT,
|
|
183
|
+
village: incident.VILLAGE,
|
|
200
184
|
},
|
|
201
185
|
});
|
|
202
186
|
}
|
|
203
187
|
/**
|
|
204
|
-
* Map
|
|
188
|
+
* Map category to risk level.
|
|
205
189
|
*/
|
|
206
|
-
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
190
|
+
mapCategoryToRisk(type, category) {
|
|
191
|
+
// Check specific category mapping
|
|
192
|
+
const upperCategory = category?.toUpperCase() ?? '';
|
|
193
|
+
if (CATEGORY_MAP[upperCategory]) {
|
|
194
|
+
return CATEGORY_MAP[upperCategory];
|
|
210
195
|
}
|
|
211
|
-
//
|
|
212
|
-
|
|
213
|
-
if (callType.includes(key) || key.includes(callType)) {
|
|
214
|
-
return value;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// Default based on common keywords
|
|
218
|
-
if (callType.includes('FIRE') || callType.includes('SMOKE') || callType.includes('BURN')) {
|
|
196
|
+
// Default by type
|
|
197
|
+
if (type === 'FIRE') {
|
|
219
198
|
return { category: 'fire', risk: 'high' };
|
|
220
199
|
}
|
|
221
|
-
if (
|
|
222
|
-
|
|
223
|
-
|
|
200
|
+
if (type === 'EMS') {
|
|
201
|
+
// ALS is higher priority than BLS
|
|
202
|
+
if (category === 'ALS') {
|
|
203
|
+
return { category: 'medical', risk: 'high' };
|
|
204
|
+
}
|
|
224
205
|
return { category: 'medical', risk: 'moderate' };
|
|
225
206
|
}
|
|
226
|
-
|
|
227
|
-
return { category: 'fire', risk: 'moderate' };
|
|
207
|
+
return { category: 'fire', risk: 'low' };
|
|
228
208
|
}
|
|
229
209
|
/**
|
|
230
|
-
*
|
|
210
|
+
* Build incident title.
|
|
231
211
|
*/
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
212
|
+
buildTitle(type, category) {
|
|
213
|
+
const categoryLabels = {
|
|
214
|
+
ALS: 'Medical Emergency (ALS)',
|
|
215
|
+
BLS: 'Medical Call (BLS)',
|
|
216
|
+
CEMS: 'Community EMS',
|
|
217
|
+
FIRE: 'Fire Incident',
|
|
218
|
+
'MISC SERVICE': 'Service Call',
|
|
219
|
+
SERVICE: 'Service Call',
|
|
220
|
+
};
|
|
221
|
+
if (type === 'FIRE') {
|
|
222
|
+
return category === 'FIRE' ? 'Fire Incident' : `Fire: ${category}`;
|
|
223
|
+
}
|
|
224
|
+
return categoryLabels[category] ?? `${type}: ${category}`;
|
|
239
225
|
}
|
|
240
226
|
/**
|
|
241
227
|
* Build description from incident data.
|
|
242
228
|
*/
|
|
243
229
|
buildDescription(incident) {
|
|
244
230
|
const parts = [];
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
231
|
+
parts.push(`Type: ${incident.TYPE}`);
|
|
232
|
+
parts.push(`Category: ${incident.CATEGORY}`);
|
|
233
|
+
if (incident.CLASSIFICATION) {
|
|
234
|
+
parts.push(`Classification: ${incident.CLASSIFICATION}`);
|
|
248
235
|
}
|
|
249
|
-
if (incident.
|
|
250
|
-
parts.push(`
|
|
236
|
+
if (incident.VILLAGE) {
|
|
237
|
+
parts.push(`Area: ${incident.VILLAGE}`);
|
|
251
238
|
}
|
|
252
|
-
if (incident.
|
|
253
|
-
parts.push(`
|
|
254
|
-
}
|
|
255
|
-
if (incident.station) {
|
|
256
|
-
parts.push(`Station: ${incident.station}`);
|
|
239
|
+
if (incident.STATION?.trim()) {
|
|
240
|
+
parts.push(`Station: ${incident.STATION.trim()}`);
|
|
257
241
|
}
|
|
258
242
|
return parts.join('\n');
|
|
259
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Calculate distance between two points in meters.
|
|
246
|
+
*/
|
|
247
|
+
calculateDistance(lat1, lon1, lat2, lon2) {
|
|
248
|
+
const R = 6371e3;
|
|
249
|
+
const φ1 = (lat1 * Math.PI) / 180;
|
|
250
|
+
const φ2 = (lat2 * Math.PI) / 180;
|
|
251
|
+
const Δφ = ((lat2 - lat1) * Math.PI) / 180;
|
|
252
|
+
const Δλ = ((lon2 - lon1) * Math.PI) / 180;
|
|
253
|
+
const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
|
|
254
|
+
Math.cos(φ1) * Math.cos(φ2) *
|
|
255
|
+
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
|
|
256
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
257
|
+
return R * c;
|
|
258
|
+
}
|
|
260
259
|
}
|
|
261
260
|
exports.PhoenixFirePlugin = PhoenixFirePlugin;
|
|
262
261
|
//# sourceMappingURL=phoenix-fire.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phoenix-fire.plugin.js","sourceRoot":"","sources":["../../../../src/plugins/fire-emt/phoenix-fire.plugin.ts"],"names":[],"mappings":";;;AACA,gDAA8D;
|
|
1
|
+
{"version":3,"file":"phoenix-fire.plugin.js","sourceRoot":"","sources":["../../../../src/plugins/fire-emt/phoenix-fire.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AirNowPlugin = exports.ArizonaTrafficPlugin = exports.PhoenixEventsPlugin = exports.
|
|
3
|
+
exports.AirNowPlugin = exports.ArizonaTrafficPlugin = exports.PhoenixEventsPlugin = exports.NIFCWildfirePlugin = exports.PhoenixFirePlugin = exports.NWSWeatherPlugin = exports.BasePlugin = void 0;
|
|
4
4
|
// Base plugin
|
|
5
5
|
var base_plugin_1 = require("./base-plugin");
|
|
6
6
|
Object.defineProperty(exports, "BasePlugin", { enumerable: true, get: function () { return base_plugin_1.BasePlugin; } });
|
|
7
7
|
// Weather plugins
|
|
8
8
|
var weather_1 = require("./weather");
|
|
9
9
|
Object.defineProperty(exports, "NWSWeatherPlugin", { enumerable: true, get: function () { return weather_1.NWSWeatherPlugin; } });
|
|
10
|
-
// Police/crime plugins
|
|
11
|
-
var police_blotter_1 = require("./police-blotter");
|
|
12
|
-
Object.defineProperty(exports, "PhoenixPolicePlugin", { enumerable: true, get: function () { return police_blotter_1.PhoenixPolicePlugin; } });
|
|
13
10
|
// Fire/EMS plugins
|
|
14
11
|
var fire_emt_1 = require("./fire-emt");
|
|
15
12
|
Object.defineProperty(exports, "PhoenixFirePlugin", { enumerable: true, get: function () { return fire_emt_1.PhoenixFirePlugin; } });
|
|
16
|
-
|
|
17
|
-
var pulsepoint_1 = require("./pulsepoint");
|
|
18
|
-
Object.defineProperty(exports, "PulsepointPlugin", { enumerable: true, get: function () { return pulsepoint_1.PulsepointPlugin; } });
|
|
13
|
+
Object.defineProperty(exports, "NIFCWildfirePlugin", { enumerable: true, get: function () { return fire_emt_1.NIFCWildfirePlugin; } });
|
|
19
14
|
// Events plugins
|
|
20
15
|
var events_1 = require("./events");
|
|
21
16
|
Object.defineProperty(exports, "PhoenixEventsPlugin", { enumerable: true, get: function () { return events_1.PhoenixEventsPlugin; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,kBAAkB;AAClB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AAGzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":";;;AAAA,cAAc;AACd,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,kBAAkB;AAClB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AAGzB,mBAAmB;AACnB,uCAAmE;AAA1D,6GAAA,iBAAiB,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAG9C,iBAAiB;AACjB,mCAA+C;AAAtC,6GAAA,mBAAmB,OAAA;AAG5B,kBAAkB;AAClB,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA;AAG7B,sBAAsB;AACtB,6CAA6C;AAApC,2GAAA,YAAY,OAAA"}
|