Observational environmental-exposure study

165 Days Inside a Medication Delivery Vehicle: What the Cabin Recorded Against Controlled Room Temperature

Most attention in medication transport goes to the refrigerated line. Refrigerated product gets the cooler, the gel pack and the paperwork, because everyone already knows it is fragile. Everything else — the ordinary ambient prescription, labelled for room temperature — is handed to a driver and carried in a vehicle.

Room temperature is a defined range, not a synonym for whatever the day happens to be. So we left an electronic data logger in a delivery vehicle cabin and let it record continuously from February to August 2026. This article publishes what it recorded, read against the reference points that define controlled room temperature.

  • Recorded, not modelled
  • Source export hashed
  • Not a stability determination

This is the vehicle half of a dataset we already published

The same logger export underpins our earlier article, which set concurrent vehicle-cabin readings beside readings from inside a tote and examined whether a container can be assumed to protect what is in it. That article answers a container question and deliberately publishes no averaged statistic.

This article asks the environment question instead: across everything the cabin logger recorded, how much of it sat outside the range an ambient medication is labelled for? The two are companions and share a source file.

Read the concurrent vehicle-and-tote study →

The reference points

Controlled room temperature is defined in USP <659>. The definition has three parts, and the first is the one that matters most here, because it is a property of a whole recording rather than of any single reading:

  • Mean kinetic temperature not exceeding 25 °C. Mean kinetic temperature weights warm periods more heavily than a plain average does, because degradation accelerates with heat. It is the statistic the definition turns on.
  • Excursions permitted between 15 °C and 30 °C. Ordinary variation an environment is expected to show.
  • Transient spikes tolerated to 40 °C. The outer bound — brief, exceptional, not a normal operating condition.

These reference points are quoted so that recorded readings can be read against a published definition. Quoting them is not a compliance determination, an inspection outcome, or a statement about any particular product or pharmacy.

How this was recorded

One single-use BlueTag T10 electronic data logger stayed loose in the cabin of a delivery vehicle for the whole recording period. It travelled with the vehicle, not with any container, and it recorded continuously — moving hours and parked hours, day and night, February through August.

The export summarises each hour as a minimum, a maximum and an average. This article publishes the exported minima and maxima as its series. It also reads the exported hourly average column, for exactly one purpose: computing mean kinetic temperature, which cannot be derived from extremes alone and which the controlled room temperature definition requires. Nothing is smoothed, resampled or interpolated, and an hour is counted once, as one hour.

A small number of exported hours carry an average that sits a tenth or two outside their own exported minimum and maximum. The reading itself is not in question; only that hour’s average is unusable. Those hours keep their extremes and are excluded from the mean kinetic temperature calculation alone. The exact count is published in the provenance table below.

Where this article counts hours above a reference point, it counts hours in which the cabin reached above that value at some point inside the hour. The export does not carry the within-hour distribution needed to say an hour was spent entirely above it, so this article does not say that.

What the logger recorded

  • -14.4°C to 50.6°C

    Recorded vehicle-cabin range

    Lowest and highest values the cabin logger exported across 165 recorded days.

  • 26.9°C

    Working-hours mean kinetic temperature (08:00–20:00)

    Controlled room temperature is defined by a mean kinetic temperature not exceeding 25°C.

  • 44 of 165 days

    Days the cabin reached above 40°C

    27% of recorded days reached above the transient spike ceiling.

  • 91 of 165 days

    Days the cabin reached above 30°C

    55% of recorded days reached above the permitted excursion ceiling.

  • 29 of 165 days

    Days the cabin fell below 0°C

    235 recorded hours fell below freezing, lowest -14.4°C.

  • 3,937 hours

    Hourly windows published

    2026-02-19 to 2026-08-02, UTC−04:00. 607 reached above 30°C.

Across 165 recorded days the vehicle cabin ranged from -14.4°C to 50.6°C. It reached above 30°C — the ceiling on a permitted excursion — in 607 recorded hours across 91 days, and reached above 40°C — the outer bound tolerated as a transient spike — in 120 recorded hours across 44 days, or 27% of the record.

Restricted to the 08:00–20:00 window, the mean kinetic temperature of the cabin was 26.9°C — above the 25°C that defines controlled room temperature. That is a property of the whole recording rather than of any single hot afternoon.

