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,