OP.EXT.1 Contratación y acuerdos de nivel de servicio
☑️Aplicación de la medida
De acuerdo al ANEXO II, 2 Selección de medidas de seguridad, la medida de seguridad OP.EXT.1 Contratación y acuerdos de nivel de servicio sí aplica dada la categoría de seguridad del sistema.
Documentos de referencia
- ISO/IEC 27000:
- 27002:2013:
- 15.1.1 - Information security policy for supplier relationships
- 15.1.2 - Addressing security within supplier agreements
- 15.2.1 - Monitoring and review of supplier services
- 27002:2013:
- NIST SP 800-53 rev4:
- [SA-9] External Information System Services
- [SA-4] Acquisition Process
- Otras referencias:
- FDA Cybersecurity in Medical Devices: Quality System Considerations
- MDR Regulation (EU) 2017/745 - Supply chain requirements
- NIS2 Directive - Supply chain security
Guía de implantación
- Se establecerán los mecanismos necesarios que permitan asegurar que los servicios prestados por terceros mantienen el nivel de seguridad requerido.
Incluirá al menos:
- Procedimientos de análisis y gestión de riesgos de externalización
- Procedimientos de selección y contratación de proveedores de servicios
- Definición de acuerdos de nivel de servicio
- Procedimientos de supervisión del cumplimiento de las cláusulas de seguridad
Implementación en Legit Health Plus
1. Marco de gestión de proveedores médicos
La gestión de servicios externos para Legit Health Plus requiere consideraciones específicas para dispositivos médicos, cumplimiento regulatorio y protección de datos clínicos.
1.1 Clasificación de servicios externos
Servicios críticos (Nivel 1)
Critical_Services:
Cloud_Infrastructure:
Provider: "Amazon Web Services"
Services: ["EC2", "RDS", "S3", "CloudFront"]
Impact: "Direct impact on patient diagnosis"
SLA_Requirements:
- Availability: "99.99%"
- Support: "24x7 Enterprise"
- Recovery: "RTO 15 min, RPO 1 min"
Medical_Certification:
Provider: "Notified Body (BSI/TUV)"
Services: ["CE Marking", "MDR Compliance"]
Impact: "Regulatory compliance"
SLA_Requirements:
- Response: "24 hours for critical issues"
- Expertise: "Medical device specialists"
- Availability: "Business hours + emergency"
Servicios importantes (Nivel 2)
Important_Services:
Cybersecurity_SOC:
Provider: "CrowdStrike"
Services: ["Endpoint Protection", "Threat Intelligence"]
Impact: "Security monitoring and response"
SLA_Requirements:
- Detection: "Mean time 5 minutes"
- Response: "15 minutes for critical alerts"
- Coverage: "24x7x365"
Legal_Compliance:
Provider: "Healthcare Legal Firm"
Services: ["Regulatory advice", "Contract review"]
Impact: "Legal and regulatory compliance"
SLA_Requirements:
- Response: "4 hours for urgent matters"
- Expertise: "Medical device law specialists"
2. Proceso de selección y due diligence
2.1 Evaluación inicial de proveedores
class MedicalSupplierAssessment:
def __init__(self):
self.assessment_criteria = self.load_medical_supplier_criteria()
self.regulatory_requirements = self.load_regulatory_requirements()
def evaluate_supplier(self, supplier_data):
"""Evaluación completa de proveedor para servicios médicos"""
evaluation = {
'regulatory_compliance': self.assess_regulatory_compliance(supplier_data),
'security_posture': self.assess_security_capabilities(supplier_data),
'medical_expertise': self.assess_medical_domain_expertise(supplier_data),
'business_continuity': self.assess_business_continuity(supplier_data),
'financial_stability': self.assess_financial_stability(supplier_data),
'reference_validation': self.validate_medical_references(supplier_data)
}
# Calcular puntuación ponderada
weights = {
'regulatory_compliance': 0.25,
'security_posture': 0.20,
'medical_expertise': 0.20,
'business_continuity': 0.15,
'financial_stability': 0.10,
'reference_validation': 0.10
}
total_score = sum(evaluation[criteria] * weights[criteria]
for criteria in evaluation)
evaluation['total_score'] = total_score
evaluation['recommendation'] = self.generate_recommendation(total_score)
return evaluation
def assess_regulatory_compliance(self, supplier_data):
"""Evaluación de cumplimiento regulatorio"""
compliance_factors = {
'iso13485_certified': supplier_data.get('iso13485_cert', False),
'gdpr_compliant': supplier_data.get('gdpr_compliance', False),
'medical_device_experience': supplier_data.get('medical_device_clients', 0) > 5,
'regulatory_expertise': supplier_data.get('regulatory_team_size', 0) > 2,
'audit_trail_capability': supplier_data.get('audit_capabilities', False)
}
# Todos los factores regulatorios son obligatorios
if not all(compliance_factors.values()):
return 0.0 # Descalificación automática
return 10.0 # Máxima puntuación si cumple todos
2.2 Checklist de due diligence médica
## Due Diligence Checklist - Proveedores Médicos
### A. Cumplimiento Regulatorio
- [ ] Certificación ISO 13485 (vigente)
- [ ] Experiencia con dispositivos médicos Clase II/III
- [ ] Conocimiento de MDR/IVDR (EU)
- [ ] Experiencia con FDA (si aplica)
- [ ] Cumplimiento GDPR/LOPD-GDD
- [ ] Políticas de retención de datos clínicos
### B. Seguridad y Ciberseguridad
- [ ] Certificación ISO 27001
- [ ] Evaluación de ciberseguridad (SOC 2 Type II)
- [ ] Plan de respuesta a incidentes
- [ ] Cifrado de datos en tránsito y en reposo
- [ ] Controles de acceso basados en roles
- [ ] Monitorización de seguridad 24x7
### C. Continuidad del Negocio
- [ ] Plan de continuidad de negocio documentado
- [ ] SLA de disponibilidad >= 99.9%
- [ ] Procedimientos de backup y recuperación
- [ ] Sitios alternativos de operación
- [ ] Seguro de responsabilidad civil (>= €2M)
- [ ] Plan de sucesión de personal clave
### D. Experiencia Médica
- [ ] Equipo especializado en dispositivos médicos
- [ ] Referencias verificables en el sector salud
- [ ] Conocimiento de flujos de trabajo clínicos
- [ ] Experiencia con datos de pacientes
- [ ] Formación en seguridad del paciente
3. Estructura de SLA para servicios médicos
3.1 Template de SLA crítico
Medical_SLA_Template:
Service_Definition:
Name: "AWS Cloud Infrastructure for Medical Device"
Scope: "All compute, storage, database services supporting diagnosis"
Classification: "Critical - Patient Safety Impact"
Availability_Requirements:
Uptime_SLA: "99.99% (4.38 minutes/month downtime)"
Planned_Maintenance: "<= 4 hours/month, scheduled 48h advance"
Emergency_Maintenance: "<= 30 minutes notification"
Measurement_Method: "End-to-end diagnosis service availability"
Performance_Requirements:
Response_Time: "API calls <= 2 seconds (95th percentile)"
Throughput: "Support >= 200 concurrent diagnosis sessions"
Data_Processing: "Image processing <= 30 seconds"
Database_Query: "Clinical data queries <= 100ms"
Security_Requirements:
Data_Encryption: "AES-256 minimum (at rest and in transit)"
Access_Control: "MFA mandatory for all privileged access"
Audit_Logging: "Complete audit trail, 7-year retention"
Incident_Response: "Security incidents escalation <= 15 minutes"
Support_Requirements:
Severity_1_Critical: "15 minutes response, 4 hours resolution target"
Severity_2_High: "1 hour response, 24 hours resolution target"
Severity_3_Medium: "4 hours response, 5 days resolution target"
Support_Hours: "24x7x365 for Severity 1-2"
Business_Continuity:
RTO: "15 minutes (automatic failover)"
RPO: "1 minute (continuous replication)"
Disaster_Recovery: "Multi-region backup, tested quarterly"
Data_Backup: "Daily incremental, weekly full, geographically distributed"
Compliance_Requirements:
Regulatory_Standards: ["ISO 13485", "MDR Article 17", "FDA 21 CFR 820"]
Audit_Rights: "Customer audit rights with 30 days notice"
Certification_Maintenance: "Valid certifications throughout contract"
Change_Management: "60 days notice for changes affecting compliance"
Penalties_and_Credits:
Availability_Penalty:
"99.95-99.99%": "5% monthly fee credit"
"99.90-99.94%": "10% monthly fee credit"
"<99.90%": "25% monthly fee credit + right to terminate"
Performance_Penalty:
"Response time >3 seconds": "2% monthly fee credit per day"
"Downtime >RTO": "10% monthly fee credit per hour"
Security_Incident_Penalty:
"Minor incident": "5% monthly fee credit"
"Major incident": "20% monthly fee credit"
"Data breach": "Contract termination right + damages"
4. Gestión de contratos y cláusulas clave
4.1 Cláusulas específicas para dispositivos médicos
## Cláusulas Contractuales Clave
### A. Protección de Datos Clínicos
**Cláusula de Confidencialidad Médica**
"El Proveedor reconoce que tendrá acceso a datos clínicos y de pacientes que constituyen información especialmente protegida bajo GDPR Art. 9. El Proveedor se compromete a:
- Implementar medidas técnicas y organizativas apropiadas (Art. 32 GDPR)
- Limitar el acceso solo al personal autorizado y necesario
- Notificar cualquier violación de datos en un plazo máximo de 4 horas
- Facilitar el ejercicio de derechos de los titulares de datos
- Eliminar o devolver todos los datos al finalizar el contrato"
### B. Cumplimiento Regulatorio
**Cláusula de Compliance Regulatorio**
"El Proveedor garantiza que sus servicios cumplen con:
- Medical Device Regulation (MDR) EU 2017/745
- FDA Quality System Regulation (21 CFR Part 820)
- ISO 13485:2016 para dispositivos médicos
- Directiva NIS2 para ciberseguridad
Cualquier cambio que afecte el cumplimiento debe notificarse con 90 días de antelación."
### C. Continuidad del Servicio
**Cláusula de Continuidad Médica**
"Reconociendo que los servicios soportan dispositivos médicos críticos para diagnóstico:
- El Proveedor mantendrá planes de continuidad que garanticen RTO ≤ 15 minutos
- Notificación inmediata (< 5 min) de cualquier interrupción
- Activación automática de sistemas de respaldo
- Coordinación con autoridades sanitarias si se requiere
- Indemnización por daños derivados de interrupciones evitables"
### D. Auditoría y Acceso
**Cláusula de Derechos de Auditoría**
"El Cliente, organismos notificados, y autoridades regulatorias tendrán derecho a:
- Auditar las instalaciones del Proveedor con 30 días de aviso
- Acceso a documentación relevante para cumplimiento
- Entrevistas con personal clave del Proveedor
- Verificación de controles de seguridad implementados
- Copia de certificaciones y evaluaciones de terceros"
5. Monitorización y supervisión continua
5.1 Sistema de monitorización de proveedores
class SupplierPerformanceMonitor:
def __init__(self):
self.sla_metrics = {}
self.compliance_checkers = {}
self.alert_thresholds = {}
def monitor_critical_supplier(self, supplier_id, service_type):
"""Monitorización continua de proveedor crítico"""
metrics = self.collect_supplier_metrics(supplier_id)
monitoring_results = {
'availability_check': self.check_availability_sla(metrics, supplier_id),
'performance_check': self.check_performance_sla(metrics, supplier_id),
'security_check': self.check_security_compliance(metrics, supplier_id),
'compliance_check': self.check_regulatory_compliance(supplier_id),
'financial_health': self.assess_supplier_financial_health(supplier_id)
}
# Generar alertas si es necesario
alerts = []
for check_name, result in monitoring_results.items():
if result['status'] == 'VIOLATION':
alerts.append(self.generate_sla_violation_alert(supplier_id, check_name, result))
elif result['status'] == 'WARNING':
alerts.append(self.generate_warning_alert(supplier_id, check_name, result))
# Actualizar dashboard de proveedores
self.update_supplier_dashboard(supplier_id, monitoring_results)
return {
'supplier_id': supplier_id,
'monitoring_results': monitoring_results,
'alerts_generated': alerts,
'overall_status': self.calculate_overall_supplier_status(monitoring_results)
}
def check_availability_sla(self, metrics, supplier_id):
"""Verificación de cumplimiento de SLA de disponibilidad"""
sla_target = self.get_sla_target(supplier_id, 'availability')
actual_availability = metrics.get('availability_percentage', 0)
if actual_availability < sla_target:
return {
'status': 'VIOLATION',
'sla_target': sla_target,
'actual_value': actual_availability,
'credit_applicable': self.calculate_sla_credit(supplier_id, 'availability', actual_availability),
'escalation_required': actual_availability < 99.5 # Escalación automática
}
return {'status': 'COMPLIANT', 'sla_target': sla_target, 'actual_value': actual_availability}
6. Gestión de riesgos de terceros
6.1 Matriz de riesgos de externalización
Outsourcing_Risk_Matrix:
High_Risk_Scenarios:
Data_Breach_by_Supplier:
Impact: "Critical - Patient data exposure"
Likelihood: "Low"
Mitigation:
- "Contractual liability clauses"
- "Insurance requirements (>= 5M EUR)"
- "Regular security audits"
- "Data minimization principles"
Supplier_Business_Failure:
Impact: "High - Service disruption"
Likelihood: "Medium"
Mitigation:
- "Financial health monitoring"
- "Escrow agreements for critical IP"
- "Alternative supplier pre-qualification"
- "Data portability guarantees"
Regulatory_Non_Compliance:
Impact: "Critical - Device certification loss"
Likelihood: "Medium"
Mitigation:
- "Compliance monitoring dashboard"
- "Regular compliance audits"
- "Change notification requirements"
- "Regulatory expertise validation"
7. Procedimientos de terminación y transición
7.1 Plan de exit strategy
Exit_Strategy_Framework:
Data_Recovery:
Timeline: "Complete data extraction within 30 days"
Format: "Standard formats (CSV, JSON, SQL) + proprietary formats"
Validation: "Data integrity verification required"
Secure_Deletion: "Certified deletion within 60 days"
Service_Transition:
Overlap_Period: "Minimum 90 days with alternative supplier"
Knowledge_Transfer: "Complete documentation + training sessions"
Configuration_Export: "All settings, customizations documented"
Testing_Period: "30 days parallel operation"
Regulatory_Continuity:
Certification_Transfer: "Support for certification maintenance"
Audit_Trail_Preservation: "7 years minimum retention"
Authority_Notification: "Joint notification to regulatory bodies"
8. Referencias cruzadas
- OP.EXT.2: Gestión diaria de proveedores
- OP.EXT.3: Protección de cadena de suministro
- R-TF-013-002: Riesgos asociados a terceros
- GP-013: Marco de ciberseguridad aplicado a terceros
- T-024-007: Procedimiento de gestión de proveedores
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix
of the GP-001
, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001