At the other end, the cabin fell below freezing in 235 recorded hours across 29 days, reaching -14.4°C. Ambient does not only mean hot.

The logger stayed in the vehicle cabin continuously, including parked, overnight and non-delivery hours. The export carries no trip, ignition, location, climate-control, door or sunlight markers, so working-hours figures are a proxy for the exposure a delivery would meet, not a measurement of transit.

Month by month

Each bar spans the lowest and highest temperature the cabin logger exported that month. The cross-mark is that month’s mean kinetic temperature. Reference lines mark 0 °C, 25 °C, 30 °C and 40 °C. Every value drawn here is also published in the table beneath it.

Recorded vehicle-cabin temperature range by month For each recorded month, a vertical bar spans the lowest and highest temperature the vehicle-cabin logger exported that month, with a marker at the month's mean kinetic temperature. Reference lines mark 0, 30 and 40 degrees Celsius. Every value in this figure is also published in the table below. 40°C 30°C 25°C 0°C Feb 32 / -13 Mar 51 / -14 Apr 44 / -4 May 47 / 1 Jun 44 / 11 Jul 50 / 15 Aug 47 / 21
Recorded vehicle-cabin range by calendar month, with the month’s mean kinetic temperature marked. Generated from the committed source export.
Recorded vehicle-cabin exposure by calendar month. Minima and maxima are the exported hourly extremes for the month; mean kinetic temperature is computed from the exported hourly averages. Hours are counted where the cabin reached above the stated reference point at some point inside the hour. All times UTC−04:00.
Month Days Hours Min Max MKT Hrs >30°C Hrs >40°C Hrs <0°C
Feb 2026 10 224 -12.7 32.2 9.1 1 0 43
Mar 2026 31 743 -14.4 50.6 10.7 7 1 168
Apr 2026 30 720 -4.5 43.8 17.7 34 9 24
May 2026 31 744 1.3 46.6 23.1 102 22 0
Jun 2026 30 720 10.9 43.9 27.2 186 28 0
Jul 2026 31 744 15.2 49.7 30.2 267 55 0
Aug 2026 2 42 21.2 46.8 30.3 10 5 0

Reading the record

The heat is not the exceptional case. A vehicle cabin is a solar collector with the doors closed. It does not need a heatwave to leave the range an ambient medication is labelled for; a mild sunny day is enough, and the rise happens fast — most of it inside the first half hour of standing still.

The cold half belongs in the picture too. A great many ambient products carry an instruction to protect from freezing. The winter portion of this record sits well below zero for sustained periods. What that would have meant for any particular product is not something this recording can answer — no medication was carried and none was assessed. What it does show is that the cold end of the range is worth measuring, and not only the hot end.

Mean kinetic temperature is the finding, not the peak. A single high reading is easy to dismiss as a moment. Mean kinetic temperature describes the whole recording, and it is the measure the definition of controlled room temperature is built on. The working-hours figure published above is the number to look at.

None of this was visible while it happened. That is the part worth taking from one vehicle to any other. These readings exist only because a logger was in the cabin. Without one, the hours in the tables above would simply have passed unrecorded — not through anyone’s inattention, but because nothing was measuring.

Every recorded day

The complete daily record stays in the page rather than living only in a download, so it can be printed and read by assistive technology. The same rows are available as CSV below.

