From 9312847369cde2111fbec3ee173bb9b828cb1888 Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Mon, 20 Jan 2025 16:46:54 +0700 Subject: [PATCH] process sendorm using php --- app/Controllers/API_Requests.php | 109 +++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/app/Controllers/API_Requests.php b/app/Controllers/API_Requests.php index 940b676..2844082 100644 --- a/app/Controllers/API_Requests.php +++ b/app/Controllers/API_Requests.php @@ -107,4 +107,113 @@ class API_Requests extends ResourceController { */ } + public function sendORMHL7($reqid) { + $db = \Config\Database::connect(); + $sql = "select r.REQID, r.REFFID, r.LOC, p.PATNUMBER, p.FIRSTNAME, p.LASTNAME, p.BIRTHDATE, p.SEX, r.REQNUMBER, r.REQDATE, r.AGENT, r.DOC + from cmod.dbo.CM_TM_REQUESTS r + left join cmod.dbo.CM_TM_PATIENTS p on p.PATID=r.PATID + where r.REQID='$reqid'"; + + $type = "ORM^O01"; + + $orm = "MSH|^~\&|PBMC|TM|TDNL||||$type^|||2.3||||\r"; + $orm += "PID|1||^^^^PATNUMBER||^^^^^^L|||||^|^^||||||^||||||||||||||||"; + /* + MSH|^~\&|PBMC|TM|TDNL||||ORM^O01^|||2.3|||| + PID|1||^^^^PATNUMBER||^^^^^^L|||||^|^^||||||^|||||||||||||||| + PV1|1|||||||||||||||||||||||||||||||||||||||||||| + ORC|NW||||||^^^||||||||||||| + OBR|||||||||||||||||||||||||||^^^^^R| + + var reqid = msg['reqid'].toString(); + var reffid = msg['reffid'].toString(); + var reqnumber = msg['reqnumber'].toString(); + var patnumber = msg['patnumber'].toString(); + var loc = msg['loc'].toString(); + var doc = msg['doc'].toString(); + var firstname = msg['firstname'].toString(); + var lastname = msg['lastname'].toString(); + var birthdate = msg['birthdate'].toString(); + var sex = msg['sex'].toString(); + sex = sex.substr(0,1); + var reqdate = msg['reqdate'].toString(); + var agent = msg['agent'].toString(); + + curdate = DateUtil.getCurrentDate('yyyyMMddHHmm'); + if(loc=='PBMC Bali') { + location = 'PADMA'; doctor='PBDPS'; + } else { + location = 'PBSBY'; doctor='PBSBY'; + curdate = curdate-100; + } + + //DOB + var DOB = birthdate; + DOB=DOB.substr(0,4)+DOB.substr(5,2)+DOB.substr(8,2); + tmp['PID']['PID.7']['PID.7.1'] = DOB; + + //ADT + tmp['MSH']['MSH.9']['MSH.9.1'] = 'ADT'; + tmp['MSH']['MSH.9']['MSH.9.2'] = 'A08'; + tmp['MSH']['MSH.7']['MSH.7.1'] = curdate;//timestamp + tmp['PV1']['PV1.44']['PV1.44.1'] = curdate;//admitdatetime + tmp['PID']['PID.3']['PID.3.1'] = patnumber;//patnum + tmp['PID']['PID.5']['PID.5.1'] = firstname;//firstname + tmp['PID']['PID.5']['PID.5.2'] = lastname;//lastname + tmp['PID']['PID.7']['PID.7.1'] = DOB;//Date of Birth + tmp['PID']['PID.8']['PID.8.1'] = sex.toUpperCase();//sex + + tmp['PV1']['PV1.3']['PV1.3.1'] = location;//lokasi + tmp['PV1']['PV1.7']['PV1.7.1'] = doctor;//dokter + tmp['PV1']['PV1.8']['PV1.8.1'] = doctor;//dokter + tmp['PV1']['PV1.19']['PV1.19.1'] = reqnumber; + tmp['ORC']['ORC.2']['ORC.2.1'] = reffid; + tmp['ORC']['ORC.4']['ORC.4.1'] = reffid; + tmp['ORC']['ORC.7']['ORC.7.4'] = curdate;//coldatetime + tmp['ORC']['ORC.12']['ORC.12.1'] = doctor;//dokter + tmp['ORC']['ORC.13']['ORC.13.1'] = location;//lokasi + tmp['ORC']['ORC.15']['ORC.15.1'] = curdate;//timestamp + + //var ADT = ''+tmp['MSH']+tmp['PID']+tmp['PV1']+''; + //logger.info(ADT); + //ADT = SerializerFactory.getSerializer('HL7V2').fromXML(ADT); + //channelMap.put('ADT',ADT); + + //ORM + tmp['MSH']['MSH.9']['MSH.9.1'] = 'ORM'; + tmp['MSH']['MSH.9']['MSH.9.2'] = 'O01'; + tmp['MSH']['MSH.10']['MSH.10.1'] = reffid; + + var sql = "select t.*, m.LISCODE from cmod.dbo.CM_TM_TESTS t"+ + " left join cmod.dbo.CM_DICT_MAPPINGS m on m.HISCODE=t.HISCODE"+ + " where t.REQID='"+reqid+"'"; + var results = dbConn.executeCachedQuery(sql); + + var i=0; + var obr = tmp['OBR']; + var orc = tmp['ORC']; + + while(results.next()) { + var testcode=results.getString('LISCODE'); + var status = results.getString('TESTSTATUS'); + if(testcode != '' && testcode != null) { + tmp['ORC'][i]=orc; + if(status == '1' || status == '2') { + tmp['ORC'][i]['ORC.1']['ORC.1.1']="CA"; + } else { + tmp['ORC'][i]['ORC.1']['ORC.1.1']="NW"; + } + tmp['OBR'][i]=obr; + tmp['OBR'][i]['OBR.1']['OBR.1.1']=i+1; + tmp['OBR'][i]['OBR.4']['OBR.4.1']=testcode; + tmp['OBR'][i]['OBR.14']['OBR.14.1']=curdate; + tmp['OBR'][i]['OBR.16']['OBR.16.1']=doctor; + tmp['OBR'][i]['OBR.27']['OBR.27.6']='R'; + + i++; + } + } + */ + + } }