Pantalla: Inventario de Medicamento
Identificador: SCR-MED-007
Modulo: MTS-MED-001 - Gestion de Medicamentos
Version: 1.0.0
Fecha: 2025-12-05
Autor: MobileUxUiDrone (Eight of Eight)
Estado: Especificado
| Atributo |
Valor |
| Nombre |
Inventario de Medicamento |
| Proposito |
Gestion de stock personal del medicamento |
| Tipo |
Bottom Sheet / Full Screen |
| Acceso |
Detalle Medicamento > Inventario |
| Prioridad |
Media |
2. Wireframe ASCII
2.1. Vista Principal
+------------------------------------------+
| ==== | <- Drag handle
+------------------------------------------+
| |
| Inventario [X] |
| Metformina 850mg | <- Context
| |
+------------------------------------------+
| |
| Cantidad actual |
| +------------------------------------+ |
| | [-] 45 [+] | | <- Stepper grande
| | tabletas ||
| +------------------------------------+ |
| |
| +------------------------------------+ |
| | [i] Suficiente para 22 dias || <- Calculo
| +------------------------------------+ |
| |
| Alerta de reabasto |
| +------------------------------------+ |
| | Avisarme cuando queden: ||
| | [-] 10 [+] || <- Umbral
| | tabletas ||
| +------------------------------------+ |
| |
| Fecha de caducidad |
| +------------------------------------+ |
| | [Cal] 15 de Junio, 2026 [>] | | <- Date picker
| +------------------------------------+ |
| |
| Lote (opcional) |
| +------------------------------------+ |
| | ABC123456 | | <- Input
| +------------------------------------+ |
| |
| Ultimo reabasto |
| +------------------------------------+ |
| | [Cal] 01 de Diciembre, 2025 [>] | |
| +------------------------------------+ |
| |
| +------------------------------------+ |
| | [Guardar] | | <- Primary
| +------------------------------------+ |
| |
+------------------------------------------+
2.2. Estado: Alerta de Stock Bajo
+------------------------------------------+
| ==== |
+------------------------------------------+
| |
| Inventario [X] |
| Metformina 850mg |
| |
+------------------------------------------+
| |
| +------------------------------------+ |
| | [!] Stock bajo ||
| | Te quedan menos de 10 tabletas || <- Warning banner
| | Considera reabastecer pronto ||
| +------------------------------------+ |
| |
| Cantidad actual |
| +------------------------------------+ |
| | [-] 8 [+] | | <- Resaltado warning
| | tabletas ||
| +------------------------------------+ |
| |
| +------------------------------------+ |
| | [!] Suficiente para solo 4 dias ||
| +------------------------------------+ |
| |
| ... (resto del formulario) ... |
| |
| +------------------------------------+ |
| | [Cart] Agregar a lista de compras | | <- Action link
| +------------------------------------+ |
| |
+------------------------------------------+
2.3. Estado: Proximo a Caducar
+------------------------------------------+
| ==== |
+------------------------------------------+
| |
| Inventario [X] |
| Ibuprofeno 400mg |
| |
+------------------------------------------+
| |
| +------------------------------------+ |
| | [!] Proximo a caducar ||
| | Este medicamento caduca en || <- Warning banner
| | 15 dias (20/12/2025) ||
| +------------------------------------+ |
| |
| Cantidad actual |
| +------------------------------------+ |
| | [-] 30 [+] | |
| | tabletas ||
| +------------------------------------+ |
| |
| Fecha de caducidad |
| +------------------------------------+ |
| | [Cal] 20 de Diciembre, 2025 [>] | | <- Resaltado warning
| | [!] Caduca en 15 dias ||
| +------------------------------------+ |
| |
| ... (resto del formulario) ... |
| |
+------------------------------------------+
3. Componentes UI
3.1. Quantity Stepper
| Propiedad |
Valor |
| Componente |
CMP-INP-008 |
| Variante |
horizontal, large |
| Min |
0 |
| Max |
9999 |
| Step |
1 (tap), 10 (long press) |
| Touch targets |
48x48dp buttons |
3.2. Alert Threshold Stepper
| Propiedad |
Valor |
| Componente |
CMP-INP-008 |
| Variante |
horizontal |
| Default |
10 (o 7 dias de consumo) |
| Min |
0 (sin alerta) |
| Sugerencia |
Basado en consumo diario |
3.3. Date Picker Trigger
| Propiedad |
Valor |
| Componente |
ListTile tappable |
| Formato |
"DD de MMMM, YYYY" |
| Picker |
CMP-INP-005 (modal) |
3.4. Warning Banner
| Propiedad |
Valor |
| Background |
warning.light (stock bajo) |
| Background |
error.light (caducidad) |
| Icono |
Warning / Error |
| Accion |
Opcional (agregar a lista) |
4. Calculos Automaticos
4.1. Dias Restantes
function calculateDaysRemaining(
currentQuantity: number,
dailyDoses: number
): number {
return Math.floor(currentQuantity / dailyDoses);
}
// Ejemplo: 45 tabletas / 2 dosis diarias = 22 dias
4.2. Fecha de Agotamiento
function calculateDepletionDate(
currentQuantity: number,
dailyDoses: number,
startDate: Date = new Date()
): Date {
const daysRemaining = calculateDaysRemaining(currentQuantity, dailyDoses);
return addDays(startDate, daysRemaining);
}
4.3. Umbral Sugerido
function suggestAlertThreshold(
dailyDoses: number,
daysBuffer: number = 7
): number {
return dailyDoses * daysBuffer;
}
// Ejemplo: 2 dosis/dia * 7 dias = 14 tabletas umbral
5. Estados y Alertas
5.1. Estados de Stock
| Estado |
Condicion |
Visual |
| OK |
cantidad > umbral |
Normal |
| Warning |
cantidad <= umbral |
Banner amarillo |
| Critical |
cantidad <= 3 dias |
Banner rojo |
| Empty |
cantidad = 0 |
Banner rojo, bloquear tomas |
5.2. Estados de Caducidad
| Estado |
Condicion |
Visual |
| OK |
> 60 dias para caducar |
Normal |
| Warning |
30-60 dias |
Texto warning |
| Critical |
< 30 dias |
Banner amarillo |
| Expired |
Fecha pasada |
Banner rojo |
6. Datos Requeridos
interface InventoryScreenData {
medication: PatientMedication;
currentInventory?: InventoryData;
dailyDoses: number;
}
interface InventoryData {
currentQuantity: number;
alertThreshold: number;
expirationDate?: Date;
lotNumber?: string;
lastRefillDate?: Date;
}
6.2. Output Data
interface InventoryUpdate {
medicationId: string;
currentQuantity: number;
alertThreshold: number;
expirationDate?: Date;
lotNumber?: string;
lastRefillDate?: Date;
}
7. Accesibilidad
7.1. Labels
| Elemento |
accessibilityLabel |
| Quantity stepper |
"Cantidad actual: {n} tabletas. Boton menos para reducir, boton mas para aumentar" |
| Warning banner |
"Advertencia: {mensaje}" |
| Date field |
"Fecha de caducidad: {fecha}. Toca para cambiar" |
| Save button |
"Guardar cambios de inventario" |
7.2. Anuncios
| Evento |
Anuncio |
| Quantity change |
"Cantidad: {n} tabletas, suficiente para {d} dias" |
| Threshold change |
"Alerta configurada para {n} tabletas" |
| Date change |
"Caducidad: {fecha}" |
| Save success |
"Inventario actualizado" |
7.3. Contraste
- Warning banners con contraste 4.5:1 minimo
- Numeros grandes (2xl) para cantidad
- Botones +/- claramente diferenciados
8. Integraciones
8.1. Notificaciones
| Tipo |
Trigger |
Destino |
| Stock bajo |
cantidad <= umbral |
MTS-NTF-001 |
| Proximo a caducar |
fecha - 30 dias |
MTS-NTF-001 |
| Caducado |
fecha pasada |
MTS-NTF-001 |
8.2. Calendario
- Mostrar fecha estimada de agotamiento en calendario
- Integrar con recordatorios de reabasto
8.3. Tomas
- Decrementar automaticamente al registrar toma
- Alertar si inventario = 0 al intentar toma
9. Metricas
9.1. Analytics Events
| Evento |
Parametros |
| inventory_view |
medication_id |
| quantity_update |
medication_id, old_value, new_value |
| threshold_update |
medication_id, threshold |
| expiration_set |
medication_id, days_until |
| add_to_shopping_list |
medication_id |
10. Referencias
Documento generado por MobileUxUiDrone (Eight of Eight)