View the complete daily record
Recorded vehicle-cabin extremes for every day in the record. Minima and maxima are the exported hourly extremes for that day. Hours are counted where the cabin reached above the stated reference point inside the hour. All times UTC−04:00.
Date Hours Min Max Hrs >30°C Hrs >40°C Hrs <0°C
2026-02-19 8 7.5 22.8 0 0 0
2026-02-20 24 2.3 10.6 0 0 0
2026-02-21 24 0.9 21.3 0 0 0
2026-02-22 24 -0.6 15.0 0 0 8
2026-02-23 24 -3.6 32.2 1 0 7
2026-02-24 24 -12.7 14.8 0 0 12
2026-02-25 24 -2.4 11.6 0 0 4
2026-02-26 24 -2.7 24.7 0 0 6
2026-02-27 24 -0.8 27.9 0 0 5
2026-02-28 24 -1.3 17.6 0 0 1
2026-03-01 24 -10.2 18.9 0 0 17
2026-03-02 24 -14.4 24.8 0 0 12
2026-03-03 24 -6.6 21.4 0 0 10
2026-03-04 24 -4.6 50.6 3 1 10
2026-03-05 24 -0.6 18.0 0 0 3
2026-03-06 24 1.7 24.8 0 0 0
2026-03-07 24 5.2 18.4 0 0 0
2026-03-08 23 3.8 20.8 0 0 0
2026-03-09 24 6.5 24.8 0 0 0
2026-03-10 24 6.9 27.5 0 0 0
2026-03-11 24 3.0 12.1 0 0 0
2026-03-12 24 -1.8 7.4 0 0 6
2026-03-13 24 -5.3 1.5 0 0 11
2026-03-14 24 -2.5 9.6 0 0 8
2026-03-15 24 -2.7 5.9 0 0 14
2026-03-16 24 1.7 14.2 0 0 0
2026-03-17 24 -8.0 5.1 0 0 18
2026-03-18 24 -8.0 5.6 0 0 10
2026-03-19 24 -0.5 13.8 0 0 7
2026-03-20 24 -1.0 9.9 0 0 7
2026-03-21 24 2.1 11.1 0 0 0
2026-03-22 24 2.0 7.4 0 0 0
2026-03-23 24 -0.6 16.0 0 0 1
2026-03-24 24 -4.7 20.9 0 0 11
2026-03-25 24 -1.3 27.5 0 0 5
2026-03-26 24 2.0 11.3 0 0 0
2026-03-27 24 -5.0 25.0 0 0 7
2026-03-28 24 -5.6 14.8 0 0 11
2026-03-29 24 0.0 22.8 0 0 0
2026-03-30 24 3.4 35.9 4 0 0
2026-03-31 24 9.8 24.8 0 0 0
2026-04-01 24 3.3 14.3 0 0 0
2026-04-02 24 0.2 16.8 0 0 0
2026-04-03 24 4.9 37.2 6 0 0
2026-04-04 24 4.2 17.0 0 0 0
2026-04-05 24 3.3 16.1 0 0 0
2026-04-06 24 1.0 20.0 0 0 0
2026-04-07 24 -3.4 20.8 0 0 7
2026-04-08 24 -4.5 30.3 1 0 7
2026-04-09 24 1.9 27.4 0 0 0
2026-04-10 24 6.1 17.7 0 0 0
2026-04-11 24 1.1 30.1 1 0 0
2026-04-12 24 2.0 15.1 0 0 0
2026-04-13 24 6.6 25.8 0 0 0
2026-04-14 24 11.7 29.5 0 0 0
2026-04-15 24 8.4 22.3 0 0 0
2026-04-16 24 12.9 24.1 0 0 0
2026-04-17 24 11.9 43.8 5 4 0
2026-04-18 24 9.7 27.1 0 0 0
2026-04-19 24 4.1 19.8 0 0 0
2026-04-20 24 -1.7 28.7 0 0 6
2026-04-21 24 0.2 26.6 0 0 0
2026-04-22 24 4.4 40.7 5 2 0
2026-04-23 24 8.2 41.3 6 3 0
2026-04-24 24 10.4 25.9 0 0 0
2026-04-25 24 5.4 19.1 0 0 0
2026-04-26 24 -0.7 35.8 4 0 4
2026-04-27 24 6.0 39.6 4 0 0
2026-04-28 24 9.8 20.3 0 0 0
2026-04-29 24 8.8 17.3 0 0 0
2026-04-30 24 5.1 32.8 2 0 0
2026-05-01 24 4.5 32.8 2 0 0
2026-05-02 24 2.1 22.6 0 0 0
2026-05-03 24 1.3 30.1 1 0 0
2026-05-04 24 9.8 40.0 6 0 0
2026-05-05 24 11.3 24.9 0 0 0
2026-05-06 24 8.0 21.2 0 0 0
2026-05-07 24 6.0 24.2 0 0 0
2026-05-08 24 4.9 29.8 0 0 0
2026-05-09 24 6.6 29.6 0 0 0
2026-05-10 24 10.6 23.9 0 0 0
2026-05-11 24 7.9 30.1 1 0 0
2026-05-12 24 4.0 38.2 3 0 0
2026-05-13 24 6.5 29.0 0 0 0
2026-05-14 24 7.5 17.4 0 0 0
2026-05-15 24 7.7 38.7 7 0 0
2026-05-16 24 8.7 29.7 0 0 0
2026-05-17 24 14.8 44.1 9 5 0
2026-05-18 24 17.0 46.6 9 5 0
2026-05-19 24 21.7 40.5 8 3 0
2026-05-20 24 15.3 32.6 2 0 0
2026-05-21 24 10.3 39.1 4 0 0
2026-05-22 24 9.2 30.1 1 0 0
2026-05-23 24 8.3 15.2 0 0 0
2026-05-24 24 8.1 16.4 0 0 0
2026-05-25 24 12.8 40.8 6 1 0
2026-05-26 24 15.7 40.2 8 1 0
2026-05-27 24 20.5 40.8 8 1 0
2026-05-28 24 16.6 36.8 6 0 0
2026-05-29 24 14.2 42.8 8 2 0
2026-05-30 24 12.0 38.6 6 0 0
2026-05-31 24 14.3 42.4 7 4 0
2026-06-01 24 14.5 40.6 7 2 0
2026-06-02 24 14.8 35.9 6 0 0
2026-06-03 24 18.0 43.6 9 2 0
2026-06-04 24 17.6 39.6 10 0 0
2026-06-05 24 19.5 40.1 9 2 0
2026-06-06 24 19.7 43.1 7 2 0
2026-06-07 24 18.6 38.8 5 0 0
2026-06-08 24 16.8 43.9 6 2 0
2026-06-09 24 17.3 37.6 10 0 0
2026-06-10 24 22.2 37.8 8 0 0
2026-06-11 24 22.2 37.1 9 0 0
2026-06-12 24 22.4 41.0 9 2 0
2026-06-13 24 19.4 41.4 7 2 0
2026-06-14 24 16.9 25.8 0 0 0
2026-06-15 24 10.9 28.6 0 0 0
2026-06-16 24 14.4 41.0 8 2 0
2026-06-17 24 15.8 32.3 2 0 0
2026-06-18 24 15.6 30.3 1 0 0
2026-06-19 24 15.4 37.1 7 0 0
2026-06-20 24 15.6 39.4 6 0 0
2026-06-21 24 16.0 42.5 6 3 0
2026-06-22 24 17.9 30.7 2 0 0
2026-06-23 24 15.4 36.2 6 0 0
2026-06-24 24 17.2 35.7 4 0 0
2026-06-25 24 17.2 32.4 2 0 0
2026-06-26 24 17.2 36.8 4 0 0
2026-06-27 24 18.2 42.7 9 3 0
2026-06-28 24 18.6 42.1 8 2 0
2026-06-29 24 20.8 39.6 7 0 0
2026-06-30 24 21.9 43.9 12 4 0
2026-07-01 24 26.0 45.7 17 5 0
2026-07-02 24 25.6 41.9 14 4 0
2026-07-03 24 26.4 45.3 15 5 0
2026-07-04 24 25.0 37.9 6 0 0
2026-07-05 24 22.8 40.8 9 1 0
2026-07-06 24 20.4 42.1 8 2 0
2026-07-07 24 21.6 43.7 9 2 0
2026-07-08 24 21.6 43.4 13 2 0
2026-07-09 24 23.3 41.2 7 2 0
2026-07-10 24 21.0 44.1 8 2 0
2026-07-11 24 21.7 47.2 8 2 0
2026-07-12 24 20.0 48.1 11 6 0
2026-07-13 24 19.8 44.3 10 3 0
2026-07-14 24 25.9 49.7 16 7 0
2026-07-15 24 24.5 33.5 6 0 0
2026-07-16 24 22.5 39.3 10 0 0
2026-07-17 24 21.7 37.1 7 0 0
2026-07-18 24 22.8 33.2 4 0 0
2026-07-19 24 17.8 44.8 6 4 0
2026-07-20 24 16.8 43.5 6 2 0
2026-07-21 24 21.6 32.5 2 0 0
2026-07-22 24 15.3 33.2 5 0 0
2026-07-23 24 15.2 37.4 7 0 0
2026-07-24 24 16.4 39.3 8 0 0
2026-07-25 24 18.6 41.1 7 1 0
2026-07-26 24 19.3 40.4 9 1 0
2026-07-27 24 20.6 38.5 6 0 0
2026-07-28 24 21.1 39.3 7 0 0
2026-07-29 24 19.3 41.2 9 1 0
2026-07-30 24 18.8 36.9 8 0 0
2026-07-31 24 19.4 44.9 9 3 0
2026-08-01 24 24.5 46.8 10 5 0
2026-08-02 18 21.2 26.8 0 0 0

