Skip to content

Commit 4e2998c

Browse files
committed
refactor: move level_status from obs to activity_status in field_activity
1 parent a05799c commit 4e2998c

7 files changed

Lines changed: 34 additions & 41 deletions

File tree

core/lexicon.json

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
{"name": "field_contact_role", "description": null},
2121
{"name": "geochronology", "description": null},
2222
{"name": "horizontal_datum", "description": null},
23-
{"name": "level_status", "description": null},
23+
{"name": "activity_status", "description": null},
2424
{"name": "measurement_method", "description": null},
2525
{"name": "monitoring_status", "description": null},
2626
{"name": "observed_property", "description": null},
@@ -284,29 +284,30 @@
284284
{"categories": ["thing_type"], "term": "perennial stream", "definition": "that has a continuous flow of water throughout the year, even during drier periods."},
285285
{"categories": ["thing_type"], "term": "ephemeral stream", "definition": "a stream that flows only briefly during and after precipitation events"},
286286
{"categories": ["thing_type"], "term": "meteorological station", "definition": "a station that measures the weather conditions at a particular location"},
287-
{"categories": ["level_status"], "term": "Water level affected by atmospheric pressure", "definition": "Water level affected by atmospheric pressure"},
288-
{"categories": ["level_status"], "term": "Water level was frozen (no level recorded).", "definition": "Water level was frozen (no level recorded)."},
289-
{"categories": ["level_status"], "term": "Site was dry", "definition": "Site was dry"},
290-
{"categories": ["level_status"], "term": "Site was flowing recently.", "definition": "Site was flowing recently."},
291-
{"categories": ["level_status"], "term": "Site was flowing. Water level or head couldn't be measured w/out additional equipment.", "definition": "Site was flowing. Water level or head couldn't be measured w/out additional equipment."},
292-
{"categories": ["level_status"], "term": "Nearby site that taps the same aquifer was flowing.", "definition": "Nearby site that taps the same aquifer was flowing."},
293-
{"categories": ["level_status"], "term": "Nearby site that taps the same aquifer had been flowing recently.", "definition": "Nearby site that taps the same aquifer had been flowing recently."},
294-
{"categories": ["level_status"], "term": "Recharge water was being injected into the aquifer at this site.", "definition": "Recharge water was being injected into the aquifer at this site."},
295-
{"categories": ["level_status"], "term": "Recharge water was being injected into nearby site that taps the same aquifer.", "definition": "Recharge water was being injected into nearby site that taps the same aquifer."},
296-
{"categories": ["level_status"], "term": "Water was cascading down the inside of the well.", "definition": "Water was cascading down the inside of the well."},
297-
{"categories": ["level_status"], "term": "Water level was affected by brackish or saline water.", "definition": "Water level was affected by brackish or saline water."},
298-
{"categories": ["level_status"], "term": "Well was not in hydraulic contact w/formation (from source other than defined in USGS C714 or C93).", "definition": "Well was not in hydraulic contact w/formation (from source other than defined in USGS C714 or C93)."},
299-
{"categories": ["level_status"], "term": "Measurement was discontinued (no level recorded).", "definition": "Measurement was discontinued (no level recorded)."},
300-
{"categories": ["level_status"], "term": "Obstruction was encountered in the well (no level recorded)", "definition": "Obstruction was encountered in the well (no level recorded)"},
301-
{"categories": ["level_status"], "term": "Site was being pumped", "definition": "Site was being pumped"},
302-
{"categories": ["level_status"], "term": "Site was pumped recently", "definition": "Site was pumped recently"},
303-
{"categories": ["level_status"], "term": "Nearby site that taps the same aquifer was being pumped", "definition": "Nearby site that taps the same aquifer was being pumped"},
304-
{"categories": ["level_status"], "term": "Nearby site that taps the same aquifer was pumped recently", "definition": "Nearby site that taps the same aquifer was pumped recently"},
305-
{"categories": ["level_status"], "term": "Foreign substance present on the water surface", "definition": "Foreign substance present on the water surface"},
306-
{"categories": ["level_status"], "term": "Well was destroyed (no subsequent water levels should be recorded)", "definition": "Well was destroyed (no subsequent water levels should be recorded)"},
307-
{"categories": ["level_status"], "term": "Water level affected by stage in nearby surface-water site", "definition": "Water level affected by stage in nearby surface-water site"},
308-
{"categories": ["level_status"], "term": "Other conditions exist that would affect the level (remarks)", "definition": "Other conditions exist that would affect the level (remarks)"},
309-
{"categories": ["level_status"], "term": "Water level not affected by status", "definition": "Water level not affected by status"},
287+
{"categories": ["activity_status"], "term": "Water level affected by atmospheric pressure", "definition": "Water level affected by atmospheric pressure"},
288+
{"categories": ["activity_status"], "term": "Water level was frozen (no level recorded).", "definition": "Water level was frozen (no level recorded)."},
289+
{"categories": ["activity_status"], "term": "Site was dry", "definition": "Site was dry"},
290+
{"categories": ["activity_status"], "term": "Site was flowing recently.", "definition": "Site was flowing recently."},
291+
{"categories": ["activity_status"], "term": "Site was flowing. Water level or head couldn't be measured w/out additional equipment.", "definition": "Site was flowing. Water level or head couldn't be measured w/out additional equipment."},
292+
{"categories": ["activity_status"], "term": "Nearby site that taps the same aquifer was flowing.", "definition": "Nearby site that taps the same aquifer was flowing."},
293+
{"categories": ["activity_status"], "term": "Nearby site that taps the same aquifer had been flowing recently.", "definition": "Nearby site that taps the same aquifer had been flowing recently."},
294+
{"categories": ["activity_status"], "term": "Recharge water was being injected into the aquifer at this site.", "definition": "Recharge water was being injected into the aquifer at this site."},
295+
{"categories": ["activity_status"], "term": "Recharge water was being injected into nearby site that taps the same aquifer.", "definition": "Recharge water was being injected into nearby site that taps the same aquifer."},
296+
{"categories": ["activity_status"], "term": "Water was cascading down the inside of the well.", "definition": "Water was cascading down the inside of the well."},
297+
{"categories": ["activity_status"], "term": "Water level was affected by brackish or saline water.", "definition": "Water level was affected by brackish or saline water."},
298+
{"categories": ["activity_status"], "term": "Well was not in hydraulic contact w/formation (from source other than defined in USGS C714 or C93).", "definition": "Well was not in hydraulic contact w/formation (from source other than defined in USGS C714 or C93)."},
299+
{"categories": ["activity_status"], "term": "Measurement was discontinued (no level recorded).", "definition": "Measurement was discontinued (no level recorded)."},
300+
{"categories": ["activity_status"], "term": "Obstruction was encountered in the well (no level recorded)", "definition": "Obstruction was encountered in the well (no level recorded)"},
301+
{"categories": ["activity_status"], "term": "Site was being pumped", "definition": "Site was being pumped"},
302+
{"categories": ["activity_status"], "term": "Site was pumped recently", "definition": "Site was pumped recently"},
303+
{"categories": ["activity_status"], "term": "Nearby site that taps the same aquifer was being pumped", "definition": "Nearby site that taps the same aquifer was being pumped"},
304+
{"categories": ["activity_status"], "term": "Nearby site that taps the same aquifer was pumped recently", "definition": "Nearby site that taps the same aquifer was pumped recently"},
305+
{"categories": ["activity_status"], "term": "Foreign substance present on the water surface", "definition": "Foreign substance present on the water surface"},
306+
{"categories": ["activity_status"], "term": "Well was destroyed (no subsequent water levels should be recorded)", "definition": "Well was destroyed (no subsequent water levels should be recorded)"},
307+
{"categories": ["activity_status"], "term": "Water level affected by stage in nearby surface-water site", "definition": "Water level affected by stage in nearby surface-water site"},
308+
{"categories": ["activity_status"], "term": "Other conditions exist that would affect the level (remarks)", "definition": "Other conditions exist that would affect the level (remarks)"},
309+
{"categories": ["activity_status"], "term": "Water level not affected by status", "definition": "Water level not affected by status"},
310+
{"categories": ["activity_status"], "term": "Water chemistry affected by status", "definition": "Water chemistry affected by status"},
310311
{"categories": ["status"], "term": "Abandoned", "definition": "Abandoned"},
311312
{"categories": ["status"], "term": "Active, pumping well", "definition": "Active, pumping well"},
312313
{"categories": ["status"], "term": "Destroyed, exists but not usable", "definition": "Destroyed, exists but not usable"},

