Truck Totaled

Since so many people seem to have missed all of the communications via facebook (well, I can’t blame them, I spend less time there every time they make an “improvement”), I guess I should give in and post something to my usually-so-professional blog, explaining a bit about what happened to my beautiful truck, which I’d put so much work into.

Two weeks ago – 08:43 on Saturday, May 1st, 2010 – I was involved in a “bit” of an accident with my truck while driving down to my dad’s place in Hunterdon county. I was on 208 Northbound in Franklin Lakes right across from the Colonial Rd intersection (maybe 8 minutes from home?), early in the morning. I really don’t have any desire to tell the whole detailed story again, but bottom like: there were three geese crossing the highway, and someone got the brilliant idea to rapidly decelerate from 60 MPH to allow the birds to safely cross. I still can’t provide for the account of where every vehicle on the road went, but there was a half-second of various drivers making evasive maneuvers, me jamming on the brake and horn, and my truck having a fast introduction to the ass-end of a box truck.

Luckily nobody was injured, though I did have neck pain for a day or two after. The guy who decided to stop/cut left (in front of the box truck) drove happily off into the sunrise, the guy in a blacked out SUV who had been between the box truck and my vehicle (obscuring most of the truck from my view) also, as far as I know, departed. Once I got the airbags out of my way and the door kicked open, my former vehicle was on its way to the body shop.

I must say, while I had an absolutely horrendous experience with geico when this same vehicle was stolen a year and a half ago, they were actually pretty good this time around. The accident happened on a Sunday, I took Monday off of work to get a rental car and deal with the claim (yeah, it turns out my policy didn’t have the rental coverage, much to my surprise…) and the claims agent came out Tuesday (less than 48 hours after the accident) to make an estimate. He totaled the truck – the motor was even broken loose of all of the mounts – and I had a check in my hand (minus the balance of the financing) 12 days after the accident. So… my experience with Geico this time around was much better. I guess as long as there’s a vehicle for them to look at, they’re happy. Though I’m switching to Progressive for the next vehicle.

So, that’s the story. Assuming Enterprise car rental is playing nice, I’ll be picking up the truck I just bought tomorrow morning.

Before:

truck photo

After:

truck photo

truck photo

truck photo

truck photo

truck photo

truck photo

truck photo

truck photo

truck photo

truck photo

Federal Government: Ignoring what we learned 5,000 years ago

Being a volunteer EMT, and at times an outdoorsy-type person, I occasionally get emails from friends about disaster-related topics. Especially in the post-9/11 days. Recently, I got an email asking me if I’d seen the Department of Homeland Security’s disaster preparedness site, ready.gov. I’d heard a bit about it, but hadn’t really looked around. The site’s main premise is to educate people about how to prepare for a disaster – “get a kit”, “make a plan”, “be informed”.

The site’s own About page states that it is “designed to educate and empower Americans to prepare for and respond to emergencies including natural and man-made disasters. The goal of the campaign is to get the public involved and ultimately to increase the level of basic preparedness across the nation.”

The first step on the site, “Get a Kit”, includes a list of supplies to have on hand as a basic disaster kit. The introduction to the page reads:

You may need to survive on your own after an emergency. This means having your own food, water, and other supplies in sufficient quantity to last for at least three days. Local officials and relief workers will be on the scene after a disaster, but they cannot reach everyone immediately. You could get help in hours, or it might take days. In addition, basic services such as electricity, gas, water, sewage treatment, and telephones may be cut off for days, or even a week or longer.

.

I will admit, I assumed this would be geared more towards urbanites, not those of us in the suburbs or rural America (the latter generally being more accustomed to self-sufficiency), so I adjusted my expectations accordingly. At first glance, it seems to include most of the things that the EMT in me would want it to:

  • Food and water
  • First aid kit
  • Wrench or pliers to turn off gas line
  • Prescription medications
  • Bleach (as a disinfectant and for water purification)
  • Fire extinguisher
  • Matches

However, I found a number of things obviously missing. Sure, some are minor – matches but no mention of fuel, bleach but not even coffee filters to remove particulate matter from water. I also find it comical that so many years after the Cold War “Duck and Cover” approach to nuclear safety, the government is now telling people to Shelter-In-Place in the event of a biological attack – by covering their doors and windows with plastic sheeting!