Evidence and provenance

Every figure on this page is generated from the committed source export by scripts/build-vehicle-ambient-temperature-study.py. The build recomputes the logger’s own reported summary from the exported rows and fails rather than publishing if the two stop agreeing.

Source export — assets/logs/_ble_record_97079_T260100609U20260802163222.csv

Placement
Loose in the vehicle cabin for the whole recording, recording vehicle-cabin air. It did not travel with any container and carries no trip markers.
Logger serial
260100609U
Device model
BlueTag T10
Firmware
SINGLE_USE_V2.1.6
Export log interval
10min
Published series
exported hourly minimum–maximum windows
Hourly windows used
3,937
Rows rejected
0
Hours excluded from mean kinetic temperature only
8 (exported average falls outside its own exported minimum and maximum; extremes retained)
File size
238,407 bytes
SHA-256
516d6245c02efdfe1e4ea4be179e5febbf88363920d71399132f9d020b532725

Recomputed against the logger’s own reported summary

The logger writes a summary into its export header. This build recomputes all four values from the exported rows and fails rather than publishing if any differs by more than 0.15°C.
FigureReported by loggerRecomputed hereDifference
Highest reading 50.6°C 50.6°C 0.00°C
Lowest reading -14.4°C -14.4°C 0.00°C
Plain average 17.4°C 17.4°C 0.00°C
Mean kinetic temperature 23.8°C 23.7°C 0.10°C

