PHPackages                             romeldev/susalud-x12 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. romeldev/susalud-x12

ActiveLibrary

romeldev/susalud-x12
====================

Librería PHP para parseo y generación de tramas X12 EDI de SUSALUD (270, 271, 278, 997)

022PHP

Since Mar 3Pushed 2mo agoCompare

[ Source](https://github.com/romeldev/susalud-x12)[ Packagist](https://packagist.org/packages/romeldev/susalud-x12)[ RSS](/packages/romeldev-susalud-x12/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

SUSALUD X12
===========

[](#susalud-x12)

Paquete PHP/Laravel para generar y parsear tramas X12 EDI utilizadas en las transacciones electrónicas de SUSALUD (Superintendencia Nacional de Salud del Perú).

Soporta las transacciones **270** (consulta de elegibilidad), **271** (respuesta de elegibilidad), **278** (solicitud/respuesta de autorización) y **997** (acuse de recibo funcional).

Requisitos
----------

[](#requisitos)

- PHP &gt;= 7.2
- Laravel 5.5+ (auto-discovery habilitado) o uso standalone sin framework

Instalación
-----------

[](#instalación)

```
composer require romeldev/susalud-x12
```

Laravel detectará automáticamente el ServiceProvider y el Facade gracias al auto-discovery.

### Publicar configuración (opcional)

[](#publicar-configuración-opcional)

```
php artisan vendor:publish --tag=susalud-x12-config
```

Esto crea el archivo `config/susalud-x12.php` donde puedes configurar los separadores y el modo de operación:

```
return [
    'element_separator'   => '*',
    'segment_terminator'  => '~',
    'component_separator' => ':',
    'mode' => env('SUSALUD_X12_MODE', 'T'), // T = Test, P = Producción
];
```

Uso
---

[](#uso)

### Bean a X12 (serialización)

[](#bean-a-x12-serialización)

```
use Romeldev\SusaludX12\Facades\SusaludX12;
use Romeldev\SusaludX12\Beans\InRegAfi270;

$bean = new InRegAfi270();
$bean->noTransaccion   = '270_REGAFI';
$bean->idRemitente     = '00004210';
$bean->idReceptor      = '10001';
$bean->feTransaccion   = '20250516';
$bean->hoTransaccion   = '090400';
$bean->idCorrelativo   = '000000001';
$bean->idTransaccion   = '270';
$bean->tiFinalidad     = '13';
$bean->caRemitente     = '2';
$bean->nuRucRemitente  = '20230089630';
$bean->caReceptor      = '2';
$bean->caPaciente      = '1';
$bean->tiDocumento     = '1';
$bean->nuDocumento     = '72918104';

// Generar trama X12
$x12 = SusaludX12::regAfi270()->beanToX12($bean);
```

### X12 a Bean (parsing)

[](#x12-a-bean-parsing)

```
use Romeldev\SusaludX12\Facades\SusaludX12;

$tramaX12 = 'ISA*00*          *00*   ...'; // trama X12 completa

$bean = SusaludX12::regAfi270()->x12ToBean($tramaX12);

echo $bean->idRemitente;    // '00004210'
echo $bean->nuRucRemitente; // '20230089630'
echo $bean->nuDocumento;    // '72918104'
```

### Acceso por nombre de servicio

[](#acceso-por-nombre-de-servicio)

```
// Equivalente a SusaludX12::regAfi270()
$service = SusaludX12::service('RegAfi270');
$x12 = $service->beanToX12($bean);
```

### Uso directo de converters (sin Facade)

[](#uso-directo-de-converters-sin-facade)

```
use Romeldev\SusaludX12\Converters\RegAfi270ToX12;
use Romeldev\SusaludX12\Converters\RegAfi270ToBean;

// Bean a X12
$x12 = RegAfi270ToX12::traducirEstructura270($bean);

// X12 a Bean
$bean = RegAfi270ToBean::traducirEstructura270($tramaX12);
```

### Listar servicios disponibles

[](#listar-servicios-disponibles)

```
$servicios = SusaludX12::availableServices();
// ['RegAfi270', 'ConAse270', 'RegAfi271', 'ConCod271', ...]
```

Transacciones disponibles
-------------------------

[](#transacciones-disponibles)

### Transacciones 270 (Consulta de elegibilidad)

[](#transacciones-270-consulta-de-elegibilidad)

ServicioFacadeBeanDescripción`RegAfi270``SusaludX12::regAfi270()``InRegAfi270`Registro de afiliación`ConAse270``SusaludX12::conAse270()``InConAse270`Consulta de asegurado### Transacciones 271 (Respuesta de elegibilidad)

[](#transacciones-271-respuesta-de-elegibilidad)

ServicioFacadeBeanDescripción`RegAfi271``SusaludX12::regAfi271()``InRegAfi271`Respuesta de registro de afiliación`ConCod271``SusaludX12::conCod271()``InConCod271`Consulta por código`ConMed271``SusaludX12::conMed271()``InConMed271`Consulta médica`ConNom271``SusaludX12::conNom271()``InConNom271`Consulta por nombre`SolAut271``SusaludX12::solAut271()``InSolAut271`Solicitud de autorización`In271ConDtad``SusaludX12::in271ConDtad()``In271ConDtad`Consulta datos adicionales`In271ConObs``SusaludX12::in271ConObs()``In271ConObs`Consulta observaciones`In271ConProc``SusaludX12::in271ConProc()``In271ConProc`Consulta procedimientos`In271ResDeriva``SusaludX12::in271ResDeriva()``In271ResDeriva`Respuesta derivación`In271ResSctr``SusaludX12::in271ResSctr()``In271ResSctr`Respuesta SCTR`LogAcreInsert271``SusaludX12::logAcreInsert271()``InLogAcreInsert271`Log acreditación inserción### Transacciones 278 (Autorización de servicios)

[](#transacciones-278-autorización-de-servicios)

ServicioFacadeBeanDescripción`In278SolCG``SusaludX12::in278SolCG()``In278SolCG`Solicitud carta garantía`In278ResCG``SusaludX12::in278ResCG()``In278ResCG`Respuesta carta garantía`ConEntVinc278``SusaludX12::conEntVinc278()``InConEntVinc278`Consulta entidad vinculada`ResEntVinc278``SusaludX12::resEntVinc278()``InResEntVinc278`Respuesta entidad vinculada### Transacciones 997 (Acuse funcional)

[](#transacciones-997-acuse-funcional)

ServicioFacadeBeanDescripción`In997ResAut``SusaludX12::in997ResAut()``In997ResAut`Respuesta de autorizaciónValidación
----------

[](#validación)

Cada transacción cuenta con un validador que verifica campos requeridos, longitudes y formatos:

```
use Romeldev\SusaludX12\Validators\RegAfiValidator;

$errores = RegAfiValidator::validate($bean);

if (!empty($errores)) {
    // $errores contiene los códigos de error
    foreach ($errores as $error) {
        echo $error;
    }
}
```

Testing
-------

[](#testing)

```
composer test
```

Estructura del paquete
----------------------

[](#estructura-del-paquete)

```
src/
├── Beans/              # DTOs para cada transacción
│   └── Detalle/        # Beans de detalle (líneas de items)
├── Converters/         # Conversión Bean↔X12 (36 archivos)
├── Facades/            # Facade de Laravel
├── Segments/           # Segmentos X12 (ISA, GS, ST, NM1, etc.)
├── Services/           # Servicios por transacción + Manager
│   └── Contracts/      # Interfaz TransactionServiceInterface
├── Support/            # Utilidades
└── Validators/         # Validadores por transacción

```

Licencia
--------

[](#licencia)

MIT

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance57

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/a445f347dbf1980a1d69890bb7c84537fa3c30025c2e52922a3bb38797508ef1?d=identicon)[romeldev](/maintainers/romeldev)

---

Top Contributors

[![rodiracodes](https://avatars.githubusercontent.com/u/214765342?v=4)](https://github.com/rodiracodes "rodiracodes (6 commits)")

### Embed Badge

![Health badge](/badges/romeldev-susalud-x12/health.svg)

```
[![Health](https://phpackages.com/badges/romeldev-susalud-x12/health.svg)](https://phpackages.com/packages/romeldev-susalud-x12)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
