Sounds like you need to use individual records, up to 38 per each observation instead of 38 separate fields. This would then enable you to use finds, sorting and summary fields to produce the needed values for the Y series data you want to chart.
I am a little bit confused, do you mean create more tables and instead of separate fields have these as their own individual records related to a job site?
These observations are done by the hundreds as they are submitted by everyone present on a job site. Below is a piece of what one observation looks like.
I mean that you add exactly one more table with one record for each of the "safe unsafe" rows of fields in your data using either a portal or a list view to list them.
Each time that you start a new parent record to record this info, a script can generate the set of "HouseKeeping" thru "Material Handling & Storage" records needed for that parent record.
And unless there is some rationale where you would select both Safe and Unsafe for the same item on this list, I'd change that par of your layout to a radio button format as check boxes allow and imply that you can select both values for the same item.