Skip to main content

Overview

The Seguridad system is organized into 15 Regional Units (Unidades Regionales, or URs), each serving a specific geographic jurisdiction. Every regional unit operates with its own dedicated interface while sharing a common database and application structure.

Regional Unit Structure

UR 1

Unidad Regional 1

UR 2

Unidad Regional 2

UR 3

Unidad Regional 3

UR 4

Unidad Regional 4

UR 5

Unidad Regional 5

UR 6

Unidad Regional 6

UR 7

Unidad Regional 7

UR 8

Unidad Regional 8

UR 9

Unidad Regional 9

UR 10

Unidad Regional 10

UR 11

Unidad Regional 11

UR 12

Unidad Regional 12

UR 13

Unidad Regional 13

UR 14

Unidad Regional 14

UR 15

Unidad Regional 15

Directory Structure

Each regional unit has a dedicated directory with identical structure:
Seguridad/
├── ur1/
│   ├── cabecera1.php          # Main interface header
│   ├── index.php              # Unit login page
│   ├── miconexion.php         # Database connection
│   ├── menu_preventivos1.php  # Prevention records menu
│   ├── menu_consulta1.php     # Query menu
│   ├── menu_informes1.php     # Reports menu
│   ├── alta_preventivos1.php  # New prevention record
│   ├── modificar_preventivos1.php
│   ├── consulta_preventivos_general1.php
│   ├── consulta_preventivos_judiciales1.php
│   ├── informe_preventivos1.php
│   ├── buscar_*.php           # Search functions
│   ├── variables.php          # Configuration variables
│   ├── estilo.css            # Styles
│   ├── imagenes/             # Images and assets
│   └── form/                 # Form templates
├── ur2/
│   └── [same structure]
├── ur3/
│   └── [same structure]
...
└── ur15/
    └── [same structure]

Access Control by Regional Unit

Permission Routing

Users assigned to a regional unit are automatically routed to their unit’s interface:
if (strcmp($row1[0], "1") == 0) {
    echo "<script>window.location.href = 'ur1/cabecera1.php'</script>";
}
else if (strcmp($row1[0], "2") == 0) {
    echo "<script>window.location.href = 'ur2/cabecera1.php'</script>";
}
else if (strcmp($row1[0], "3") == 0) {
    echo "<script>window.location.href = 'ur3/cabecera1.php'</script>";
}
// ... continues for UR 4-15

Session Management

Each regional unit validates user sessions:
// ur[1-15]/miconexion.php
@session_start();

if (!isset($_SESSION["_usr"])) {
    echo "Tu no estas autentificado";
    exit();
}

$categoria = $_SESSION["_categoria"];
$user1 = $_SESSION["_usr"];

Departmental Hierarchy

Dependencies Table

Each regional unit contains multiple departments (dependencias):
SELECT 
  id_dependencia,
  dependencia,
  relacion,
  direccion,
  localidad
FROM dependencias
WHERE relacion = $ur_number
ORDER BY dependencia ASC
The relacion field links departments to their parent regional unit (1-15)

Department Selection

Forms within each UR dynamically populate department dropdowns:
<select name="dependencia" id="dependencia">
  <?php
    $query = "SELECT dependencia, dependencia 
              FROM dependencias 
              WHERE relacion = $ur2 
              ORDER BY dependencia ASC";
    $result = pg_exec($query);
    
    while ($row = pg_fetch_row($result)) {
        echo "<option value='".$row[0]."'>".$row[0]."</option>";
    }
  ?>
</select>

Unit-Specific Configuration

Variables Configuration

Each unit can maintain custom variables:
// ur[1-15]/variables.php
$ur = "1";  // Regional unit number
$nombre_ur = "Unidad Regional 1";
$dependencia_principal = "COMISARIA 1RA";

Database Connection

All units share the same database but filter by unit:
// Shared connection parameters
$host = 'localhost';
$dbname = '';  // Database name
$puerto = '5434';
$user = 'postgres';