What this study does not establish

This is one logger in one vehicle. The readings are real and the arithmetic is reproducible. Neither of those makes the study more than its scope allows, and the limits below are as much a part of the result as the figures above.

  • One vehicle only. A single vehicle with a single logger position. Nothing here establishes a fleet distribution, a regional norm or a seasonal model.
  • Continuous cabin recording, not measured transit. The logger stayed in the vehicle cabin continuously, including parked, overnight and non-delivery hours. The export carries no trip, ignition, location, climate-control, door or sunlight markers, so working-hours figures are a proxy for the exposure a delivery would meet, not a measurement of transit.
  • Hourly windows, not within-hour distribution. The export summarises each hour as a minimum and a maximum. An hour counted above a threshold is an hour in which the cabin reached above it, not an hour spent entirely above it.
  • No medication was carried or assessed. No patient medication, prescription or product was placed in the vehicle for this recording. No stability, potency or safety conclusion about any product follows from it.
  • Not a regulatory determination. Comparing recorded readings against published reference points is not a compliance finding, an inspection outcome or an approval of any kind.

What follows operationally

That a vehicle gets hot is not the useful conclusion; that much is familiar to anyone who has done the work. The useful conclusion is that the exposure is invisible unless something is recording it, and that the ambient portion of a delivery run — the part that travels without a cooler — is the portion least likely to have anything recording.

  • Start from the labelled storage condition. Per product, rather than from a general habit about what counts as fragile.
  • Treat dwell time as the controllable variable. Time stationary in a vehicle is what turns a mild day into an excursion.
  • Route and sequence with exposure in mind. Stop density and time of day decide how long anything sits.
  • Record while it can still be acted on. A reading observed during the run can change what happens next; a reading reconstructed afterwards can only explain it.
  • Tie the record to the delivery. Temperature evidence attached to a specific stop, driver and time, rather than held in a separate file apart from it.
  • Define what happens on an excursion. A written response, an escalation path, and a record of what was decided and by whom.

Talk to NoazRX about monitored medication delivery