| |
| |
| |
| |
| |
| |
| |
| |
| |
| const DiagnosisCard = ({ diagnosis }) => { |
| if (!diagnosis) return null |
|
|
| const { |
| prediction_name, |
| explanation, |
| features = {}, |
| } = diagnosis |
|
|
| |
| const featureLabels = { |
| Age: 'Age', |
| Glucose: 'Blood Glucose', |
| HbA1c: 'HbA1c', |
| BMI: 'BMI', |
| Cholesterol: 'Cholesterol', |
| Triglycerides: 'Triglycerides', |
| BloodPressure: 'Blood Pressure', |
| PhysicalActivity: 'Physical Activity', |
| SleepHours: 'Sleep Hours', |
| StressLevel: 'Stress Level', |
| DietScore: 'Diet Score', |
| Smoking: 'Smoking', |
| Alcohol: 'Alcohol', |
| FamilyHistory: 'Family History', |
| LengthOfStay: 'Length of Stay', |
| OxygenSaturation: 'Oxygen Saturation', |
| } |
|
|
| return ( |
| <div className="rounded-xl sm:rounded-2xl p-4 sm:p-6 border-2 bg-slate-50 border-slate-200"> |
| {/* Header */} |
| <h2 className="text-lg sm:text-xl font-bold text-slate-900 mb-4"> |
| Health Summary |
| </h2> |
| |
| {/* Diagnosis Display */} |
| <div className="mb-6"> |
| <p className="text-xs sm:text-sm font-medium text-slate-600 mb-2">Diagnosis</p> |
| <h3 className="text-2xl sm:text-3xl font-bold text-slate-900"> |
| {prediction_name} |
| </h3> |
| </div> |
| |
| {/* Explanation */} |
| <div className="bg-white/50 rounded-lg p-3 sm:p-4 border border-slate-200 mb-6"> |
| <p className="text-xs sm:text-sm text-slate-700 leading-relaxed"> |
| {explanation} |
| </p> |
| </div> |
| |
| {/* Patient Data Report */} |
| <div className="border-t border-slate-200 mt-4 pt-4"> |
| <h3 className="text-base sm:text-lg font-bold text-slate-900 mb-4">Patient Data Report</h3> |
| |
| <div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-3 sm:gap-4"> |
| {Object.entries(features).map(([key, value]) => { |
| // Get the display label for this feature |
| const displayLabel = featureLabels[key] || key |
| |
| return ( |
| <div key={key} className="space-y-1"> |
| <p className="text-xs font-medium text-slate-500 uppercase tracking-wider break-words"> |
| {displayLabel} |
| </p> |
| <p className="text-sm sm:text-base font-semibold text-slate-900 break-words"> |
| {value !== null && value !== undefined ? String(value) : '—'} |
| </p> |
| </div> |
| ) |
| })} |
| </div> |
| </div> |
| </div> |
| ) |
| } |
|
|
| export default DiagnosisCard |
|
|