db/field.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ class FieldActivity(Base, AutoBaseMixin, ReleaseMixin):
129129
nullable=False,
130130
comment="The type of activity performed during the field event (e.g., 'groundwater level', 'water chemistry', 'geothermal').",
131131
)
132+
activity_status: Mapped[str] = lexicon_term(
133+
nullable=False,
134+
comment="The status of the activity, whether normal or impacted by external factors like roving bovine, dry well, or equipment failure.",
135+
)
132136
notes: Mapped[str] = mapped_column(
133137
nullable=True,
134138
comment="Notes or comments about the field activity.",

db/observation.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ class Observation(Base, AutoBaseMixin, ReleaseMixin):
5656
)
5757
observed_property: Mapped[str] = lexicon_term(nullable=False)
5858
value: Mapped[float] = mapped_column(
59-
nullable=True,
59+
nullable=False,
60+
comment="The value of the observation. If a value could not be retrieved then an observation could not be made. The reason for the missing value should be documented in the correct table, like field_activity.",
6061
)
6162
unit: Mapped[str] = lexicon_term(nullable=False)
6263

@@ -67,8 +68,6 @@ class Observation(Base, AutoBaseMixin, ReleaseMixin):
6768
info={"unit": "ft"},
6869
)
6970

70-
level_status: Mapped[str] = lexicon_term(nullable=True)
71-
7271
# geothermal
7372
observation_depth: Mapped[float] = mapped_column(
7473
nullable=True,

schemas/field.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
class FieldActivityResponse(BaseResponseModel):
1010
field_event_id: int
1111
activity_type: str
12+
activity_status: str
1213

1314

1415
class FieldEventResponse(BaseResponseModel):

schemas/observation.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ class CreateBaseObservation(BaseCreateModel, ValidateObservation):
6868

6969
class CreateGroundwaterLevelObservation(CreateBaseObservation):
7070
measuring_point_height: float
71-
level_status: str
7271

7372

7473
class CreateWaterChemistryObservation(CreateBaseObservation):
@@ -94,7 +93,6 @@ class UpdateBaseObservation(BaseUpdateModel, ValidateObservation):
9493

9594
class UpdateGroundwaterLevelObservation(UpdateBaseObservation):
9695
measuring_point_height: float | None = None
97-
level_status: str | None = None
9896

9997

10098
class UpdateWaterChemistryObservation(UpdateBaseObservation):
@@ -119,7 +117,6 @@ class BaseObservationResponse(BaseResponseModel):
119117
class GroundwaterLevelObservationResponse(BaseObservationResponse):
120118
depth_to_water_bgs: float | None
121119
measuring_point_height: float | None
122-
level_status: str | None
123120

124121
@model_validator(mode="before")
125122
def calculate_depth_to_water_bgs(self: Self) -> Self:

tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ def groundwater_level_field_activity(field_event):
511511
field_activity = FieldActivity(
512512
field_event_id=field_event.id,
513513
activity_type="groundwater level",
514+
activity_status="Water level not affected by status",
514515
notes="field activity fixture notes",
515516
release_status="draft",
516517
)
@@ -525,6 +526,7 @@ def water_chemistry_field_activity(field_event):
525526
field_activity = FieldActivity(
526527
field_event_id=field_event.id,
527528
activity_type="water chemistry",
529+
activity_status="Water chemistry affected by status",
528530
notes="field activity fixture notes",
529531
release_status="draft",
530532
)
@@ -610,7 +612,6 @@ def groundwater_level_observation(sensor, groundwater_level_sample):
610612
value=10.0,
611613
unit="ft",
612614
measuring_point_height=5.0,
613-
level_status="Water level not affected by status",
614615
)
615616
session.add(observation)
616617
session.commit()

