This commit is contained in:
Dwi Swandhana
2026-05-04 15:32:55 +07:00
parent b751d782c4
commit df3396a776
6 changed files with 70 additions and 9 deletions
@@ -2009,10 +2009,9 @@ class DokterController extends Controller
return back();
}
} else if ($worklist == 'hapusdatapertumbuhankoloni'){
$getdataawal = Periksa::where('nofoto', $nofoto)->first();
$id = $getdataawal->id ?? $nofoto;
$idtabel = $request->input('id');
try {
$ceksek = DB::table('pertumkolomni')->where('orderid', $id)->first();
$ceksek = DB::table('pertumkolomni')->where('id', $idtabel)->first();
Riwayat::create([
'nofoto' => $nofoto,
'jawaban' => 'Menghapus Data Pertumbuhan Koloni',
@@ -2020,7 +2019,7 @@ class DokterController extends Controller
'keterangan' => json_encode($ceksek),
'verifikasi' => '',
]);
DB::table('pertumkolomni')->where('orderid', $id)->delete();
DB::table('pertumkolomni')->where('id', $idtabel)->delete();
return response()->json(['icon' => 'success', 'warna' => '#1dcbbd', 'status' => 'Success', 'message' => 'Delete Data Pertumbuhan Koloni Berhasil']);
} catch (Exception $e) {
$pesan = $e->getMessage();
@@ -1310,7 +1310,7 @@ class FrontpageController extends Controller
}
}
public function registerApi(Request $request) {
Log::info(' Incomming '.json_encode($request->input()));
//Log::info(' Incomming '.json_encode($request->input()));
$decodedData = $request->json()->all();
$norm = $decodedData['norm'] ?? null;
$nama = $decodedData['nama'] ?? null;
@@ -5412,7 +5412,7 @@
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', align: 'center'},
{ text: 'Comming From', filtertype: 'checkedlist', datafield: 'asalpasien', width: 120, cellsalign: 'left', align: 'center'},
{ text: 'Service', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'},
{ text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'},
+1 -1
View File
@@ -5523,7 +5523,7 @@
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', align: 'center'},
{ text: 'Comming From', filtertype: 'checkedlist', datafield: 'asalpasien', width: 120, cellsalign: 'left', align: 'center'},
{ text: 'Service', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'},
{ text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'},
@@ -5462,7 +5462,7 @@
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', align: 'center'},
{ text: 'Comming From', filtertype: 'checkedlist', datafield: 'asalpasien', width: 120, cellsalign: 'left', align: 'center'},
{ text: 'Service', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Service', filtertype: 'checkedlist', datafield: 'tlsreques', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, cellsalign: 'left', align: 'center'},
{ text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'},
+63 -1
View File
@@ -81,6 +81,11 @@ GENEXPERT_RESULT_QUERY_INTERVAL_SECONDS = 120
GENEXPERT_RESULT_QUERY_MAX_DURATION_SECONDS = 21600
GENEXPERT_RESULT_QUERY_INFLIGHT_TIMEOUT_SECONDS = 45
GENEXPERT_ENABLE_RESULT_QUERY_SCHEDULER = False
GENEXPERT_RESPONSE_MODE_DEFAULT = "hl7_passive"
GENEXPERT_RESPONSE_MODE_BY_IP = {
# "10.10.120.73": "astm_active",
# "10.10.120.75": "hl7_passive",
}
# Mapping Flag ke IP Address GeneXpert
# Pastikan IP ini SESUAI dengan settingan "Server IP" di masing-masing alat (Client Mode)
TARGET_MAPPING = {
@@ -570,14 +575,71 @@ def frame_genexpert_response(hl7_message, framing):
return f"\x0b{message}\x1c\r".encode("utf-8")
return message.encode("utf-8")
def recv_genexpert_control_char(conn, timeout_seconds=5):
previous_timeout = conn.gettimeout()
try:
conn.settimeout(timeout_seconds)
return conn.recv(1)
finally:
conn.settimeout(previous_timeout)
def send_genexpert_astm_frame(conn, ip_addr, payload, label=""):
try:
conn.sendall(b"\x05")
log_genexpert_handshake(ip_addr, "ENQ-TX", detail=f"label={label}")
ctrl = recv_genexpert_control_char(conn, timeout_seconds=5)
if ctrl == b"\x06":
log_genexpert_handshake(ip_addr, "ACK-RX", detail=f"phase=pre-frame,label={label}")
elif ctrl == b"\x15":
log_genexpert_handshake(ip_addr, "NAK-RX", detail=f"phase=pre-frame,label={label}")
return False
else:
log_genexpert_handshake(ip_addr, "CTRL-RX", detail=f"phase=pre-frame,label={label},hex={ctrl.hex() if ctrl else 'timeout'}")
return False
conn.sendall(payload)
log_genexpert_handshake(ip_addr, "FRAME-TX", detail=f"label={label},bytes={len(payload)}")
ctrl = recv_genexpert_control_char(conn, timeout_seconds=5)
if ctrl == b"\x06":
log_genexpert_handshake(ip_addr, "ACK-RX", detail=f"phase=post-frame,label={label}")
conn.sendall(b"\x04")
log_genexpert_handshake(ip_addr, "EOT-TX", detail=f"label={label}")
return True
if ctrl == b"\x15":
log_genexpert_handshake(ip_addr, "NAK-RX", detail=f"phase=post-frame,label={label}")
conn.sendall(b"\x04")
log_genexpert_handshake(ip_addr, "EOT-TX", detail=f"label={label},after=nak")
return False
log_genexpert_handshake(ip_addr, "CTRL-RX", detail=f"phase=post-frame,label={label},hex={ctrl.hex() if ctrl else 'timeout'}")
conn.sendall(b"\x04")
log_genexpert_handshake(ip_addr, "EOT-TX", detail=f"label={label},after=unexpected")
return False
except Exception as exc:
log_genexpert_handshake(ip_addr, "ASTM-SEND-ERROR", detail=f"label={label},error={exc}")
return False
def get_genexpert_response_mode(ip_addr):
ip_addr = str(ip_addr or "").strip()
mode = GENEXPERT_RESPONSE_MODE_BY_IP.get(ip_addr, GENEXPERT_RESPONSE_MODE_DEFAULT)
if mode not in {"hl7_passive", "astm_active"}:
mode = GENEXPERT_RESPONSE_MODE_DEFAULT
return mode
def send_genexpert_response(conn, ip_addr, hl7_message, framing, label=""):
log_genexpert_hl7("OUT", ip_addr, hl7_message, label=label)
log_genexpert_hl7_full("OUT", ip_addr, hl7_message, label=label)
payload = frame_genexpert_response(hl7_message, framing)
response_mode = get_genexpert_response_mode(ip_addr)
print(
f"[GENEXPERT-DEBUG] Send response ip={ip_addr}, framing={framing}, "
f"label={label}, bytes={len(payload)}"
f"response_mode={response_mode}, label={label}, bytes={len(payload)}"
)
if framing == "astm" and response_mode == "astm_active":
send_genexpert_astm_frame(conn, ip_addr, payload, label=label)
return
conn.sendall(payload)
def send_genexpert_transport_ack(conn, ip_addr, framing, reason="frame-received"):