You are on page 1of 9
Encryption Key akan digenerate oleh Aplikasi E-Klaim dan tersimpan didalan database untuk digunakan dalam proses enkripsi/dekripsi pada setiap pemanggilan dan response dari Web Service. Dimohon untuk sangat menjaga Encryption Key tersebut dengan hati-hati dan rahasia. Berikut ini skema alur pertukaran data dalam Intecrasi SIMRS dengan Aplikasi E- Klaim melalui Web Service, dimulai dari SIMRS men-generate-reques events Af deren Te espe 480 Eco {80N Dacde | I ening win poses I I I engin Enaypt vin ay apy Pca te Dengan alur tersebut diatas, diharapkan data tidak dipertukarkan dalam kondisi torbuka. Untuk operasional selanjutnya, disarankan untuk men-generate ulang Encryption Key socara poriodik sebulan sckali domi keamanan dan monyosuaikannya kombali dalam SIMRS. 2016 Kement // Decryption Function function mc_decrypt(Sstr, Sstrkey) { /// make binary representation of $key Skey = hex2bin($strkey); /// check key length, must be 256 bit or 32 bytes if (mb_strlen(Skey, "Sbit") !== 32) { throw new Exception('Needs a 256-bit key!"); ? /// calculate iv size Siv_size = openss1_cipher_iv_length("aes-256-cbe"); /// breakdown parts S$decoded = base64_decode($str); Ssignature = mb_substr($decoded,0,10, "8bit"); Siv = mb_substr(Sdecoded, 10,$iv_size, "8bit"); Sencrypted = mb_substr(S$decoded,$iv_size+10,NULL, "8bit"); /// check signature, against padding oracle attack $calc_signature = mb_substr(hash_hmac(“sha256", Senerypted, Skey, true) ,0,10,"8bit"); i£(1me_compare($signature ,$calc_signature)) { return "SIGNATURE_NOT_MATCH"; /// signature doesn't natch y S$decrypted = openss1_decrypt(Sencrypted, “aes-256-cbc", skey, OPENSSL_RAW_DATA, $iv); return Sdecrypted; y 1/1 Compare Function function mc_compare($a, $b) { /// compare individually to prevent timing attacks /// compare length if (strlen(sa) strlen($b)) return false; [11 compare individual $result = 0; for($i ~ 0; $i < strlen($a); $i ++) { Sresult |= ord($a[$i]) * ord($b[$i}); y return $result © 2016 Kementerian Kesehatan Republik Indonesia Halaman 4 dari 13 Contoh: Skey = “d26cbb6£64dadec!94e668 1c4a07 6ecdbb £562 8£10£4416a6d9afel5309£1 fae"; Srequest = arrey( *metadata >"get_claim data” “data” “nomor_sep”=>”0301R00112140006067" ) di $json_request = json_encode( $request); Sencrypted = mc_encrypt($json_request, $key); echo “Sencrypted\n"; // untuk dikirim ke Web Service Sdecrypted = me_decrypt (Sencrypted $key) + echo “$decrypted\n"; // Test hasil decryp catatan: Untuk fungsi openssl_random_pseudo_bytes tersebut diatas, disarankan untuk diganti dengan fungsi random_bytes(} yang bisa diperoleh dari package random_compat (https: //github.com/paragonie/random compat). Hal tersebut dikarenakan pada fungsi openss1_random_pseudo_bytes ditemukan permasalahan atau bug sehingga menghasilkan random yang tidak kuat secara kriptografi (https://bugs.php.net/bug.php?id-70014) terutama bagi SIMRS yang masih menggunakan PHP versi 5.6.10 kebawah. KATALOG METHOD WEB SERVICE Sebagai catatan, warna biru menandakan perubahan dan warna merah menandakan mandatory. Khusus untuk senua field dalam metadata adalah mandatory. Kecuali dinyatakan lain didalam penjelasan method dibawah, maka response untuk setiap method adalah sebagai berikut: metadata": { "code":"200", message": “OK’ Atau jika terjadi kesalahan: 2016 Kemer ik Indones "description": "Hip Replacement\/Knee Replacement", "type": "Special Procedure” } 5. Grouping Stage 2: untuk Grouping Stage 2 ini, jika dari nasil Grouping Stage 1 terdapat pilinan special_cmg_option, maka silakan masukkan didalam field special_cmg. Jika pilihan bisa dari satu karena dari type yang berbeda maka silakan ditanbahkan tanda # diantara kode: { "metadata": "method" :" grouper" "stage": "2" } fdata": { "nomor_sep":"0301R00112 140006067", “special_cmg": “RRO4#YY01" ) } Response: { "metadata": { "code": 200, "message": "Ok" he “response”: { “cbg": { "code": "M-1-04-1", ‘description": "PROSEDUR PADA SENDI TUNGKAI BAWAH (RINGAN)", "tariff": "26197900" }, “special_cmg": [ { "code": "YY-01-11", "description": "BIP REPLACEMENT/KNEE REPLACEMENT", “tariff”: 13099000, "type": "Special Procedure" h { "code": "RR-O4-III", “description”: "BIP IMPLANT/KNEE IMPLANT", ariff": 26197900, "type": "Special Prosthesis" } 1 he “special _cmg option": [ "code": "RRO4", "description": "Hip Implant/Knee Implant", "type": "Special Prosthesis" hy { © 2016 Kementerian Kesehatan Repub Indonesia Halaman 8 dari 13, "code": "¥Y01", "description": "Hip Replacement/Knee Replacement", "type": "Special Procedure” d 6. Untuk finalisasi klaim: { "metadata": { “method” :"claim final” de "data": { “nomor_sep":"0301R00112 140006067" } } 7. Untuk mengedit ulang klaim: { ‘metadata": "method reedit_claim" he ‘data’: { "nomor_sep } '0301R00112140006067" } 8. Untuk mengirim klaim ke DC "2016-01-07", 2016-01-07", "sep": "0301R00112140006067", “tgl_pulang": "2016-01-07 15:00:00", “KEMENKES DC Status": "sent", “BPgS_Dc_Status": "unsent* t } © 2016 Kementerian Kesehatan Republik Indonesia Halaman 9 dari 13, 9. Untuk menarik data klaim dari E-Klaim { "metadata": { “method” :"pull_claim” de "data": { “start_dt":"2016-01-07", "stop dt": "2016-01-07", “jenis_rawat":"1" ‘response data’ *KODE_RS\tKELAS_RS\tKELAS_RAWAT\tKODE_TARIF\tPTD\tADMISSION_DATE\tDISCHAR GE_DATE\tBIRTH_DATE\tBIRTA WEIGHT\tSEX\tDISCHARGE_STATUS\tDIAGLIST\tPROCL, IST\tADL1\tADL2\ tIN_SP\tIN_SR\tIN_SI\tIN_SD\tINACBS\tSUBACUTE\tCHRONIC\ ts P\tSR\tSI\tSD\tDESKRIPSI_INACBG\tTARIF_INACBG\tTARIF_SUBACUTE\tTARIF_CHRO NIC\tDESKRIPSI_SP\tTARIF_SP\tDESKRIPSI_SR\tTARIF_SR\tDESKRIPS1_SI\tTARIF_ SI\tDESKRIPS1_SD\tTARIF_SD\tTOTAL_TARIF\tTARIF_RS\tLOS\tICU_INDIKATOR\tIC U_LOS\tVENT_HOUR\tNAMA_PASTEN\tMRN\tUMUR_TAHUN\CUMUR_HARI\tDPJP\tSEP\ tok ARTU\tPAYOR_ID\tCODER_ID\tVERSI_INACBG\tVERSI_GROUPER\tCl\tC2\tC3\tC4\n31 74282\tA\t3\tAP\tI\tO1\/07\/2015\t07\ /01\ /2016\t01\ /01\/ 1940\t0\t2\t2\ tF20.6 ;A41.3;A37;A37.17A39.47A39.5;A35\t— \t15\t12\tNone\tNone \tNone\tNone\tF-4-10-IT1\tS?—4-10-1\tcF-4-10- I\tllone\ tNone\ tNone\tNone\tSCHIZOFRENIA (BERAT) \t9973500\t5027400\t3384500\t-\tO\t-\t0\t-\t0\t- \t0\t18385400\t2500000\t191\t1\t2\t5\ tBUDI\ t123-45-67\t75\t27575\tDR. ERNA\t0301R001 12140006 067\t00006688 73981\t3 ; JKN\t 123456 789\t5 .0.0\té\ti\t 0\t23\t0al £0 lece6£508dec64491c908327839\n" y } 10. Untuk mengambil data detail per klaim { "metadata": { "method" :"get_claim data" ye “data: { "nomor_sep":"0301R00112140006067" } d © 2016 Kementerian Kesehatan Republik Indonesia Halaman 10 dari 13 "3174282", "kelas_rs": "A", “kelas-rawat": 5, “kode _tarif": "AB", “jenis_rawat": "1", tgl_masuk": "01\/07\/2015", “tgl_pulang": "O7\/01\/2016", “tgl_lahir": "01\/01\/1940", “berat_lahir": "0", “gendez": "2", “discharge_status": "2", ‘diagnosa": "F20.67A41.3;A37;A37.1;A39.4;A39.5;A35", “procedure : “adl_sub_acute": "15", “adl_chronic": "12", “in sp": "None", “in-sr": "None", “in_si": "None", “in_sd": "None", “inacbg": "F-4-10-I11", "subacute": "SF-4-10-1" "chronic": "CF-4-10-1", "sp": "None", "None", "None", "sd": "None", “deskripsi_inacbg": "SCHIZOFRENIA “tarif_inacbg": "9973500", “tarif_sub_acute": "5027400", “tarif chronic": "3384500", “deskripsi_sp “tarif_sp'? " “deskripsi ‘deskripsi_sd’ “earif cd’: "0", “tarif total": "18385400", tarifrs": "2500000" : "191", “ica indikator": 1, "ica_los*: "2", “ventilator_hour": "5", “nama pasien": "SATINI", “nonor_rm’: "123-45-67", “amar tahun": 75, “umar_hari": "27575", © 2016 Kementerian Kesehatan Republik Indonesia Halaman 11 dar 18

You might also like