But by far the most egregious omission from the list – something learned by man at least 5,000 years ago, and taught to every Boy Scout – is the simplest tool: a knife. Yup, that’s right, the Disaster Kit list doesn’t include any variety of cutting implement. I don’t know if whoever wrote up the list is just scared of getting sued when little Bobby finds the knife and kills himself, or whether they’re really that stupid. But I, for one, never leave my house without some variety of the oldest real tool devised by man, and can’t imagine anyone thrown into any sort of “survival” situation without at least a rudimentary way to cut, scrape, pry, etc. I’d say that if I were without utilities or organized public safety for “at least three days”, I’d sure want to be able to make simple repairs, fashion simple tools, or perhaps cut something.

On another (albeit less important) note, there are still many, many Americans, not just in rural areas, who have a fireplace or wood stove. What about a few days’ worth of wood?

Using Google Maps to produce usable, printable maps

This is a follow-up to my Making maps from GIS data with Inkscape post. After playing around with Inkscape for quite a while, and coming up with the dismal results seen in that post, I decided there has to be an easier way. A little Googling turned up this video tutorial on how to print large scale maps from Google Maps. It turns out that the Google Maps API will honor almost any pixel resolution that it’s passed. The Screengrab add-on for Firefox has the wonderful capability of being able to capture a screengrab of page content, at actual resolution, regardless of screen resolution. So load up a 5000×5000 pixel Google Map, use the Screengrab addon, and end up with a full 5000×5000 pixel image file.

After testing this a bit, I decided to go the Google Maps route. This also has a lot of other added bonuses – I can store my overlay data in simple XML files, add and remove layers on-the-fly, and also make it available online (and, theoretically, to any Google Maps-equipped device used by responders). This even opens up the possibility of using paper maps as a last resort, and providing the Fire Department with live hydrant maps on GPS-enabled handheld devices and phones.

The quirks, however, may need some serious photoshopping (err, rather, gimping) to fix:

  1. With all of the background color, how will this look when printed?
  2. How do I make the town borders easily defined? It would be a lot of raster editing to remove the background color of areas outside of town.
  3. How do I overlay a grid for a street name index?

The first step was to setup a large Google Map to develop with. I used PHP and Monte Ohrt’s GoogleMapAPI PHP wrapper class. It was simple enough to setup a big (3300x5100px) map, zoom out in Firefox, and start adding some stuff. My examples and development pages, if you want to take a peek at the code, are here.

The first step was to draw a polygon for the outline of the town. I found some very detailed information on how to get zip code boundary lines on Matt Cutts’ blog. Apparently, he’s a Google software engineer, heading up their webspam team. I grabbed the files from the Census, as described, and came up with the boundary for my zip code looking like:

        60      -0.741427638843858E+02       0.409963180802469E+02
      -0.741375870000000E+02       0.410075970000000E+02
      -0.741308870000000E+02       0.410061970000000E+02
      -0.741308870000000E+02       0.410061970000000E+02
      -0.741307260000000E+02       0.410032600000000E+02
      -0.741326870000000E+02       0.409955970000000E+02
      -0.741278870000000E+02       0.409943970000000E+02
      -0.741280870000000E+02       0.409938970000000E+02
      -0.741327870000000E+02       0.409853970000000E+02
      -0.741352870000000E+02       0.409830970000000E+02
      -0.741369600000000E+02       0.409818620000000E+02
      -0.741410520000000E+02       0.409821940000000E+02
      -0.741412870000000E+02       0.409826970000000E+02
      -0.741412870000000E+02       0.409826970000000E+02
      -0.741417870000000E+02       0.409847970000000E+02
      -0.741427870000000E+02       0.409863970000000E+02
      -0.741482870000000E+02       0.409868970000000E+02
      -0.741536880000000E+02       0.409899970000000E+02
      -0.741510880000000E+02       0.409929970000000E+02
      -0.741531880000000E+02       0.409965970000000E+02
      -0.741571880000000E+02       0.409988970000000E+02
      -0.741557880000000E+02       0.410013970000000E+02
      -0.741461870000000E+02       0.410018970000000E+02
      -0.741400870000000E+02       0.410065970000000E+02
 
      -0.741375870000000E+02       0.410075970000000E+02
