RyZ commited on
Commit ·
75b7786
1
Parent(s): 9cabacf
feat: adding predicted ecg
Browse files
src/application/dto/prediction_dto.py
CHANGED
|
@@ -22,6 +22,13 @@ class PredictionResponse(BaseModel):
|
|
| 22 |
ppg_signal_id: str = Field(description="UUID of the source PPG signal.")
|
| 23 |
predicted_sbp: float = Field(description="Predicted Systolic Blood Pressure (mmHg).")
|
| 24 |
predicted_dbp: float = Field(description="Predicted Diastolic Blood Pressure (mmHg).")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
mean_arterial_pressure: float = Field(description="Computed MAP: DBP + (SBP-DBP)/3 (mmHg).")
|
| 26 |
pulse_pressure: float = Field(description="SBP - DBP (mmHg).")
|
| 27 |
hypertension_stage: str = Field(
|
|
@@ -42,6 +49,7 @@ class PredictionResponse(BaseModel):
|
|
| 42 |
"ppg_signal_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
| 43 |
"predicted_sbp": 118.5,
|
| 44 |
"predicted_dbp": 76.2,
|
|
|
|
| 45 |
"mean_arterial_pressure": 90.3,
|
| 46 |
"pulse_pressure": 42.3,
|
| 47 |
"hypertension_stage": "Normal",
|
|
|
|
| 22 |
ppg_signal_id: str = Field(description="UUID of the source PPG signal.")
|
| 23 |
predicted_sbp: float = Field(description="Predicted Systolic Blood Pressure (mmHg).")
|
| 24 |
predicted_dbp: float = Field(description="Predicted Diastolic Blood Pressure (mmHg).")
|
| 25 |
+
predicted_ecg: Optional[list] = Field(
|
| 26 |
+
default=None,
|
| 27 |
+
description=(
|
| 28 |
+
"Synthetic ECG signal windows produced by CardioGAN. "
|
| 29 |
+
"Format: list of segments, each segment is a list of float samples (224 samples @ 125 Hz)."
|
| 30 |
+
),
|
| 31 |
+
)
|
| 32 |
mean_arterial_pressure: float = Field(description="Computed MAP: DBP + (SBP-DBP)/3 (mmHg).")
|
| 33 |
pulse_pressure: float = Field(description="SBP - DBP (mmHg).")
|
| 34 |
hypertension_stage: str = Field(
|
|
|
|
| 49 |
"ppg_signal_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
|
| 50 |
"predicted_sbp": 118.5,
|
| 51 |
"predicted_dbp": 76.2,
|
| 52 |
+
"predicted_ecg": [[0.12, -0.05, 0.33], [0.09, -0.11, 0.28]],
|
| 53 |
"mean_arterial_pressure": 90.3,
|
| 54 |
"pulse_pressure": 42.3,
|
| 55 |
"hypertension_stage": "Normal",
|
src/application/use_cases/get_prediction_history.py
CHANGED
|
@@ -88,11 +88,13 @@ class GetPredictionHistoryUseCase:
|
|
| 88 |
ppg_signal_id=p.ppg_signal_id,
|
| 89 |
predicted_sbp=p.predicted_sbp,
|
| 90 |
predicted_dbp=p.predicted_dbp,
|
|
|
|
| 91 |
mean_arterial_pressure=p.mean_arterial_pressure,
|
| 92 |
pulse_pressure=p.pulse_pressure,
|
| 93 |
hypertension_stage=p.hypertension_stage,
|
| 94 |
model_version=p.model_version,
|
| 95 |
inference_time_ms=p.inference_time_ms,
|
|
|
|
| 96 |
created_at=p.created_at,
|
| 97 |
)
|
| 98 |
for p in predictions
|
|
|
|
| 88 |
ppg_signal_id=p.ppg_signal_id,
|
| 89 |
predicted_sbp=p.predicted_sbp,
|
| 90 |
predicted_dbp=p.predicted_dbp,
|
| 91 |
+
predicted_ecg=p.predicted_ecg,
|
| 92 |
mean_arterial_pressure=p.mean_arterial_pressure,
|
| 93 |
pulse_pressure=p.pulse_pressure,
|
| 94 |
hypertension_stage=p.hypertension_stage,
|
| 95 |
model_version=p.model_version,
|
| 96 |
inference_time_ms=p.inference_time_ms,
|
| 97 |
+
sa_log=p.sa_log,
|
| 98 |
created_at=p.created_at,
|
| 99 |
)
|
| 100 |
for p in predictions
|
src/infrastructure/model/mock_model_service.py
CHANGED
|
@@ -177,6 +177,7 @@ class MockModelService(ModelService):
|
|
| 177 |
ppg_signal_id=ppg_signal_id,
|
| 178 |
predicted_sbp=round(sbp, 1),
|
| 179 |
predicted_dbp=round(dbp, 1),
|
|
|
|
| 180 |
model_version=self.model_version,
|
| 181 |
inference_time_ms=round(elapsed_ms, 2),
|
| 182 |
sa_log=sa_log,
|
|
|
|
| 177 |
ppg_signal_id=ppg_signal_id,
|
| 178 |
predicted_sbp=round(sbp, 1),
|
| 179 |
predicted_dbp=round(dbp, 1),
|
| 180 |
+
predicted_ecg=fake_ecg.tolist(),
|
| 181 |
model_version=self.model_version,
|
| 182 |
inference_time_ms=round(elapsed_ms, 2),
|
| 183 |
sa_log=sa_log,
|
src/interface/api/routes/prediction_routes.py
CHANGED
|
@@ -147,6 +147,7 @@ async def get_prediction_by_signal(
|
|
| 147 |
ppg_signal_id=prediction.ppg_signal_id,
|
| 148 |
predicted_sbp=prediction.predicted_sbp,
|
| 149 |
predicted_dbp=prediction.predicted_dbp,
|
|
|
|
| 150 |
mean_arterial_pressure=prediction.mean_arterial_pressure,
|
| 151 |
pulse_pressure=prediction.pulse_pressure,
|
| 152 |
hypertension_stage=prediction.hypertension_stage,
|
|
|
|
| 147 |
ppg_signal_id=prediction.ppg_signal_id,
|
| 148 |
predicted_sbp=prediction.predicted_sbp,
|
| 149 |
predicted_dbp=prediction.predicted_dbp,
|
| 150 |
+
predicted_ecg=prediction.predicted_ecg,
|
| 151 |
mean_arterial_pressure=prediction.mean_arterial_pressure,
|
| 152 |
pulse_pressure=prediction.pulse_pressure,
|
| 153 |
hypertension_stage=prediction.hypertension_stage,
|