feat(medicos): seed 444 médicos + columnas telefonos/email en tabla y modal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-03 00:51:57 -05:00
co-authored by Claude Sonnet 4.6
parent 48f9e32c22
commit 3b378c0d75
6 changed files with 480 additions and 9 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ $buscar = trim($_GET['q'] ?? '');
if ($buscar !== '') {
$like = '%' . $buscar . '%';
$stmt = $pdo->prepare(
"SELECT id, codigo, nombres, apellidos, cod_especialidad, docidmedico, activo
"SELECT id, codigo, nombres, apellidos, telefonos, email, cod_especialidad, docidmedico, activo
FROM medicos
WHERE nombres LIKE ? OR apellidos LIKE ? OR codigo LIKE ? OR docidmedico LIKE ?
ORDER BY apellidos, nombres"
@@ -18,7 +18,7 @@ if ($buscar !== '') {
$stmt->execute([$like, $like, $like, $like]);
} else {
$stmt = $pdo->query(
"SELECT id, codigo, nombres, apellidos, cod_especialidad, docidmedico, activo
"SELECT id, codigo, nombres, apellidos, telefonos, email, cod_especialidad, docidmedico, activo
FROM medicos ORDER BY apellidos, nombres"
);
}
+7 -5
View File
@@ -15,6 +15,8 @@ $nombres = trim($datos['nombres'] ?? '');
$apellidos = trim($datos['apellidos'] ?? '');
$especialidad = trim($datos['cod_especialidad'] ?? '');
$docid = trim($datos['docidmedico'] ?? '');
$telefonos = trim($datos['telefonos'] ?? '');
$email = trim($datos['email'] ?? '');
if (!$codigo) { echo json_encode(['ok'=>false,'error'=>'El código es obligatorio.']); exit; }
if (!$nombres) { echo json_encode(['ok'=>false,'error'=>'Los nombres son obligatorios.']); exit; }
@@ -25,10 +27,10 @@ $pdo = Database::getInstance()->getConnection();
if ($id) {
// Editar
$stmt = $pdo->prepare(
"UPDATE medicos SET codigo=?, nombres=?, apellidos=?, cod_especialidad=?, docidmedico=?
"UPDATE medicos SET codigo=?, nombres=?, apellidos=?, telefonos=?, email=?, cod_especialidad=?, docidmedico=?
WHERE id=?"
);
$stmt->execute([$codigo, $nombres, $apellidos, $especialidad ?: null, $docid ?: null, $id]);
$stmt->execute([$codigo, $nombres, $apellidos, $telefonos ?: null, $email ?: null, $especialidad ?: null, $docid ?: null, $id]);
echo json_encode(['ok'=>true,'mensaje'=>'Médico actualizado correctamente.']);
} else {
// Crear — verificar código único
@@ -38,9 +40,9 @@ if ($id) {
echo json_encode(['ok'=>false,'error'=>"El código '$codigo' ya existe."]); exit;
}
$stmt = $pdo->prepare(
"INSERT INTO medicos (codigo, nombres, apellidos, cod_especialidad, docidmedico)
VALUES (?, ?, ?, ?, ?)"
"INSERT INTO medicos (codigo, nombres, apellidos, telefonos, email, cod_especialidad, docidmedico)
VALUES (?, ?, ?, ?, ?, ?, ?)"
);
$stmt->execute([$codigo, $nombres, $apellidos, $especialidad ?: null, $docid ?: null]);
$stmt->execute([$codigo, $nombres, $apellidos, $telefonos ?: null, $email ?: null, $especialidad ?: null, $docid ?: null]);
echo json_encode(['ok'=>true,'id'=>(int)$pdo->lastInsertId(),'mensaje'=>'Médico creado correctamente.']);
}
+17 -1
View File
@@ -54,6 +54,7 @@ $API = BASE_URL . 'modules/medicos/api/';
<th>Nombres</th>
<th>Apellidos</th>
<th>Especialidad</th>
<th>Teléfonos</th>
<th>Doc. ID</th>
<th></th>
</tr>
@@ -98,10 +99,20 @@ $API = BASE_URL . 'modules/medicos/api/';
<input type="text" id="med-apellidos" class="form-control form-control-sm"
placeholder="Apellidos" maxlength="100">
</div>
<div class="col-6">
<label class="form-label small fw-semibold">Teléfonos</label>
<input type="text" id="med-telefonos" class="form-control form-control-sm"
placeholder="Teléfonos" maxlength="50">
</div>
<div class="col-6">
<label class="form-label small fw-semibold">Email</label>
<input type="email" id="med-email" class="form-control form-control-sm"
placeholder="correo@ejemplo.com" maxlength="100">
</div>
<div class="col-12">
<label class="form-label small fw-semibold">Código especialidad</label>
<input type="text" id="med-esp" class="form-control form-control-sm"
placeholder="Ej: MED, PED, GIN…" maxlength="50">
placeholder="Ej: GEN, PED, GIN…" maxlength="10">
</div>
</div>
</div>
@@ -172,6 +183,7 @@ function renderTabla(rows) {
<td>${esc(m.nombres)}</td>
<td>${esc(m.apellidos)}</td>
<td>${m.cod_especialidad ? `<span class="badge-esp">${esc(m.cod_especialidad)}</span>` : '<span class="text-muted">—</span>'}</td>
<td style="font-size:.82rem;color:#475569">${esc(m.telefonos || '—')}</td>
<td>${esc(m.docidmedico || '—')}</td>
<td>
<div class="acciones">
@@ -193,6 +205,8 @@ function abrirModal(m = null) {
document.getElementById('med-codigo').value = m?.codigo ?? '';
document.getElementById('med-nombres').value = m?.nombres ?? '';
document.getElementById('med-apellidos').value = m?.apellidos ?? '';
document.getElementById('med-telefonos').value = m?.telefonos ?? '';
document.getElementById('med-email').value = m?.email ?? '';
document.getElementById('med-esp').value = m?.cod_especialidad ?? '';
document.getElementById('med-docid').value = m?.docidmedico ?? '';
_modal.show();
@@ -210,6 +224,8 @@ async function guardar() {
codigo: document.getElementById('med-codigo').value.trim(),
nombres: document.getElementById('med-nombres').value.trim(),
apellidos: document.getElementById('med-apellidos').value.trim(),
telefonos: document.getElementById('med-telefonos').value.trim(),
email: document.getElementById('med-email').value.trim(),
cod_especialidad: document.getElementById('med-esp').value.trim(),
docidmedico: document.getElementById('med-docid').value.trim(),
};