END

As per Matt’s instructions, I stripped off the first and last lines, converted everything to normal decimal notation, and built it into a PHP array:

$MP_boundary = array();
$MP_boundary[] = array(-74.137587, 41.007597);
$MP_boundary[] = array(-74.130887, 41.006197);
$MP_boundary[] = array(-74.130887, 41.006197);
$MP_boundary[] = array(-74.130726, 41.003260);
$MP_boundary[] = array(-74.132687, 40.995597);
$MP_boundary[] = array(-74.127887, 40.994397);
$MP_boundary[] = array(-74.128087, 40.993897);
$MP_boundary[] = array(-74.132787, 40.985397);
$MP_boundary[] = array(-74.135287, 40.983097);
$MP_boundary[] = array(-74.136960, 40.981862);
$MP_boundary[] = array(-74.141052, 40.982194);
$MP_boundary[] = array(-74.141287, 40.982697);
$MP_boundary[] = array(-74.141287, 40.982697);
$MP_boundary[] = array(-74.141787, 40.984797);
$MP_boundary[] = array(-74.142787, 40.986397);
$MP_boundary[] = array(-74.148287, 40.986897);
$MP_boundary[] = array(-74.153688, 40.989997);
$MP_boundary[] = array(-74.151088, 40.992997);
$MP_boundary[] = array(-74.153188, 40.996597);
$MP_boundary[] = array(-74.157188, 40.998897);
$MP_boundary[] = array(-74.155788, 41.001397);
$MP_boundary[] = array(-74.146187, 41.001897);
$MP_boundary[] = array(-74.140087, 41.006597);
$MP_boundary[] = array(-74.137587, 41.007597);

Though this data doesn’t seem exactly 100% accurate (at least by my knowledge of the town, and every map I can find) it’s quite close and a very good start.

I’ll update later this week when I have some more done…

Problems with TheAntennaFarm.com

When I did the communications upgrades to my truck, I was originally going to order the antennas and mounts from Tessco, but I found that The Antenna Farm in Montana had the best price on the IC-F5061, and also carried the antennas and mounts. I must first say that there was a notice on the Antenna Farm web site that they had moved to a new location a few days before I placed my order. I waited to place my order until the web site stated that things were shipping normally.

When I placed my order, I added in the “notes” field that I would like tracking numbers sent to me as soon as they were available, as I had requested UPS shipping. I received an initial order confirmation. After waiting a few days, I had received neither a confirmation that my card was charged nor a tracking number. The order status on their web site was still listed as “processing”. I called back four days after placing my order, and it took five calls over two days to get anything other than an answering machine. When I finally got through to John (the owner and, as far as I can tell, sole employee), the voice quality of their phone line was so poor I could hardly communicate. I got enough of his end of the conversation to understand that I should email him, which I did (for the second or third time). In the email, I stated that I was having the equipment installed, so I really needed to know when it would arrive in order to schedule an installation.

I placed the order early on a Monday morning. After numerous attempts to make contact, and no change in the “processing” status on the web site, I finally got an email back on Thursday afternoon stating that some of the antenna mounts were out of stock, and part of the order would be drop shipped from the distributor, and should be there the next day. Still no mention of a tracking number, which I had requested numerous times. I’ve done quite a bit of selling on Ebay, and know how easy it is to provide a customer with this information. He also stated that the high frequency antenna mount for the WiFI antenna was out of stock at the distributor as well, so he had them make up a more expensive one at no extra cost.

The drop ship box arrived the next day, Friday. It contained the two antennas (I ordered the WiFi antenna directly from L-Com) and two antenna mounts – *one* of the Antenex MB8X’s, and the high frequency mount for the WiFi antenna. The WiFi NMO mount was definitelty not the one I ordered. I know John incurred extra cost in having them custom add a connector, but it didn’t look like any NMO mount I had ever seen (it appeared to accept a pin in the center, as opposed to having a flat disc to make contact).

