import { useMemo, useState } from 'react' import { FeatureCallout } from '../components/FeatureState.jsx' import { medicalRecordRepository } from '../repositories/medicalRecordRepository.js' const inputClass = 'h-10 w-full rounded-lg border border-[#404040] bg-[#1a1a1a] px-3 text-sm text-[#e5e5e5] outline-none transition placeholder:text-[#a3a3a3] focus:border-[#3b82f6] focus:ring-1 focus:ring-[#3b82f6]' const labelClass = 'mb-1 block text-xs font-medium text-[#e5e5e5]' const cardClass = 'rounded-2xl border border-[#404040] bg-[#262626] shadow-sm' export function MedicalRecordsPage() { const recordTypes = medicalRecordRepository.getRecordTypes() const [records, setRecords] = useState(() => medicalRecordRepository.getInitialRecords()) const [search, setSearch] = useState('') const [filterType, setFilterType] = useState('') const [editorOpen, setEditorOpen] = useState(false) const filteredRecords = useMemo(() => { return records.filter((record) => { const matchesSearch = [record.patient, record.cid, record.doctor] .join(' ') .toLowerCase() .includes(search.toLowerCase()) const matchesType = !filterType || record.type === filterType return matchesSearch && matchesType }) }, [filterType, records, search]) function handleCreateRecord(record) { setRecords((currentRecords) => [record, ...currentRecords]) setEditorOpen(false) } return (

Prontuário Médico

Registro de consultas, diagnósticos e evolução

setSearch(event.target.value)} placeholder="Buscar por paciente ou CID..." value={search} />
{filteredRecords.length ? ( filteredRecords.map((record) => ) ) : (
Nenhum registro encontrado nos dados locais.
)}
{editorOpen ? ( setEditorOpen(false)} onSave={handleCreateRecord} recordTypes={recordTypes} /> ) : null}
) } function RecordCard({ record }) { const statusClass = record.status === 'completo' ? 'bg-emerald-500/20 text-emerald-400' : 'bg-amber-500/20 text-amber-400' return (

{record.patient}

{record.status === 'completo' ? 'Completo' : 'Rascunho'}
{record.date} {record.doctor} {record.type}

{record.cid}

{record.summary}

) } function IconButton({ label, name }) { return ( ) } function RecordEditorModal({ onClose, onSave, recordTypes }) { const [formData, setFormData] = useState({ patient: '', date: '', type: 'Primeira Consulta', cid: '', anamnesis: '', physicalExam: '', conduct: '', prescriptions: '', returnDate: '', status: 'completo', }) function updateField(event) { const { name, value } = event.target setFormData((currentData) => ({ ...currentData, [name]: value })) } function handleSubmit(event) { event.preventDefault() const submitter = event.nativeEvent.submitter const status = submitter?.value || formData.status onSave({ id: `record-${Date.now()}`, patient: formData.patient || 'Paciente sem nome', date: formData.date ? formatDate(formData.date) : '07/04/2026', doctor: 'Dr. Henrique Cardoso', type: formData.type, cid: formData.cid || 'CID não informado', status, summary: formData.conduct || formData.anamnesis || 'Registro criado localmente para simulação.', }) } return (
event.stopPropagation()} onSubmit={handleSubmit} >

Novo Registro de Consulta