Common Functionality Across Units

Prevention Records (Preventivos)

alta_preventivos1.php
  • Register new prevention cases
  • Link to department within unit
  • Capture incident details
  • Store crime type, location, date

Operations Management

1

Register Operation

registrar_operativo.phpCreate new operational activities:
  • Operation type
  • Participating units
  • Date and location
  • Personnel assigned
2

Track Progress

listado_operativos.phpMonitor ongoing operations:
  • Status updates
  • Resource allocation
  • Timeline tracking
3

Modify Operation

modificar_operativo.phpUpdate operation details:
  • Change assignments
  • Add notes
  • Update status

Accident Management

// Traffic accident reporting
alta_preventivos_accidentes1.php
modificar_accidenteTransito.php
accidenteTransito
module
Track traffic incidents:
  • Accident type and severity
  • Vehicles involved
  • Casualties/injuries
  • Location and circumstances

Cross-Unit Coordination

Shared Queries

Administrators can query across all units:
SELECT 
  p.nro_preventivo,
  p.fecha,
  p.dependencia,
  p.delito,
  d.relacion as unidad_regional
FROM 
  preventivos p
  JOIN dependencias d ON p.dependencia = d.dependencia
WHERE 
  d.relacion IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
  AND p.fecha BETWEEN '$fecha_inicio' AND '$fecha_fin'
ORDER BY 
  d.relacion, p.fecha DESC

Administrative Oversight

Full access to all 15 regional units:
  • View all records
  • Generate cross-unit reports
  • Modify any case
  • Manage users across units
Administrative functions:
  • Monitor unit performance
  • Generate regional statistics
  • Coordinate multi-unit operations

Data Segregation

Unit Isolation

While sharing a database, each unit’s data is logically separated:
-- Users only see their unit's departments
SELECT * FROM dependencias 
WHERE relacion = $usuario_ur

Standard Navigation

Each unit provides consistent navigation:
// menu_preventivos1.php
- Alta de Preventivos (New Case)
- Buscar Preventivos (Search)
- Modificar Preventivos (Modify)
- Ampliación (Expand/Update)

Customization by Unit

Unit-Specific Forms

While structure is shared, units can customize:
Different regions may track different crime categories:
// Customizable per unit
$delitos_ur1 = array("Robo", "Hurto", "Lesiones");
$delitos_ur2 = array("Robo", "Hurto", "Narcotráfico");
Regional variations in report formats:
  • Custom headers with unit logos
  • Unit-specific data points
  • Regional legal requirements
Each unit can modify:
  • CSS styling (estilo.css)
  • Images and branding
  • Menu labels and ordering

Best Practices

Maintain Consistency

Keep core functionality identical across units for easier maintenance and training

Document Changes

Track any unit-specific customizations in documentation

Test Across Units

When updating code, test changes in multiple URs

Backup Regularly

Maintain backups of unit-specific configurations

Deployment Workflow

1

Update Template

Make changes to a reference unit (e.g., UR1)
2

Test Thoroughly

Validate all functionality in the template unit
3

Replicate

Copy changes to remaining 14 units
for i in {2..15}; do
    cp ur1/new_file.php ur$i/
done
4

Adjust Variables

Update unit-specific configuration in each UR
5

Verify

Test functionality in multiple units

Troubleshooting

Check:
  • Permission code matches unit (1-15)
  • Session variables set correctly
  • Routing logic in index.php
  • Department assignment valid
Verify:
  • dependencias table populated
  • relacion field matches UR number
  • Database connection active
  • Query permissions granted
Review:
  • Data filtering by relacion
  • Session $_categoria validation
  • SQL WHERE clauses
  • User permission level

Permissions

Regional unit access codes (1-15)

User Management

Assign users to regional units

Database Setup

Dependencies and relations schema

System Configuration

Session and routing configuration

Build docs developers (and LLMs) love