The next week, on Tuesday, the Icom radio arrived. It was as ordered, but the second Antenex MB8X was nowhere to be found. I did finally receive a tracking number about 24 hours prior to delivery.

Two weeks after I placed my order (with three day UPS shipping), Ken managed to fit me in early in the morning. I told him about the missing third antenna mount, and he agreed to use one from his stock. Much to my dismay, when he dropped off the truck, I learned that *neither* of the antenna mounts that arrived were true NMO mounts, and thus they were both useless.

Overall, I’m horribly disappointed with The Antenna Farm. The lack of communication is appalling, regardless of whether they’re having telephone problems or not (and I find it hard to believe that this guy doesn’t have a cell phone, or can’t setup something VoIP-based). The online feedback on order status is nonexistent, and I might as well have had it shipped USPS, because I only got one tracking number and that was a mere day before delivery. One of three antenna mounts was never received (though John did refund me the cost) and the other two were not as specified. He clearly has no idea how to deal with someone who actually has a timeframe – perhaps normal for someone who does most of his business with hams and not public safety (I guess that’s my fault for choosing a bad vendor). When he found out that there would be delays in fulfilling my order, John should have contacted me and asked me how I wanted to proceed. The bulk of my order was drop shipped from Tessco, who I’ve done business with before and would have been more than happy to order direct from.

The programming kit for the F5061 that I ordered from The Antenna Farm, which was listed as “you buy the cable, we throw in the software”, arrived as a loose cable in the radio box and a home-burned CD, without even any writing on it to say what it was, with a simple zip file of the installer. I don’t know what Icom’s licensing agreement is, but I doubt they’d be happy about this, as the software isn’t available on their web site.

To top it all off, I was told by my installer that he stopped buying from The Antenna Farm a few years ago due to endless problems.

Update on my F-250 – Icom mobile, antennas, strobes

I’ve done a bit of work on my truck since my last update, and also have some new photos. The work done includes:

  • Added 4 strobes head to rear of truck, with strobe box in NEMA enclosure in bed.
  • Icom F5061 (VHF 50W) mobile radio in console
  • Three antenna mounts and antennae on roof – WiFi antenna, VHF mobile antenna and wideband scanner antenna. The installation and wiring was done by Ken’s Auto Electric of Midland Park, NJ (Ken is a great guy, and prices very reasonably).

Click photos for larger version.

truck photo

Looking good after a wash and detail…

truck photo

Another photo after the wash (before antenna installation)

truck photo

Front lighting job finished.

truck photo

Direct frontal view (before antennae). The Dual Avenger is barely visible behind the Super Duty graphic at the top of the windshield, but shows through very clearly when lit.

truck photo

Running board mounted LIN4′s.

truck photo

Rear license plate mounted LIN3s and rear strobes.

truck photo

Closeup of rear LIN3s on license plate bracket.

truck photo

Icom F5061 mounted in center console, wired to center antenna.

truck photo

Video of rear lights (LIN3s and strobes) during the day. Quicktime MOV, 20 seconds, 26 MB. download/view video.

truck photo

Video of truck lit at night, shot from all sides. 24 seconds, Quicktime MOV, 29 Mb. download/view video.

truck photo
truck photo
truck photo

Antenna installation by Ken’s Auto Electric. Front to rear:

  1. L-Com HG2405U-NMO 2.4GHz 5dBi WiFi antenna for future laptop.
  2. Antenex QW152B 152-162MHz 1/4 wave unity gain VHF antenna hooked up to Icom mobile.
  3. Antenex ABSCANC 150/450/800 MHz scanner antenna.

Truck Wiring and Lighting – Part I

As mentioned in my Custom Truck Console post, since my truck was stolen and now recovered (with all of the emergency equipment stripped out – weird) I’ve got to start from scratch. Since I finished the console, I’ve started work on redoing the lighting. The first grueling step was to check continuity of the existing wiring (what was left of it), strip out everything that didn’t work, and rehab what did. Then I did a few pulls, mainly a giant pull from the console to under the hood of six 16-ga wires and three 12-ga, along with a massive run of 6-ga welding cable direct from the battery (with a circuit breaker) to the console.

