Roles / Responsibilities

We implement Incident Command System (ICS) on all our incidents; basic on small incidents and we grow it for more complex. We have these main three on all incidents:

  • Command
  • Operations
  • Safety

That said, Firefighter perform various roles on scene – based upon the incident type – and we record many of those roles.

A list of recorded roles.
Just some of the recorded roles…

Within our organization we have personnel at various levels of their career, at various levels of experience, and mentoring the membership through new roles is healthy for the organization. Recording these roles is good for helping “spread the wealth”.

New members need a certain number of successful driving experiences with an officer before they can progress to driving by themselves, or emergent. We record those. Senior firefighters need opportunities to be Command or Operations, and we need to spread that wealth. A healthy organization has experience redundancy, and maintaining that is an ongoing challenge.

We look to “Command” for answers to any question from the incident. We look to “Primary Patient Care” for the patient care report paperwork. We have special roles such as “Call credit during Training/Event” for those unable to respond, but due to Fire Department business. Roles help us add per member detail to a report, and build details of our response.

Keeping track of who performs what roles is valuable data for our membership.

D4H Tags – reportable detail

We use D4H tags to record various aspects of our incidents and exercises. With tags we can do data analysis (should we ever need, including for grant application purposes) which allow us to pull reports that the same detail in the narrative would not.

As a fire department we provide NFIRS (National Fire Incident Reporting System) data on our incidents. We captured many of the NFIRS information requirements into groups of tags.

Our two main groups are “Response Categories” and “Training Categories” and for incidents we tag the main aspect of the call from the former. We then provide additional details through the other “Response *” groups of tags.

D4H-Tags

Our district covers three counties (which provides some interesting challenges) and we chose to record which county the incident occurred within.

We do add some “Special Handling” and “Miscellaneous” tags for other aspects (including events) but those are pretty specific to us/our needs.

Note: D4H doesn’t distinguish tags between incident and exercises, so our “Training Categories” tags (another posting) do show up, and so sometime users incorrectly select them. We created reports looking for any training tags incorrectly added to incidents and that allows us to capture those mistakes.

We’ve found that “D4H tags” are a very powerful and important aspect of D4H.

Designing your incident identifier

Our department gets dispatched via a Computer Aided Dispatch (CAD) system. That system generates unique identifiers and when we are looking up an incident we use that identifier.

D4H allows the user to utilize the system generated identifier, or (although it is hidden behind a ‘magic’ – and confusing to our membership – click on the system identifier text) enter a user entered identifier.

System Generated Identifier
User Entered Identifier

We enter our CAD number as that identifier, but we’ve learned to work around some aspects…

Our CAD numbers start over each year, they are only unique within a year. January 1st the first CAD of a year would be 000001, again.

Also, D4H search is prefix loaded so we:

  • We prefix our CAD # with zeros to 6 digits. This way we can search of CAD #11 without CAD #111 and CAD #1111 getting in the way.
  • We postfix our CAD # with “CAD” and 4 digit year to make it unique.

Here is our design for a unique identifier:

[Zero Padded CAD#]”CAD”[4 Digit Year]

Examples would give:

000001CAD2019, 000002CAD2019, 123456CAD2019

If we ever need to add an “incident credit” or “add on” incident to the CAD we might add a letter, e.g. 000001CAD2019A and so on. If we ever need something added but not through CAD we use the system generated identifier.

This design allows us unique identifiers we can access easily through search.

Inviting Groups in D4H…

We are a mountain fire department with both a community and significant wildland potential (with urban interface.) Our firefighters train for structural firefighting and wildland firefighting (and more.) We also have a wildland team for additional firefighters that respond to wildland fires.

We’ve created four D4H groups:

  • Full Firefighters (FFF)
  • Wildland Team Firefighter (WLT)
  • (Incident-only) Active Full Firefighters (AFFF)
  • (Incident-only) Active Wildland Team Firefighter (AWLT)

For structure fires, medical incidents, hazardous materials, and such only our AFFF respond. For wildland fires, illegal / unattended campfires, smoke reports both AFFF and AWLT respond. We manage their “requested” status in D4H by adding the appropriate group.

Group-Invitations

This keeps our memberships’ percentages correctly representing their standing. They are invited (requested) to the incidents they can attend and not those they cannot, nor those they are temporarily unavailable for.

(More precisely – when creating an incident report – we add the personnel that attended and mark them as attended, then use “Quick Add” to add the correct “Active” response groups. Note that the newly added members are added and left “selected”. We then use “Bulk Action” to “Set Status” to “Absent”. )

Our membership are operational (our responders) or non-operational (administration, support.) When a firefighter has to take an absence we do NOT change their operational status but we temporarily move them out of their “Active” group. (We do have a “Temporary non-Operational” group, but that is less important.)

Working with “Add Another Date” for Event & Exercise Shifts/Slots

We do shifts for staffing community slash days, sign-up slots for annual mask fit testing and arduous pack tests, and more. (We use D4H events for this, rather than try to teach our membership yet another tool.) When creating events (or exercises) in D4H one can create the activity, but “clone it” to multiple dates / times. The title, location, pre-plan and attendance requests are all copied to the multiple activities created.

Note: Once created you can not longer edit them as one, so ensure your activity is correct before you press “finished” and save/copy it.

Once created the event or exercises typically have incrementing sequence numbers, and you can share them (say in an email) with your members by listing the links. We tend to do this in chronological order, allowing them to connect to D4H and sign-up.

Typically we have a limit on the number who can attending. Sometimes it is one member, sometimes it is based upon the number of a resource (e.g. available pack test weight vests.) We list the number that can sign up in the pre-plan, however we do have to manually monitor this since D4H does not support such a limit.

Longstanding bug/workaround…

D4H creates activity records, and multiple “attendance” records for the activity. (One or more per user.) Unfortunately when creating entries across multiple days the activity start & end date/time are correctly calculated, however the attendance start & end date/time are NOT. Somehow (seemingly a code bug) they inherit the *time* of the original activity.

If you create entries for 0900, 1000, 1100 you’ll get activities at those times, but attendance records at 0900, 0900, 0900. This is confusing to membership ‘cos it is presented incorrectly in calendar and the “Are you attending” prompts.

The way we’ve fixed this (since multiple reports over the years to D4H have not gotten this resolved, yet) is to:

  • Use a date range in the events view to gather a list of all these events.
  • Open each event in a separate browser tab (creating a “work list”)
  • Press “Update details” on an event.
  • Go to “Attendance” tab, select all attendees using top/left checkbox, use “Bulk Action” to “Set Period” (set to the correct activity dates) to correct the attendance records, then “Finished” to save.
  • Close the tab once the event view is restored as corrected, taking one off the “work list”.

This bug/workaround does diminish the time saving benefit (for the administrator) of “Add Another Date”, but it still saves creating repetitive activities by hand.

Combining/processing D4H reports

D4H comes with a powerful reporting capability to analyse your team data. Much of the data your organization has gathered in D4H is available via reports. That said, we have custom logic that we need to apply for our firefighter’s annual requirements.  We gather the firefighter’s fire training hours, their medical training hours, their station training hours and more. Each of these come from a separate D4H report. Eight of them. We combine the outputs from a number of D4H reports into one combined report – with our logic and our presentation – for ease of use by our firefighters. That takes a bit of processing…

We use the “Download to Spreadsheet” option on the report page (see below) which creates and downloads a CSV (comma separated variable) text file that can be easily processed by Excel (and other spreadsheet programs) or by scripting languages:

Exporting-CSV

We download the output and rename the file as (say) fire.csv (with one named for each of the others.) We then process these files using a ruby script…

require 'csv';
# Fire
puts "---------------------------------------------------------------------- Fire"
CSV.foreach("fire.csv", :encoding => 'bom|utf-8') do |row|
    if $. > 1
        # Skipped header line...
        raw_name = row[1]     # Name in column 1
        name = raw_name.strip # Trimmed spaces from name
        fire_hours = ( row[5].to_f / 60 ) # Fire hours...
        ...

In order to speed the process of generating the report data … by removing the manual steps of selecting the report, selecting the date range (and not making a mistake), remembering to press ‘GO’ to re-run it with the date range, then downloading … we created a local HTML file called edit-to-download-reports.html with links to each report.

To download we (1) login to D4H in a browser (2) open the HTML file with links (anchor tags) for each of these, where you would replace:

  1. The subdomain to your D4H subdomain
  2. The report identifier (get it from the URL of the report)
  3. The start and end dates. We typically have the start of year and the end of the month we are reporting to.

Extract the report ID from the end of the report web address:

https://{YOUR SUBDOMAIN}.d4h.org/team/reports/custom/view/{REPORT_ID}

Remember to edit the “endDate” if you are running these for (say) a new month:

https://{YOUR SUBDOMAIN}.d4h.org/team/oldexport/?category=reports_custom&format=csv&param%5Breport_id%5D={REPORT_ID}&param%5BstartDate%5D=2018-01-01&param%5BendDate%5D=2018-12-31

We’ve found that by using D4H reporting and then exporting to CSV file format we can extend the functionality to our custom needs.