This commit is contained in:
Dwi Swandhana
2026-08-03 18:34:45 +07:00
parent b957be735d
commit 60681f08cc
4 changed files with 66 additions and 260 deletions
@@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use App\Poli;
use App\Poli;
use App\Periksa;
use App\DataListiner;
use App\Dokter;
@@ -37,17 +37,6 @@ use App\CriticalValueSample;
use App\Paslab;
use App\SIMBHPReport;
use Carbon\Carbon;
use Aranyasen\HL7\Message;
use Aranyasen\HL7\Connection;
use Aranyasen\HL7\Segment;
use Aranyasen\HL7\Segments\MSH;
use Aranyasen\HL7\Segments\PV1;
use Aranyasen\HL7\Segments\OBR;
use Aranyasen\HL7\Segments\ORC;
use Aranyasen\HL7\Segments\PID;
use Aranyasen\HL7\Segments\OBX;
use Aranyasen\HL7\Segments\NTE;
use Aranyasen\HL7\Segments\EVN;
use DateTime;
use Validator;
use File;
@@ -58,14 +47,10 @@ use PDFCREATOR;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
define( 'API_ACCESS_KEY', 'AAAA6YBXh1k:APA91bFL0q7QAXQGohXMpTwHco79f13C8PFk1Oo8kKhg1JerOulT9-37dxyP8X5ibABI0NuQ4ZsVxKQKCt7HuR7lUdJJuB-hTVnBmOUIBYfBlHb-Lcp6aGkj4erfF7J__A5hufXjF8Vt' );
class DokterController extends Controller
{
protected $lisServiceUrl;
public function __construct() {
$this->lisServiceUrl = env('LIS_SERVICE_URL', 'http://10.10.120.14:6002');
}
protected static function genSurat($id, $tabel){
if ($tabel == 'dengan kop' OR $tabel == 'PDF'){
$kopsurat = url('/kopsurat.png');
@@ -3238,230 +3223,6 @@ class DokterController extends Controller
}
}
echo $cetak;
}
public function exsendTomany(Request $request) {
$data = [];
$iddokter = $request->input('set01');
$modality = $request->input('set02');
$worklist = $request->input('set03');
$idcetak = $request->input('set04');
$sukses = 0;
$error = '';
$emailbody = '';
foreach($idcetak as $idperiksa){
$periksa = Periksa::where('id', $idperiksa)->first();
if (isset($periksa->id)){
$idpasien = $periksa->pasien_id;
$keterangan = $periksa->keterangan;
$daftar = $periksa->daftar;
$idruang = $periksa->ruangan_id;
$kamar = $periksa->ruangan;
$urgensi = $periksa->urgensi;
$idpoli = $periksa->poli_id;
$statuse = $periksa->status;
$noregister = $periksa->noregister;
$asalpasien = $periksa->asalpasien;
$reques = $periksa->reques;
$asuransi = $periksa->asuransi;
$foto = $periksa->foto;
$analis= $periksa->analis;
$nofoto = $periksa->nofoto;
$namapoli = $periksa->getRuangan->poli ?? 'Deleted Data Ruang';
if (is_null($analis)){
Periksa::where('id', $idperiksa)->update([
'analis' => Session('id'),
'nmanalis' => Session('nama'),
'foto' => date("Y-m-d H:i:s")
]);
}
$today = date("YmdHi");
$tanggal = date("Y-m-d H:i");
$dokter = 'Dokter Penanggung Jawab';
$arrayttl = explode("-", $nofoto);
$jenis = $arrayttl[0];
$jk = $periksa->jkpasien;
$tgllahir = $periksa->tgllahirpasien;
$kota = '';
$alamat = $periksa->alamatpasien;
$nama = $periksa->nmpasien;
$norm = $periksa->noregister;
$poli = $periksa->getPoli->poli ?? 'EMI Primary';
$tengah = '';
$blakang = '';
$tgllahir = str_replace('-', '', $tgllahir);
$arrayttl = explode(" ", $nama);
$fname = iconv("UTF-8", "tis-620", $arrayttl[0]);
if (isset($arrayttl[1])){
$tengah = iconv("UTF-8", "tis-620", $arrayttl[1]);
}
if (isset($arrayttl[2])){
$blakang = iconv("UTF-8", "tis-620", $arrayttl[2]);
} else {
$blakang = $tengah;
$tengah = '';
}
$daftar = str_replace(':', '', $daftar);
$tanggal = str_replace('-', '', $daftar);
$tanggal = str_replace(' ', '', $tanggal);
$berita = '';
//PV1.2 = value nya I (Inpatient), O (Outpatient), E (Emergency).
if ($urgensi == 'Elective'){ $urgensi = 'INPATIENT'; $prioritas = 'Routine'; }
else if ($urgensi == 'CITO'){ $urgensi = 'EMERGENCY'; $prioritas = 'Cito'; }
else { $urgensi = 'OUTPATIENT'; $prioritas = 'Routine'; }
if ($jk == 'L'){ $panggilan = 'TN'; $jk = 'M'; }
else if ($jk == 'P') { $panggilan = 'NY'; $jk = 'F'; }
else { $panggilan = 'UNK'; $jk = 'O'; }
$panggilan = '';
if ($blakang == ''){ $blakang = $fname; }
if ($worklist == 'pacs'){
$getsetting = Setting::where('id', '1')->first();
$pacsaddr = $getsetting->pacs;
$port = $getsetting->port;
$recievingfas = 'OESEND_PROD';
$portupdate = '10020';
} else {
$getsetting = Worklist::where('id', $worklist)->first();
if (isset($getsetting->ipaddress)){
$pacsaddr = $getsetting->ipaddress;
$port = $getsetting->portnumber;
$portupdate = $getsetting->portnumber;
$recievingfas = $getsetting->aetitle;
} else{
$getsetting = Setting::where('id', '1')->first();
$pacsaddr = $getsetting->pacs;
$port = $getsetting->port;
$recievingfas = 'OESEND_PROD';
$portupdate = '10020';
}
}
if (is_null($foto)){
$msg = new Message();
$msh = new MSH();
//$msh->setField(1, '|');
//$msh->setField(2, '^~\&');
$msh->setField(3, 'RIS');
$msh->setField(4, 'RSSA MALANG');
//$msh->setField(5, $recievingfas);
$msh->setField(5, 'OESEND_PROD');
$msh->setField(6, 'EMR');
$msh->setField(7, $today);
$msh->setField(9, ['ORM', 'O01']);
$msg->addSegment($msh);
$pid = new PID();
$pid->setField(2, [$norm, '', '11', $poli]);
$pid->setField(3, [$norm, 'C', '11', $jenis]);
$pid->setPatientName([$blakang, $fname, $tengah, $panggilan]);
$pid->setField(7, $tgllahir);
$pid->setField(8, $jk);
$pid->setField(10, 'IN');
$pid->setField(18, [$idperiksa, '', 'M11', 'Visit']);
$pid->setField(19, 'IN');
$msg->addSegment($pid);
$pv1 = new PV1();
$pv1->setField(2, $urgensi);
$pv1->setField(3, [$jenis,'','', $kamar]);
$pv1->setField(10, $poli);
$pv1->setField(18, $asuransi);
$pv1->setField(19, [$idperiksa, '', 'M11', 'Visit']);
$pv1->setField(44, $today);
$msg->addSegment($pv1);
$orc = new ORC();
$orc->setField(1, 'NW');
$orc->setField(2, [$nofoto, $poli]);
$orc->setField(3, [$nofoto, $poli]);
$orc->setField(5, 'SC');
$orc->setField(7, ['', '', '', '', '', $prioritas]);
$orc->setField(15, $today);
//$orc->setField(16, $klinis);
$orc->setField(17, 'Radiologi RSSA');
$msg->addSegment($orc);
$obr = new OBR();
$obr->setField(2, [$nofoto, $poli]);
$obr->setField(3, [$nofoto, $poli]);
$obr->setField(4, [$modality, $reques, $poli]);
$obr->setField(5, $prioritas);
$obr->setField(6, $today);
$obr->setField(16, [$iddokter, $dokter]);
$obr->setField(18, $nofoto);
$obr->setField(19, $modality);
$obr->setField(21, $modality);
$obr->setField(24, $modality);
$obr->setField(27, ['1', 'once', $tanggal, $prioritas]);
$obr->setField(36, $today);
$msg->addSegment($obr);
try {
$connection = new Connection($pacsaddr, $port);
$ack = $connection->send($msg);
$sukses++;
$emailbody = $emailbody.'<br />Pasien atas nama '.$nama.' Dengan Order Pemeriksaan '.$reques.' Dari '.$asalpasien.' Terkirim ke Modality';
}catch (Exception $e) {
$result = $e->getMessage();
$error = $error.$result.'<br />';
}
} else {
$msg = new Message();
$msh = new MSH();
$msh->setField(3, 'RIS');
$msh->setField(4, 'RSSA MALANG');
$msh->setField(5, 'OESEND_PROD');
$msh->setField(6, 'EMR');
$msh->setField(7, $today);
$msh->setField(9, ['ADT', 'A08']);
$msg->addSegment($msh);
$evn = new EVN();
$evn->setField(1, 'A01');
$evn->setField(2, $tanggal);
$evn->setField(5, $recievingfas);
$evn->setField(6, 'NV44I0');
$msg->addSegment($evn);
$pid = new PID();
$pid->setField(2, [$norm, '', '11', $poli]);
$pid->setField(3, [$norm, 'C', '11', $jenis]);
$pid->setPatientName([$blakang, $fname, $tengah, $panggilan]);
$pid->setField(7, $tgllahir);
$pid->setField(8, $jk);
$pid->setField(10, 'IN');
$pid->setField(18, [$idperiksa, '', 'M11', 'Visit']);
$pid->setField(19, 'IN');
$msg->addSegment($pid);
$pv1 = new PV1();
$pv1->setField(2, $urgensi);
$pv1->setField(3, [$jenis,'','', $kamar]);
$pv1->setField(10, $poli);
$pv1->setField(18, $asuransi);
$pv1->setField(19, [$idperiksa, '', 'M11', 'Visit']);
$pv1->setField(44, $today);
$msg->addSegment($pv1);
try {
$port = '10020';
$connection = new Connection($pacsaddr, $port);
$ack = $connection->send($msg);
$sukses++;
}catch (Exception $e) {
$result = $e->getMessage();
$error = $error.$result.'<br />';
}
}
}
}
if ($error == ''){
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Data Saved<br />'.$error]);
return back();
} else {
return response()->json(['icon' => 'error', 'warna' => '#bf441d', 'status' => 'Error..!!', 'message' => $error]);
return back();
}
}
public function exsendToinsitu(Request $request) {
$data = [];