There’s a thread covering this install over at elightbars.org as well as a thread on the previous (original) installation.

This is part 1 of (hopefully only) 2. The list of what’s installed so far is:

  • Custom console.
  • Galls SE082 switch box – 3-position slider, 5 on/off rocker switches and one on-off-(on) rocker switch.
  • Radio Shack Pro-433 scanner, hopefully to be replaced by a Icom F5061.
  • B/B Whelen Dual Avenger above rearview mirror.
  • Unitrol 80K air horn (siren wires not connected)
  • 2x Sirennet 100W speakers mounted in front bumper.
  • 2x B/B Whelen LIN4′s on 10-75 Lighting front license plate bracket.

The console with equipment mounted in it:
console

Dual Avenger (B/B) on headliner bracket above rearview mirror – it just fits:
dual avenger on headliner bracket

Avenger from the outside:
avenger from the outside
avenger from the outside, lit

10-75 Intersection Bracket behind front license plate. B/B LIN4′s:
10-75 intersection bracket

SirenNet 100W speakers behind front bumper:
speakers in front bumper

Coming next:

  • 4x (!!!) blue Whelen 500 Linear Super LED’s in front grill, mounted with chrome flanges.
  • B/B LIN4′s on front running board mounts.
  • Blue LIN3′s on rear license plate bracket.
  • Some sort of lights in the rear window – if I can afford it, blue/amber Whelen 400 Linear’s (6-over-6) independently switched.
  • Icom F5061 VHF mobile.
  • VHF antenna, either roof mount or mounted in a stake pocket.

Custom truck console

I’ll keep this post relatively to the point (the original full story is on eLightbars.org here and here). My 2006 Ford F-250 CC XLT was stolen in September, 2008. It was recovered about a month later, after Geico said they’d pay out, and after I’d bought another vehicle. Anyway, it came back from the body shop about 2 months later, and it was time to begin customizing it again. The main parts of the project were wiring and installation and building a custom console…

My main inspiration was some of the custom consoles done by places like Odyssey, though I wanted something carpeted (hopefully a close match to the factory interior). The main idea I was working off of was this one from Odyssey:

Odyssey Excursion console

The general idea was to have a replacement for the factory console which would allow mounting of a radio, emergency lighting controls, and a few other things while not sacrificing storage space. The specific requirements that I came up with included:

  • Mount over the transmission hump more or less where the factory console is, forward to the dash.
  • Allow access to the pull-out cupholders in the dash and not impede access to any controls.
  • Fasten to the floor using only the four factory console bolts.
  • Allow mounting of at least one radio, one switch box, GPS and scanner.
  • Radio and switch box should be mounted using the Jotto Desk faceplates that I had from the CVPI console.
  • The real clincher that prevented me from using a stock console: Have a large storage compartment comparable to the factory console.
  • Provide a set of rear cupholders.

I spent some time over the course of three days or so measuring the console area of the truck and drawing out my initial plan in CAD (specifically the demo version of QCAD for Linux – regrettably not Free software). Once I had the plans drawn up and was satisfied that the angles and measurements were within acceptable tolerance, I made a full-scale prototype out of foam core board. With a little shaving of the corners, I managed to get a relatively good form and transferred it to ½" cabinet-grade luan plywood. It was a bit difficult with only a jigsaw, but worked out relatively well. While I can’t seem to find any pictures of the foam core, here are some of the wood form being assembled and the test fit in the truck:
first assembly and test of console
first assembly and test of console
first assembly and test of console
I’d originally been a bit worried about the structural integrity, but I found that by clamping the corners, pre-drilling and securing them with aggressive wood screws at approximately 1 screw per 1.5 inches along the joints, the plywood held together fine.

After testing the fit and checking that the four factory bolt holes lined up correctly (which they did, and also held the console quite securely), I pulled it back out and started the process of carpeting it. I bought 2 yards (76 x 72 inch) of color #8078 “Dark Grey/Quartz” plush cut pile automotive carpet from StockInteriors.com, for about $80 with shipping. It turns out that the color isn’t an exact match to the factory carpet (I got 6 sample squares from them and this was the closest color) but it’s a good medium between the carpet and upholstery.

