Create ICSR Case
curl --request POST \
--url https://api.example.com/api/v1/icsr \
--header 'Content-Type: application/json' \
--data '
{
"paciente_iniciales": "<string>",
"paciente_edad": 123,
"paciente_sexo": "<string>",
"reportante_nombre": "<string>",
"producto_sospechoso": "<string>",
"descripcion_evento": "<string>",
"paciente_peso": 123,
"paciente_dni": "<string>",
"paciente_fecha_nacimiento": "<string>",
"paciente_grupo_etareo": "<string>",
"paciente_diagnostico_principal": "<string>",
"paciente_cie10": "<string>",
"paciente_comorbilidades": "<string>",
"paciente_gestacion_meses_raw": "<string>",
"reportante_contacto": "<string>",
"reportante_email": "<string>",
"reportante_telefono": "<string>",
"reportante_ocupacion": "<string>",
"fecha_inicio_evento": "<string>",
"fecha_fin_evento": "<string>",
"gravedad": "<string>",
"ea_causalidad": "<string>",
"ea_desenlace": "<string>",
"ea_grave_solo_ram": true,
"estado": "<string>",
"numero": "<string>",
"tipo_notificacion": "<string>",
"fuente_notificacion": "<string>",
"doc_fuente_url": "<string>",
"codigo_interno_lab": "<string>",
"cenafyt_codigo": "<string>",
"productos": [
{
"nombre_producto": "<string>",
"ifa": "<string>",
"forma_farmaceutica": "<string>",
"laboratorio_pais": "<string>",
"registro_sanitario": "<string>",
"nro_lote": "<string>",
"via_administracion": "<string>",
"dosis_frecuencia": "<string>",
"fecha_inicio": "<string>",
"fecha_fin": "<string>",
"desaparecio_al_suspender": "<string>",
"desaparecio_al_disminuir_dosis": "<string>",
"reaparecio_reexposicion": "<string>",
"antecedente_reaccion": "<string>",
"paciente_recibio_tratamiento_ram": "<string>",
"detalle_tratamiento_ram": "<string>"
}
],
"concomitantes": [
{
"nombre_producto": "<string>",
"dosis_frecuencia": "<string>",
"nro_lote": "<string>",
"via_administracion": "<string>",
"fecha_inicio": "<string>",
"fecha_fin": "<string>",
"motivo_prescripcion": "<string>"
}
],
"seguimientos": [
{
"numero": 123,
"fecha": "<string>",
"comentarios": "<string>"
}
],
"lt_fecha_recibido_colaborador": "<string>",
"lt_fecha_recibido_ufv": "<string>",
"lt_dias_colab_ufv": 123,
"lt_fecha_limite_digemid": "<string>",
"lt_fecha_envio_digemid": "<string>",
"lt_dias_ufv_digemid": 123,
"lt_comentarios_no_sometimiento": "<string>",
"lt_problemas_adicionales": "<string>",
"qc_realizado_por": "<string>",
"qc_fecha": "<string>",
"revision_senales": "<string>",
"comentarios_adicionales": "<string>",
"seg_contactar_paciente": true,
"seg_adicional_fecha": "<string>",
"seg_adicional_comentarios": "<string>",
"seg_adicional_estado": "<string>"
}
'{
"id": 123,
"created_at": "<string>",
"paciente_iniciales": "<string>",
"paciente_edad": 123,
"producto_sospechoso": "<string>",
"descripcion_evento": "<string>",
"productos": [
{}
],
"concomitantes": [
{}
],
"seguimientos": [
{}
],
"eventos": [
{}
]
}ICSR
Create ICSR Case
Create a new Individual Case Safety Report with patient, product, and event information
POST
/
api
/
v1
/
icsr
Create ICSR Case
curl --request POST \
--url https://api.example.com/api/v1/icsr \
--header 'Content-Type: application/json' \
--data '
{
"paciente_iniciales": "<string>",
"paciente_edad": 123,
"paciente_sexo": "<string>",
"reportante_nombre": "<string>",
"producto_sospechoso": "<string>",
"descripcion_evento": "<string>",
"paciente_peso": 123,
"paciente_dni": "<string>",
"paciente_fecha_nacimiento": "<string>",
"paciente_grupo_etareo": "<string>",
"paciente_diagnostico_principal": "<string>",
"paciente_cie10": "<string>",
"paciente_comorbilidades": "<string>",
"paciente_gestacion_meses_raw": "<string>",
"reportante_contacto": "<string>",
"reportante_email": "<string>",
"reportante_telefono": "<string>",
"reportante_ocupacion": "<string>",
"fecha_inicio_evento": "<string>",
"fecha_fin_evento": "<string>",
"gravedad": "<string>",
"ea_causalidad": "<string>",
"ea_desenlace": "<string>",
"ea_grave_solo_ram": true,
"estado": "<string>",
"numero": "<string>",
"tipo_notificacion": "<string>",
"fuente_notificacion": "<string>",
"doc_fuente_url": "<string>",
"codigo_interno_lab": "<string>",
"cenafyt_codigo": "<string>",
"productos": [
{
"nombre_producto": "<string>",
"ifa": "<string>",
"forma_farmaceutica": "<string>",
"laboratorio_pais": "<string>",
"registro_sanitario": "<string>",
"nro_lote": "<string>",
"via_administracion": "<string>",
"dosis_frecuencia": "<string>",
"fecha_inicio": "<string>",
"fecha_fin": "<string>",
"desaparecio_al_suspender": "<string>",
"desaparecio_al_disminuir_dosis": "<string>",
"reaparecio_reexposicion": "<string>",
"antecedente_reaccion": "<string>",
"paciente_recibio_tratamiento_ram": "<string>",
"detalle_tratamiento_ram": "<string>"
}
],
"concomitantes": [
{
"nombre_producto": "<string>",
"dosis_frecuencia": "<string>",
"nro_lote": "<string>",
"via_administracion": "<string>",
"fecha_inicio": "<string>",
"fecha_fin": "<string>",
"motivo_prescripcion": "<string>"
}
],
"seguimientos": [
{
"numero": 123,
"fecha": "<string>",
"comentarios": "<string>"
}
],
"lt_fecha_recibido_colaborador": "<string>",
"lt_fecha_recibido_ufv": "<string>",
"lt_dias_colab_ufv": 123,
"lt_fecha_limite_digemid": "<string>",
"lt_fecha_envio_digemid": "<string>",
"lt_dias_ufv_digemid": 123,
"lt_comentarios_no_sometimiento": "<string>",
"lt_problemas_adicionales": "<string>",
"qc_realizado_por": "<string>",
"qc_fecha": "<string>",
"revision_senales": "<string>",
"comentarios_adicionales": "<string>",
"seg_contactar_paciente": true,
"seg_adicional_fecha": "<string>",
"seg_adicional_comentarios": "<string>",
"seg_adicional_estado": "<string>"
}
'{
"id": 123,
"created_at": "<string>",
"paciente_iniciales": "<string>",
"paciente_edad": 123,
"producto_sospechoso": "<string>",
"descripcion_evento": "<string>",
"productos": [
{}
],
"concomitantes": [
{}
],
"seguimientos": [
{}
],
"eventos": [
{}
]
}Endpoint
POST /api/v1/icsr
Authentication
Requires permission:icsr:create
Request Body
Required Fields
Patient initials (e.g., “JD” for John Doe)
Patient age in years
Patient sex: “M” (male), “F” (female), or “O” (other)
Name of the person reporting the adverse event
Name of the suspected product causing the adverse event
Detailed narrative description of the adverse event
Patient Information
Patient weight in kilograms
Patient identification document number. Aliases:
dni, doc_identidad, documento_identidadPatient date of birth (ISO format: YYYY-MM-DD)
Age group classification (e.g., “Adulto”, “Pediátrico”, “Geriátrico”)
Primary medical diagnosis
ICD-10 diagnosis code
Comorbidities and relevant medical history
Pregnancy status in months. Accepts numeric values, “No aplica”, or “Desconocido”
Reporter Information
Reporter contact information (phone or email). System will auto-detect and populate
reportante_email or reportante_telefono fields.Reporter email address
Reporter phone number
Reporter occupation/profession
Event Information
Date when the adverse event started. Aliases:
fecha_inicio, ea_fecha_inicio, evento_fecha_inicioDate when the adverse event resolved. Aliases:
fecha_fin, ea_fecha_fin, evento_fecha_finEvent severity classification (e.g., “Grave”, “No grave”)
Causality assessment. Alias:
causalidadEvent outcome. Alias:
desenlace. Common values: “Recuperado”, “En recuperación”, “Secuelas”, “Muerte”, “Desconocido”Whether the event is serious only due to the adverse reaction
Case Metadata
Case status (e.g., “Pendiente”, “En progreso”, “Cerrado”)
Case number or identifier
Notification type (e.g., “Inicial”, “Seguimiento”)
Source of notification (e.g., “Profesional de salud”, “Paciente”, “Farmacéutico”)
URL to source document or attachment
Laboratory internal code
CENAFYT reference code
Product Arrays
Array of suspected products. Each product includes:
Show Product Object Schema
Show Product Object Schema
Product name
Active pharmaceutical ingredient (API/IFA)
Pharmaceutical form (e.g., “Tableta”, “Jarabe”, “Inyectable”)
Manufacturer/laboratory and country. Aliases:
fabricante_pais, fabricantePais, pais_fabricanteSanitary registration number. Alias:
registroSanitarioBatch/lot number. Alias:
loteRoute of administration. Alias:
viaDosage and frequency (e.g., “500mg cada 8 horas”)
Product start date
Product end date
Did the event resolve upon discontinuation? Values: “si”, “no”, “no_aplica”
Did the event resolve with dose reduction? Values: “si”, “no”, “no_aplica”
Did the event recur upon rechallenge? Values: “si”, “no”, “no_aplica”
History of previous reaction? Values: “si”, “no”, “no_aplica”
Did patient receive treatment for the adverse reaction? Values: “si”, “no”, “no_aplica”
Treatment details. Alias:
detalle_tratamientoArray of concomitant medications. Each entry includes:
Show Concomitant Medication Schema
Show Concomitant Medication Schema
Timeline Fields
Date received by collaborator
Date received by pharmacovigilance unit (UFV)
Days between collaborator receipt and UFV receipt
DIGEMID submission deadline. Alias:
lt_fecha_limite_envio_digemidActual DIGEMID submission date
Days between UFV receipt and DIGEMID submission
Comments if not submitted to DIGEMID
Additional timeline problems or notes
Quality Control
QC performed by (user/reviewer name). Alias:
cc_realizado_porQC date
Signal detection review notes
Additional comments
Followup Settings
Whether patient wishes to be contacted. Alias:
paciente_desea_contactoAdditional followup date
Additional followup comments
Additional followup status
Response
Unique ICSR identifier assigned by the system
Timestamp when the case was created
Patient initials
Patient age
Suspected product
Event description
Array of product objects with
id field addedArray of concomitant medication objects with
id field addedArray of followup objects with
id field addedArray of adverse event objects (initially empty for new cases)
Behavior
Auto-Processing
When a new ICSR is created:-
Contact Auto-Detection: If
reportante_contactocontains ”@”, it’s copied toreportante_email. Otherwise, it’s copied toreportante_telefono. -
Internal Notifications: Configured users receive email notification based on environment variables:
ICSR_NOTIFY_CARGOS- Job titles to notifyICSR_NOTIFY_AREAS- Department areas to notifyICSR_NOTIFY_EMAILS- Additional email addresses
- Missing Data Auto-Reply: If reporter email is available and required fields are missing, an automatic followup email is sent requesting additional information.
- Duplicate Detection: Background duplicate detection runs automatically comparing against existing cases.
Validation
The API validates:- Required fields are present
- Data types match schema
- Date formats are ISO-8601 (YYYY-MM-DD)
- Nested arrays contain valid objects
- Field lengths don’t exceed limits
Example Request
{
"paciente_iniciales": "JD",
"paciente_edad": 45,
"paciente_sexo": "M",
"paciente_peso": 72.5,
"paciente_dni": "12345678",
"paciente_fecha_nacimiento": "1978-03-15",
"reportante_nombre": "Dr. Maria Garcia",
"reportante_email": "mgarcia@hospital.com",
"reportante_ocupacion": "Médico",
"producto_sospechoso": "Amoxicilina 500mg",
"descripcion_evento": "Paciente desarrolló rash eritematoso generalizado 3 días después de iniciar tratamiento con amoxicilina para infección respiratoria. El rash fue pruriginoso y se resolvió 48 horas después de suspender el antibiótico.",
"fecha_inicio_evento": "2024-01-15",
"fecha_fin_evento": "2024-01-18",
"gravedad": "No grave",
"ea_causalidad": "Probable",
"ea_desenlace": "Recuperado",
"estado": "Pendiente",
"tipo_notificacion": "Inicial",
"fuente_notificacion": "Profesional de salud",
"productos": [
{
"nombre_producto": "Amoxicilina",
"ifa": "Amoxicilina trihidratada",
"forma_farmaceutica": "Tableta",
"laboratorio_pais": "Laboratorio ABC - Perú",
"registro_sanitario": "EE-123456",
"nro_lote": "LOT2024-001",
"via_administracion": "Oral",
"dosis_frecuencia": "500mg cada 8 horas",
"fecha_inicio": "2024-01-12",
"fecha_fin": "2024-01-16",
"desaparecio_al_suspender": "si",
"reaparecio_reexposicion": "no_aplica"
}
],
"concomitantes": [
{
"nombre_producto": "Paracetamol",
"dosis_frecuencia": "500mg PRN",
"via_administracion": "Oral",
"motivo_prescripcion": "Fiebre"
}
]
}
Example Response
{
"id": 1234,
"created_at": "2024-01-20T10:30:00Z",
"paciente_iniciales": "JD",
"paciente_edad": 45,
"paciente_sexo": "M",
"paciente_peso": 72.5,
"paciente_dni": "12345678",
"paciente_fecha_nacimiento": "1978-03-15",
"reportante_nombre": "Dr. Maria Garcia",
"reportante_email": "mgarcia@hospital.com",
"reportante_ocupacion": "Médico",
"producto_sospechoso": "Amoxicilina 500mg",
"descripcion_evento": "Paciente desarrolló rash eritematoso generalizado...",
"fecha_inicio_evento": "2024-01-15",
"fecha_fin_evento": "2024-01-18",
"gravedad": "No grave",
"ea_causalidad": "Probable",
"ea_desenlace": "Recuperado",
"estado": "Pendiente",
"tipo_notificacion": "Inicial",
"fuente_notificacion": "Profesional de salud",
"productos": [
{
"id": 5678,
"nombre_producto": "Amoxicilina",
"ifa": "Amoxicilina trihidratada",
"forma_farmaceutica": "Tableta",
"laboratorio_pais": "Laboratorio ABC - Perú",
"registro_sanitario": "EE-123456",
"nro_lote": "LOT2024-001",
"via_administracion": "Oral",
"dosis_frecuencia": "500mg cada 8 horas",
"fecha_inicio": "2024-01-12",
"fecha_fin": "2024-01-16",
"desaparecio_al_suspender": "si",
"reaparecio_reexposicion": "no_aplica"
}
],
"concomitantes": [
{
"id": 9012,
"nombre_producto": "Paracetamol",
"dosis_frecuencia": "500mg PRN",
"via_administracion": "Oral",
"motivo_prescripcion": "Fiebre"
}
],
"seguimientos": [],
"eventos": []
}
Error Responses
400 Bad Request
{
"detail": [
{
"loc": ["body", "paciente_iniciales"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
401 Unauthorized
{
"detail": "Not authenticated"
}
403 Forbidden
{
"detail": "Permission denied: icsr:create required"
}
Notes
- The system automatically creates audit log entries for case creation
- Duplicate detection runs asynchronously and doesn’t block case creation
- Internal codes can be auto-generated using
/api/v1/icsr/codigo-interno/next - Product registration data is automatically enriched from the product catalog if
registro_sanitariomatches an existing product
⌘I