tests/test_observation.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ def test_add_groundwater_level_observation(groundwater_level_sample, sensor):
8181
"measuring_point_height": 53,
8282
"sample_id": groundwater_level_sample.id,
8383
"sensor_id": sensor.id,
84-
"level_status": "Water level not affected by status",
8584
"observed_property": "groundwater level",
8685
"unit": "ft",
8786
}
@@ -96,7 +95,6 @@ def test_add_groundwater_level_observation(groundwater_level_sample, sensor):
9695
assert data["value"] == payload["value"]
9796
assert data["measuring_point_height"] == payload["measuring_point_height"]
9897
assert data["sensor_id"] == payload["sensor_id"]
99-
assert data["level_status"] == payload["level_status"]
10098
assert data["observed_property"] == payload["observed_property"]
10199
assert (
102100
data["depth_to_water_bgs"]
@@ -343,9 +341,6 @@ def test_get_groundwater_level_observations(groundwater_level_observation):
343341
data["items"][0]["release_status"]
344342
== groundwater_level_observation.release_status
345343
)
346-
assert (
347-
data["items"][0]["level_status"] == groundwater_level_observation.level_status
348-
)
349344
assert data["items"][0]["value"] == groundwater_level_observation.value
350345
assert data["items"][0]["unit"] == groundwater_level_observation.unit
351346
assert (
@@ -357,9 +352,6 @@ def test_get_groundwater_level_observations(groundwater_level_observation):
357352
data["items"][0]["measuring_point_height"]
358353
== groundwater_level_observation.measuring_point_height
359354
)
360-
assert (
361-
data["items"][0]["level_status"] == groundwater_level_observation.level_status
362-
)
363355

364356

365357
def test_get_groundwater_level_observation_by_id(groundwater_level_observation):
@@ -384,7 +376,6 @@ def test_get_groundwater_level_observation_by_id(groundwater_level_observation):
384376
== groundwater_level_observation.observed_property[colon_index + 1 :]
385377
)
386378
assert data["release_status"] == groundwater_level_observation.release_status
387-
assert data["level_status"] == groundwater_level_observation.level_status
388379
assert data["value"] == groundwater_level_observation.value
389380
assert data["unit"] == groundwater_level_observation.unit
390381
assert (
@@ -396,7 +387,6 @@ def test_get_groundwater_level_observation_by_id(groundwater_level_observation):
396387
data["measuring_point_height"]
397388
== groundwater_level_observation.measuring_point_height
398389
)
399-
assert data["level_status"] == groundwater_level_observation.level_status
400390

401391

402392
def test_get_groundwater_level_observation_by_id_404_not_found(

0 commit comments

Comments
 (0)