Planning for how to cover this wooden behemoth with carpet took quite a few hours, and short of making it into a week-long job of sewing, I decided to wrap the sides and back with one piece, folded over on the bottom and top edges of the storage box, then use separate pieces for the top of the console and the front (which would be adjacent to the dash and mostly hidden from view). I started off with a plan to use 3M Super 90 spray adhesive, on the advice of an ELB member. Unfortunately, I could only find Super 77.

Prior to carpeting, I had to get the equipment mounting openings down to about 8.5" for the 8.75" Jotto faceplates. I cut some excess luan plywood down into 2" wide strips and then cut them to length for the openings, sandwiching about three together with Liquid Nails and then mounted them vertically on the sides of the console.

Carpeting the console at 2 AM probably wasn’t the best idea. I looked at how the cut edges of the carpet would meet and the corners, and decided I’d need some sort of edge molding to make it look good – preferably black powder coated aluminum, somewhere around ½" legs. As such, I decided to forgo most of the glue and stapled the carpet at the edges, planning to cover it with molding. Ok, I lose a few points for that one. The last thing to go on was the carpet on the front and top, which I glued with Super 77 and also stapled on the front (where it can’t be seen). I cut X-shapes in the mounting areas and folded the carpet down, stapling it to the inside of the console, and cut a slit in the front for wiring. The glue didn’t seem to hold on the narrow parts of the top/mounting area, but once faceplates were screwed in it was fine. The faceplates are just held in with screws into the vertical wood strips placed on the sides of the opening.

Top view of the console, mounted in place, with the unfinished storage box.
top view of console

Equipment mounting area:
console equipment mounting area

View from the driver’s seat:
view from drivers seat

Factory cupholders extended with just enough clearance to work:
factory cupholders open, barely

Staples around the edges, intended to be covered with molding. They’re really not that visible unless you make a point of looking at them (given their placement). Red handle is a 100A cutoff for the main battery lead, with a removable handle.
staples around edges and battery cutoff switch

The weekend after console fabrication, I started wiring. Here’s the relevant parts involving the console.

Semi-finished console with equipment mounted. Front-to back, RAM magnet mount for GPS, Radio Shack Pro-433, Galls SE082, nifty Jotto storage tray.
equipment in mounted position

Wire routing in loom from the console to under the dash
main wiring runs

Rear of console – Jotto cupholder and charger for Streamlight Stinger 75014
rear of console

Still to be done:

  • Most of the wiring and installation.
  • Lining the storage box with something, probably toolbox drawer liner.
  • Making a cover/lid for the storage box.

openEPCR

I’ve been toying around for a while with the idea of creating a software package for handling Electronic Patient Care Reports for EMS (Emergency Medical Services) agencies. There are a few popular packages around, but most of them are web-based. In the event of a disaster – or even bad storm – when Internet connectivity is minimal to non-existent, frankly, you’re up the creek without a paddle. There are also, to my knowledge, no Free/Open-Source (or free of cost) packages available. This isn’t good, especially with many states and regions moving to standardized PCRs with electronic submission. This is even worse for the thousands (or more) of purely volunteer EMS organizations out there, who have little to no budget.

So, I’ve started a project – openEPCR.

I know that, for me, this is a *big* undertaking. I figured that Java is the best option, since it’s available on almost all platforms, robust, and frankly is very well accepted. The idea is that such a system should be able to cost *nothing* – so the target audience is people using Linux (or BSD or Solaris) or an existing Windows installation, along with a simple server – MySQL, PostgreSQL, or another database, along with some web server running PHP. I’ll admit that my Java isn’t what it used to be – but more to the point, frankly, if I’m the only person working on this, it’ll take years to finish. So, hopefully, when I get a more concrete plan, I’ll be able to enlist some other developers – especially someone more knowledgeable than me about how best to deal with data caching (in the event – or certainty, as in wireless or vehicular applications – of a loss of connectivity), mobile devices, and HIPPA compliance.

