update
This commit is contained in:
No files matched your search
@@ -2009,10 +2009,9 @@ class DokterController extends Controller
|
|||||||
return back();
|
return back();
|
||||||
}
|
}
|
||||||
} else if ($worklist == 'hapusdatapertumbuhankoloni'){
|
} else if ($worklist == 'hapusdatapertumbuhankoloni'){
|
||||||
$getdataawal = Periksa::where('nofoto', $nofoto)->first();
|
$idtabel = $request->input('id');
|
||||||
$id = $getdataawal->id ?? $nofoto;
|
|
||||||
try {
|
try {
|
||||||
$ceksek = DB::table('pertumkolomni')->where('orderid', $id)->first();
|
$ceksek = DB::table('pertumkolomni')->where('id', $idtabel)->first();
|
||||||
Riwayat::create([
|
Riwayat::create([
|
||||||
'nofoto' => $nofoto,
|
'nofoto' => $nofoto,
|
||||||
'jawaban' => 'Menghapus Data Pertumbuhan Koloni',
|
'jawaban' => 'Menghapus Data Pertumbuhan Koloni',
|
||||||
@@ -2020,7 +2019,7 @@ class DokterController extends Controller
|
|||||||
'keterangan' => json_encode($ceksek),
|
'keterangan' => json_encode($ceksek),
|
||||||
'verifikasi' => '',
|
'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']);
|
return response()->json(['icon' => 'success', 'warna' => '#1dcbbd', 'status' => 'Success', 'message' => 'Delete Data Pertumbuhan Koloni Berhasil']);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$pesan = $e->getMessage();
|
$pesan = $e->getMessage();
|
||||||
|
|||||||
@@ -1310,7 +1310,7 @@ class FrontpageController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function registerApi(Request $request) {
|
public function registerApi(Request $request) {
|
||||||
Log::info(' Incomming '.json_encode($request->input()));
|
//Log::info(' Incomming '.json_encode($request->input()));
|
||||||
$decodedData = $request->json()->all();
|
$decodedData = $request->json()->all();
|
||||||
$norm = $decodedData['norm'] ?? null;
|
$norm = $decodedData['norm'] ?? null;
|
||||||
$nama = $decodedData['nama'] ?? null;
|
$nama = $decodedData['nama'] ?? null;
|
||||||
|
|||||||
@@ -5412,7 +5412,7 @@
|
|||||||
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
|
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
|
||||||
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', 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: '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: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
|
||||||
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, 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'},
|
{ text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'},
|
||||||
|
|||||||
@@ -5523,7 +5523,7 @@
|
|||||||
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
|
{ text: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
|
||||||
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', 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: '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: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
|
||||||
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, 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'},
|
{ 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: 'Time', datafield: 'daftarjam', width: 80, cellsalign: 'center', align: 'center'},
|
||||||
{ text: 'Inputor', filtertype: 'checkedlist', datafield: 'nmpendaftar', width: 110, cellsalign: 'left', 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: '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: 'Status', filtertype: 'checkedlist', datafield: 'tlsstatus', width: 150, cellsalign: 'left', align: 'center'},
|
||||||
{ text: 'Themeplate', filtertype: 'checkedlist', datafield: 'dlp', width: 75, 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'},
|
{ text: 'Jenis', filtertype: 'checkedlist', datafield: 'diagnosa2', width: 75, cellsalign: 'left', align: 'center'},
|
||||||
|
|||||||
+63
-1
@@ -81,6 +81,11 @@ GENEXPERT_RESULT_QUERY_INTERVAL_SECONDS = 120
|
|||||||
GENEXPERT_RESULT_QUERY_MAX_DURATION_SECONDS = 21600
|
GENEXPERT_RESULT_QUERY_MAX_DURATION_SECONDS = 21600
|
||||||
GENEXPERT_RESULT_QUERY_INFLIGHT_TIMEOUT_SECONDS = 45
|
GENEXPERT_RESULT_QUERY_INFLIGHT_TIMEOUT_SECONDS = 45
|
||||||
GENEXPERT_ENABLE_RESULT_QUERY_SCHEDULER = False
|
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
|
# Mapping Flag ke IP Address GeneXpert
|
||||||
# Pastikan IP ini SESUAI dengan settingan "Server IP" di masing-masing alat (Client Mode)
|
# Pastikan IP ini SESUAI dengan settingan "Server IP" di masing-masing alat (Client Mode)
|
||||||
TARGET_MAPPING = {
|
TARGET_MAPPING = {
|
||||||
@@ -570,14 +575,71 @@ def frame_genexpert_response(hl7_message, framing):
|
|||||||
return f"\x0b{message}\x1c\r".encode("utf-8")
|
return f"\x0b{message}\x1c\r".encode("utf-8")
|
||||||
return message.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=""):
|
def send_genexpert_response(conn, ip_addr, hl7_message, framing, label=""):
|
||||||
log_genexpert_hl7("OUT", ip_addr, hl7_message, label=label)
|
log_genexpert_hl7("OUT", ip_addr, hl7_message, label=label)
|
||||||
log_genexpert_hl7_full("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)
|
payload = frame_genexpert_response(hl7_message, framing)
|
||||||
|
response_mode = get_genexpert_response_mode(ip_addr)
|
||||||
print(
|
print(
|
||||||
f"[GENEXPERT-DEBUG] Send response ip={ip_addr}, framing={framing}, "
|
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)
|
conn.sendall(payload)
|
||||||
|
|
||||||
def send_genexpert_transport_ack(conn, ip_addr, framing, reason="frame-received"):
|
def send_genexpert_transport_ack(conn, ip_addr, framing, reason="frame-received"):
|
||||||
|
|||||||
Reference in New Issue
Block a user