578 lines
19 KiB
Plaintext
578 lines
19 KiB
Plaintext
;LABO:RPCSVC:PBA_LOGS
|
||
|
||
; I.A read ack log file from service inside (Patienten Befund App)
|
||
|
||
; input: message in $11
|
||
; filename in $12
|
||
; key of EXSS in $13
|
||
|
||
$msg_in=$11
|
||
$file_in=$12
|
||
|
||
$2=0
|
||
$cnt=1
|
||
|
||
$start_msg = $msg_in
|
||
|
||
while($msg_in!="")
|
||
$i95=$msg_in
|
||
$line=nextsubstr("\r")
|
||
$msg_in=$i95
|
||
$i95=$line
|
||
$var=nextsubstr(":")
|
||
$content=$i95
|
||
$nop=message("msg_in=>%%$msg_in%%%<")
|
||
switch($var)
|
||
case "ORDER_ID": $pba_order = $content
|
||
case "ZIP": $pba_zip = $content
|
||
case "BIRTHDATE": $pba_birthday = $content
|
||
case "UDID": $pba_udid = $content
|
||
case "TYPE": $pba_type = $content ; POSIBLE TYPES: SUBSCRIBE, UNSUBSCRIBE, DELETE_DEVICE, PICKEDUP, ERROR
|
||
case "PAT_ID": $pba_patid = $content
|
||
default:
|
||
endswitch
|
||
$cnt=$cnt + 1
|
||
endwhile
|
||
|
||
$sampleid_cnt = 0
|
||
|
||
$ord_lid = ""
|
||
$ord_lperiod = ""
|
||
$ord_ordnb = ""
|
||
$ord_error = ""
|
||
|
||
; I.A Pathes
|
||
$filedir_mdm = "/share/mg-msg/_PBA/mdm2snd_in/"
|
||
$ack_error = "/share/mg-msg/_PBA/ack-in/error/"
|
||
$ack_done = "/share/mg-msg/_PBA/ack-in/done/"
|
||
|
||
; I.A Current TimeStamp
|
||
$now = fmtldate(ldate_now(),"%0Y%0M%0D%0H%0N%0S")
|
||
|
||
; I.A Grab the directory and file pathes
|
||
$fname=$file_in
|
||
$filedir=""
|
||
$filename=""
|
||
while($fname!="")
|
||
$i95=$fname
|
||
$ele=nextsubstr("/")
|
||
$fname=$i95
|
||
if($fname!="")
|
||
$filedir="%%$filedir%%%/%%$ele%%%"
|
||
else
|
||
$filename=$ele
|
||
endif
|
||
$nop=message("dir=%%$filedir%%%-filename=%%$filename%%%")
|
||
endwhile
|
||
|
||
if($filename == "")
|
||
$filename = "%%$pba_order%%%_%%$now%%%"
|
||
endif
|
||
|
||
$nop = message("FOUND: $pba_udid=%%$pba_udid%%%, $pba_type=%%$pba_type%%%")
|
||
|
||
if($pba_udid != "" && $pba_type != "")
|
||
|
||
; I.A check type of request
|
||
|
||
; ***SUBSCRIBE*** - Patient want to get the results over app
|
||
if($pba_type == "SUBSCRIBE")
|
||
|
||
if($pba_order != "" && $pba_zip != "" && $pba_birthday != "" && length($pba_order) #> 5 && length($pba_order) #<= 14)
|
||
|
||
$sql = "select concat('CNT:', count(*)) CNT from ord inner join patd on patd.patidnb = ord.ordpatidnb where ord.sampleid = '%%$pba_order%%%' and patd.zip is not null and patd.zip = '%%$pba_zip%%%' and patd.birthdt is not null and to_char(patd.birthdt, 'YYYY-MM-DD') = '%%$pba_birthday%%%'"
|
||
$sql_res = sqlprint($sql, "LOCAL_DATA/NOCOMMIT")
|
||
|
||
$nop = message("1. CNT: %%$sql_res%%%")
|
||
|
||
; I.A get number of available recors for the sampleid from the ord table
|
||
if($sql_res != "")
|
||
|
||
$i95 = $sql_res
|
||
nextsubstr('CNT:')
|
||
$sampleid_cnt = $i95
|
||
|
||
; sampleid exists only one time and it is uniq, just use it for internal order id(LID, LPERIOD, ORDNB) PK
|
||
if($sampleid_cnt #== 1)
|
||
|
||
$sql_res = ""
|
||
$sql = "select concat('ORD:', concat(ord.lid, concat(ord.lperiod, ord.ordnb))) ordid from ord inner join patd on patd.patidnb = ord.ordpatidnb where ord.sampleid = '%%$pba_order%%%' and patd.zip is not null and patd.zip = '%%$pba_zip%%%' and patd.birthdt is not null and to_char(patd.birthdt, 'YYYY-MM-DD') = '%%$pba_birthday%%%'"
|
||
$sql_res = sqlprint($sql, "LOCAL_DATA/NOCOMMIT")
|
||
|
||
$nop = message("1. ORD: %%$sql_res%%%")
|
||
|
||
; I.A extract LID, LPERIOD, ORDNB
|
||
if($sql_res != "")
|
||
$i95 = $sql_res
|
||
nextsubstr('ORD:')
|
||
$order_id = $i95
|
||
|
||
if($order_id != "")
|
||
$ord_lid = $order_id[1:2]
|
||
$ord_lperiod = $order_id[3:6]
|
||
$ord_ordnb = $order_id[7:10]
|
||
endif
|
||
endif
|
||
else
|
||
|
||
; I.A check if sampleid with zip and birthday has uniq order else reject(sampleid not uniq)
|
||
if($sampleid_cnt #> 1)
|
||
$ord_error = "SAMPLE_ID_NOT_UNIQ"
|
||
endif
|
||
|
||
; I.A sampleid with zip and birthday was not found
|
||
if($sampleid_cnt #<= 0)
|
||
$ord_error = "SAMPLE_NOT_FOUND"
|
||
endif
|
||
|
||
endif
|
||
else
|
||
$ord_error = "SAMPLE_NOT_FOUND"
|
||
endif
|
||
|
||
; I.A check if error available
|
||
if($ord_error == "")
|
||
|
||
; I.A check if order found
|
||
if($ord_lid != "" && $ord_lperiod != "" && $ord_ordnb != "")
|
||
|
||
; I.A get pat id and order states
|
||
$11 = $ord_lid
|
||
$12 = $ord_lperiod
|
||
$13 = $ord_ordnb
|
||
$14 = "ORDPATIDNB"
|
||
$15="RPT_ST" ; C - only last results
|
||
$16="ORD_ST1" ; 5 - the results has been already printed
|
||
$17 = ""
|
||
run("LABO:ORD_L")
|
||
|
||
$ordpatid=$14
|
||
$ord_prt_st=$15
|
||
$ord_st1 = $16
|
||
|
||
$nop = message("ordpatid=%%$ordpatid%%%")
|
||
|
||
; I.A Patient found
|
||
if($14 != "" && $14 != "ORDPATIDNB")
|
||
|
||
; I.A Set UDID to the patient(KWL) and check if order is ready to send to the backendservice
|
||
; Set flag to the order that the patient has been subscribted for the results and it should be sent over app
|
||
|
||
;PHA 25.07.2022: Read KWL from PATD and ADD UDID
|
||
;Read KWL from PATD
|
||
$11=$ordpatid
|
||
$12="KWL"
|
||
$13=""
|
||
run("LABO:PATD_L")
|
||
$pat_kwl=$12
|
||
|
||
if($pat_kwl = "EMAIL=" || $pat_kwl = "")
|
||
$pat_kwl = "PBA_UDID=\"%%$pba_udid%%%\""
|
||
else
|
||
$i95 = $pat_kwl
|
||
$pat_kwl_i = replsubstr("PBA_UDID", "PBA_UDID")
|
||
|
||
if($pat_kwl_i #> 0)
|
||
$pat_kwl.PBA_UDID = $pba_udid
|
||
else
|
||
$pat_kwl = "%%$pat_kwl%%%\nPBA_UDID=\"%%$pba_udid%%%\""
|
||
endif
|
||
endif
|
||
|
||
;UPDATE PATD field KWL with UDID
|
||
$90="LABO"
|
||
$91="PATD"
|
||
$10="INTUDBU"
|
||
$11=$ordpatid
|
||
$12="KWL=%%$pat_kwl%%%"
|
||
$13=""
|
||
run("LABO:PATD_EI")
|
||
;COMMIT must be done here (not done in PATD_EI)
|
||
$11="COMMIT"
|
||
run("LABO:MPLUTIL")
|
||
|
||
; I.A Set PBA_TYPE to SUBSCRIBE in ORDER.KWL
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14=";MPL
|
||
$kwl=kwl_fill.ORD
|
||
$kwl.PBA_TYPE=$pba_type
|
||
kwl_fill.ORD=$kwl"
|
||
$nop=message("14=%%$14%%%")
|
||
run("LABO:ORD_UDY")
|
||
|
||
; Create a historical record in the journal of order
|
||
$rem = "PBA, Patientenbefund wurde für die Befundapp abonniert, type=%%$pba_type%%%"
|
||
$nop=message("rem=%%$rem%%%")
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14="OO"
|
||
$15="" ;runnb_dt
|
||
$16="" ;runnb_hh
|
||
$17=$rem
|
||
$18=""
|
||
$19=""
|
||
run("LABO:ORDTRAIL_UDY")
|
||
|
||
; I.A move file to done
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
; I.A check if currently subscripted results is already completed and execute print mode o/1
|
||
|
||
; I.A Results is ready and can be printed
|
||
if($ord_prt_st == "C" && $ord_st1 #== 5)
|
||
|
||
$cyes=creg("CYES")
|
||
$cno=creg("CNO")
|
||
|
||
$1="BATCH"
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$rmode="o"
|
||
$rmodeel="1"
|
||
$rpt_cpa="A" ; completion flag
|
||
|
||
$14="PROV_FL=%%$cyes%%%RMODE=%%$rmode%%%RMODEEL=%%$rmodeel%%%\
|
||
RPT_CPA=%%$rpt_cpa%%%REPRINT_FL=%%$cyes%%%ONLY_RPT_TYP=ONLY_RPT_FMT=\
|
||
ONLY_RPT_CLASS=ONLY_COPY_TYP=DUBBLE_TXT_FL=DIRECTPRINT_FL=%%$cyes%%%\
|
||
DIRP_PRINTER=DIRP_RPT_FMT=DIRP_RPT_TYP="
|
||
|
||
run("LABO:RPT1_SELS")
|
||
|
||
endif
|
||
|
||
else
|
||
; ---ERROR--- $14(ORDPATIDNB) == ""
|
||
$ord_error = "Patient for sampleid(%%$pba_order%%%) was not found"
|
||
$nop = message("Patient for sampleid(%%$pba_order%%%) was not found")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
else
|
||
; ---ERROR--- $ord_lid == "" || $ord_lperiod == "" || $ord_ordnb == ""
|
||
$ord_error = "SUBSCIBE - Order for sampleid(%%$pba_order%%%), zip(%%$pba_zip%%%), birthday(%%$pba_birthday%%%) was not found"
|
||
$nop = message("Error %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
else
|
||
; I.A check if sampleid is not uniq and send reject hl7 to the backendservice
|
||
if($ord_error == "SAMPLE_ID_NOT_UNIQ")
|
||
;***** REJECT SUBSCRIBE HL7 *****
|
||
$hl7_msh = "MSH|1|MOLIS||||%%$now%%%||MDM^T01||P|2.3|||AL|NE|DE\r"
|
||
$hl7_evn = "EVN|T01|%%$now%%%|REJECTED\r"
|
||
$hl7_pid = "PID|1||%%$pba_birthday%%%|%%$pba_zip%%%|%%$pba_udid%%%\r"
|
||
$hl7_txa = "TXA|1|%%$pba_order%%%|\r"
|
||
$hl7_obx = "OBX|||||"
|
||
|
||
$hl7 = "%%$hl7_msh%%$hl7_evn%%$hl7_pid%%$hl7_txa%%$hl7_obx%%%"
|
||
$hl7_filename = "MG%%$pba_order%%%_%%$now%%%.hl7"
|
||
$aa = filewrite("%%$filedir_mdm%%$hl7_filename%%%", $hl7)
|
||
|
||
; I.A move ack log to done directory
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
else
|
||
|
||
if($ord_error == "SAMPLE_NOT_FOUND")
|
||
|
||
;***** NOT_FOUND SUBSCRIBE HL7 *****
|
||
$hl7_msh = "MSH|1|MOLIS||||%%$now%%%||MDM^T01||P|2.3|||AL|NE|DE\r"
|
||
$hl7_evn = "EVN|T01|%%$now%%%|NOT_FOUND\r"
|
||
$hl7_pid = "PID|1||%%$pba_birthday%%%|%%$pba_zip%%%|%%$pba_udid%%%\r"
|
||
$hl7_txa = "TXA|1|%%$pba_order%%%|\r"
|
||
$hl7_obx = "OBX|||||"
|
||
|
||
$hl7 = "%%$hl7_msh%%$hl7_evn%%$hl7_pid%%$hl7_txa%%$hl7_obx%%%"
|
||
$hl7_filename = "MG%%$pba_order%%%_%%$now%%%.hl7"
|
||
$aa = filewrite("%%$filedir_mdm%%$hl7_filename%%%", $hl7)
|
||
|
||
; I.A move ack log to done directory
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
else
|
||
|
||
; ---ERROR--- $ord_error != ""
|
||
; I.A some of other error was occurred. The current ack file will be moved into ack error
|
||
$nop = message("Error: %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
|
||
endif
|
||
endif
|
||
endif
|
||
else
|
||
; ---ERROR--- $pba_order, $pba_birthday, $pba_zip
|
||
$ord_error = "Missing parameter pba_order or pba_birthday or pba_zip (pba_order = %%$pba_order%%%, pba_birthday = %%$pba_birthday%%%, pba_zip = %%$pba_zip%%%, pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%)"
|
||
$nop = message("Error: %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
endif
|
||
|
||
; ***UNSUBSCRIBE*** - Patient deleted request on the mobile device ($pba_order should not be notified anymore, but keep storing udid for patient)
|
||
if($pba_type == "UNSUBSCRIBE")
|
||
|
||
if($pba_order != "" && $pba_zip != "" && $pba_birthday != "" && length($pba_order) #> 5 && length($pba_order) #<= 14)
|
||
|
||
$sql = "select concat('ORD:', concat(ord.lid, concat(ord.lperiod, ord.ordnb))) ordid from ord inner join patd on patd.patidnb = ord.ordpatidnb where ord.sampleid = '%%$pba_order%%%' and patd.zip is not null and patd.zip = '%%$pba_zip%%%' and patd.birthdt is not null and to_char(patd.birthdt, 'YYYY-MM-DD') = '%%$pba_birthday%%%'"
|
||
$sql_res = sqlprint($sql, "LOCAL_DATA/NOCOMMIT")
|
||
|
||
$nop = message("1. ORD: %%$sql_res%%%")
|
||
|
||
; I.A extract LID, LPERIOD, ORDNB
|
||
if($sql_res != "")
|
||
$i95 = $sql_res
|
||
nextsubstr('ORD:')
|
||
$order_id = $i95
|
||
|
||
if($order_id != "")
|
||
$ord_lid = $order_id[1:2]
|
||
$ord_lperiod = $order_id[3:6]
|
||
$ord_ordnb = $order_id[7:10]
|
||
endif
|
||
endif
|
||
|
||
; I.A check if order found
|
||
if($ord_lid != "" && $ord_lperiod != "" && $ord_ordnb != "")
|
||
|
||
; I.A Set PBA_TYPE to UNSUBSCRIBE in ORDER.KWL
|
||
;$11=$ord_lid
|
||
;$12=$ord_lperiod
|
||
;$13=$ord_ordnb
|
||
;$14=";MPL
|
||
;$kwl=kwl_fill.ORD
|
||
;$kwl.PBA_TYPE=$pba_type
|
||
;kwl_fill.ORD=$kwl"
|
||
;$nop=message("14=%%$14%%%")
|
||
;run("LABO:ORD_UDY")
|
||
|
||
; Create a historical record in the journal of order
|
||
$rem = "PBA, Patientenbefund wurde für die Befundapp abbestellt, type=%%$pba_type%%%"
|
||
$nop=message("rem=%%$rem%%%")
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14="OO"
|
||
$15="" ;runnb_dt
|
||
$16="" ;runnb_hh
|
||
$17=$rem
|
||
$18=""
|
||
$19=""
|
||
run("LABO:ORDTRAIL_UDY")
|
||
|
||
; I.A move file to done
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
else
|
||
; ---ERROR--- $ord_lid == "" || $ord_lperiod == "" || $ord_ordnb == ""
|
||
$ord_error = "UNSUBSCRIBE - Order for sampleid(%%$pba_order%%%), zip(%%$pba_zip%%%), birthday(%%$pba_birthday%%%) was not found"
|
||
$nop = message("Error %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
else
|
||
; ---ERROR--- $pba_order == ""
|
||
$ord_error = "Missing parameter pba_order, (pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%)"
|
||
$nop = message("Error: pba_order was not found. pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
|
||
endif
|
||
|
||
; ***DELETE_DEVICE*** - Patient deleted his account on the mobile device(udid must be removed from patient, that it does not want to get results via app anymore)
|
||
if($pba_type == "DELETE_DEVICE")
|
||
|
||
$nop = message("DELETE_DEVICE ordpatid=%%$pba_patid%%%")
|
||
|
||
; I.A Get Patient over udid and remove it from patient
|
||
if($pba_patid != "")
|
||
|
||
;PHA 25.07.2022: Read KWL from PATD and ADD UDID
|
||
;Read KWL from PATD
|
||
$11=$pba_patid
|
||
$12="KWL"
|
||
$13=""
|
||
run("LABO:PATD_L")
|
||
$pat_kwl=$12
|
||
$pat_kwl.PBA_UDID=""
|
||
;UPDATE PATD field KWL with UDID
|
||
$90="LABO"
|
||
$91="PATD"
|
||
$10="INTUDBU"
|
||
$11=$pba_patid
|
||
$12="KWL=%%$pat_kwl%%%"
|
||
$13=""
|
||
run("LABO:PATD_EI")
|
||
;COMMIT must be done here (not done in PATD_EI)
|
||
$11="COMMIT"
|
||
run("LABO:MPLUTIL")
|
||
|
||
|
||
; I.A move file to done
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
else
|
||
|
||
; ---ERROR--- $pba_order == ""
|
||
$ord_error = "Missing parameter pba_patid, (pba_patid = %%$pba_patid%%%, pba_type = %%$pba_type%%%)"
|
||
$nop = message("Error: %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
|
||
endif
|
||
|
||
endif
|
||
|
||
; ***PICKEDUP*** - Patient picked up the results insert log into journal
|
||
if($pba_type == "PICKEDUP")
|
||
|
||
if($pba_order != "" && $pba_zip != "" && $pba_birthday != "" && length($pba_order) #> 5 && length($pba_order) #<= 14)
|
||
|
||
$sql = "select concat('ORD:', concat(ord.lid, concat(ord.lperiod, ord.ordnb))) ordid from ord inner join patd on patd.patidnb = ord.ordpatidnb where ord.sampleid = '%%$pba_order%%%' and patd.zip is not null and patd.zip = '%%$pba_zip%%%' and patd.birthdt is not null and to_char(patd.birthdt, 'YYYY-MM-DD') = '%%$pba_birthday%%%'"
|
||
$sql_res = sqlprint($sql, "LOCAL_DATA/NOCOMMIT")
|
||
|
||
$nop = message("1. ORD: %%$sql_res%%%")
|
||
|
||
; I.A extract LID, LPERIOD, ORDNB
|
||
if($sql_res != "")
|
||
$i95 = $sql_res
|
||
nextsubstr('ORD:')
|
||
$order_id = $i95
|
||
|
||
if($order_id != "")
|
||
$ord_lid = $order_id[1:2]
|
||
$ord_lperiod = $order_id[3:6]
|
||
$ord_ordnb = $order_id[7:10]
|
||
endif
|
||
endif
|
||
|
||
; I.A check if order found
|
||
if($ord_lid != "" && $ord_lperiod != "" && $ord_ordnb != "")
|
||
|
||
; I.A Set PBA_TYPE to PICKEDUP in ORDER.KWL
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14=";MPL
|
||
$kwl=kwl_fill.ORD
|
||
$kwl.PBA_TYPE=$pba_type
|
||
kwl_fill.ORD=$kwl"
|
||
$nop=message("14=%%$14%%%")
|
||
run("LABO:ORD_UDY")
|
||
|
||
; Create a historical record in the journal of order
|
||
$rem = "PBA, Patientenbefund wurde über die Befundapp abgeholt, type=%%$pba_type%%%"
|
||
$nop=message("rem=%%$rem%%%")
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14="OO"
|
||
$15="" ;runnb_dt
|
||
$16="" ;runnb_hh
|
||
$17=$rem
|
||
$18=""
|
||
$19=""
|
||
run("LABO:ORDTRAIL_UDY")
|
||
|
||
; I.A move file to done
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
else
|
||
; ---ERROR--- $ord_lid == "" || $ord_lperiod == "" || $ord_ordnb == ""
|
||
$ord_error = "PICKEDUP - Order for sampleid(%%$pba_order%%%), zip(%%$pba_zip%%%), birthday(%%$pba_birthday%%%) was not found"
|
||
$nop = message("Error %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
else
|
||
; ---ERROR--- $pba_order == ""
|
||
$ord_error = "Missing parameter pba_order, (pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%)"
|
||
$nop = message("Error: pba_order was not found. pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
|
||
endif
|
||
|
||
; ***ERROR*** - Results could not be sent to the app, insert log into journal
|
||
if($pba_type == "ERROR")
|
||
|
||
if($pba_order != "" && $pba_zip != "" && $pba_birthday != "" && length($pba_order) #> 5 && length($pba_order) #<= 14)
|
||
|
||
$sql = "select concat('ORD:', concat(ord.lid, concat(ord.lperiod, ord.ordnb))) ordid from ord inner join patd on patd.patidnb = ord.ordpatidnb where ord.sampleid = '%%$pba_order%%%' and patd.zip is not null and patd.zip = '%%$pba_zip%%%' and patd.birthdt is not null and to_char(patd.birthdt, 'YYYY-MM-DD') = '%%$pba_birthday%%%'"
|
||
$sql_res = sqlprint($sql, "LOCAL_DATA/NOCOMMIT")
|
||
|
||
$nop = message("1. ORD: %%$sql_res%%%")
|
||
|
||
; I.A extract LID, LPERIOD, ORDNB
|
||
if($sql_res != "")
|
||
$i95 = $sql_res
|
||
nextsubstr('ORD:')
|
||
$order_id = $i95
|
||
|
||
if($order_id != "")
|
||
$ord_lid = $order_id[1:2]
|
||
$ord_lperiod = $order_id[3:6]
|
||
$ord_ordnb = $order_id[7:10]
|
||
endif
|
||
endif
|
||
|
||
; I.A check if order found
|
||
if($ord_lid != "" && $ord_lperiod != "" && $ord_ordnb != "")
|
||
|
||
; I.A Set PBA_TYPE to ERROR in ORDER.KWL
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14=";MPL
|
||
$kwl=kwl_fill.ORD
|
||
$kwl.PBA_TYPE=$pba_type
|
||
kwl_fill.ORD=$kwl"
|
||
$nop=message("14=%%$14%%%")
|
||
run("LABO:ORD_UDY")
|
||
|
||
; Create a historical record in the journal of order
|
||
$rem = "PBA, Patientenbefund konnte über die Befundapp nicht verschickt werden, type=%%$pba_type%%%"
|
||
$nop=message("rem=%%$rem%%%")
|
||
$11=$ord_lid
|
||
$12=$ord_lperiod
|
||
$13=$ord_ordnb
|
||
$14="OO"
|
||
$15="" ;runnb_dt
|
||
$16="" ;runnb_hh
|
||
$17=$rem
|
||
$18=""
|
||
$19=""
|
||
run("LABO:ORDTRAIL_UDY")
|
||
|
||
; I.A move file to done
|
||
spawn("mv %%$file_in%%% %%$ack_done%%%/%%$filename%%%")
|
||
|
||
else
|
||
; ---ERROR--- $ord_lid == "" || $ord_lperiod == "" || $ord_ordnb == ""
|
||
$ord_error = "ERROR - Order for sampleid(%%$pba_order%%%), zip(%%$pba_zip%%%), birthday(%%$pba_birthday%%%) was not found"
|
||
$nop = message("Error %%$ord_error%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
else
|
||
; ---ERROR--- $pba_order == ""
|
||
$ord_error = "Missing parameter pba_order, (pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%)"
|
||
$nop = message("Error: pba_order was not found. pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif
|
||
|
||
endif
|
||
|
||
else
|
||
; ---ERROR--- $pba_udid == "" or $pba_type == ""
|
||
$ord_error = "Missing parameters (pba_udid or pba_type)"
|
||
$nop = message("Error: pba_udid or pba_type was not found. pba_udid = %%$pba_udid%%%, pba_type = %%$pba_type%%%")
|
||
spawn("mv %%$file_in%%% %%$ack_error%%%/%%$filename%%%")
|
||
$aa = filewrite("%%$ack_error%%$filename%%%_msg.log", $ord_error)
|
||
endif |