The overall idea is to design a platform that is a base for an EPCR – something that can handle data collection, printing a hard copy, analysis, administration, security, etc. – and all the while be organization-independent. In essence, a framework. Firstly, after having this problem with PHP EMS Tools, it should all be designed with i18n/L10n in mind from the beginning, providing good and easy support for translations. More importantly, all settings should be configurable. To top off the problem, anything that’s obviously organization-specific – like the data set, layout of input forms on the screen, reports on the data, printed copy (both blank and filled-in), user access rights/RBAC, authentication methods, etc. – should all be designed as pluggable modules. The end result would be a system where a single organization or group of organizations can develop – or pay to have developed – a “module” that includes all of this. The license would have additional terms stating that any changes to the code, modules, or updates to modules *must* be given back to the openEPCR community. The general idea is something like this scenario: the state of New Jersey decides to adopt a standardized PCR and data set. Many volunteer ambulance squads don’t have the funds for a commercial solution. A bunch of them pool their resources or funds and develop a “module” for openEPCR that provides everything required to implement a printed and electronic version of the NJ state PCR. If a single organization wishes to deviate, they can simply “extend” that module as they see fit, building off of the main code. OpenEPCR itself remains neutral, but provides a repository of modules to use or modify.

As I see it, there are three main difficulties:

  1. Designing something that’s abstracted to such a great degree.
  2. Dealing with data when we don’t know the environment – we might be stand-alone, always connected to a single master database server, intermittently connected, or even connecting to a different server every time.
  3. We want centralized administration – optimally, all custom data, settings, and organization-specific information (as well as updates to this) will be pushed out from a central server to all clients. But we need to assure security in an environment that is untrusted and may even be hostile – perhaps even hostile users – and balance the fact that some instances of the software may be actively collecting and recording data before they have been notified of a certain change or update.

So, if you think this sounds interesting, or have any suggestions – from either the technical or EMS standpoint – please check out the project homepage or drop me an E-Mail.

Excerpted from the homepage is a bit of information on my goals:
Project Mission:
OpenEPCR aims to provide the Emergency Medical Services sector with a Free (as in Freedom, a.k.a. Open-Source) Electronic Patient Care Report (EPCR) software solution. Licensed under the GNU GPL, it will be easily extendable by users’ organizations. Such a solution does not currently exist. Furthermore, many states and regions are moving to electronic data aggregation for EMS. OpenEPCR aims to provide an easy way for organizations to adopt a standardized data set and submit their data – and only the data that they choose – to a trusted third party. The software will attempt to do all of this while paying heed to applicable standards on privacy and security, as well as being fully platform-independent.

Project Goals:

  1. Provide *all* code licensed under the GNU GPL, and make code as easy as possible to modify and extend.
  2. Be fully platform-independent and database-independent, running in a platform-independent language.
  3. Have NO reliance whatsoever on outside services i.e. be able to run in a disaster situation with a full communications breakdown.
  4. Be designed with internationalization (i18n) and localization in mind, specifically with easy support for translations.
  5. Have all data set, user information, rights/access management, authentication, and authorization abstracted, allowing organization-specified rules as well as various authentication means (central server, local file, passwords, hardware tokens, OTP, etc.)
  6. Attempt to conform to HIPPA and other applicable standards governing security and privacy.
  7. Allow all organizational data such as PCR forms, data sets, printable versions, etc. to operate as pluggable modules; changing the entire PCR structure should be as easy as adding a few new files and running a script.
  8. Be designed with both the small, volunteer, virtually budget-less squad and the large paid organization in mind.
  9. Run on a variety of devices including desktops, laptops, and mobile devices of all flavors.
  10. Operate in environments including standalone, central server, ad-hoc network, and a network of distributed master servers.
  11. Have the utmost regard to integrity of data – data loss or corruption is NOT an option.
  12. Support virtually unlimited customization for an end-user organization.
  13. Be designed with ease of extension in mind – it should be easy for end-user organizations to design custom add-ons that integrate fully, while conforming to the Access Control model.
  14. Eventually, include support for administrative functions such as equipment/vehicle checks, scheduling, roster functionality, etc.
  15. Eventually, consider creation of an integrated incident management system for patient, resource, and personnel tracking.
  16. Be designed with as much space for custom software hooks as possible.
  17. Attempt to pull together developers from various disciplines and gather suggestions from a vast sampling of the EMS field.