Contoh memulai interoperabilitas sistem informasi klinik dengan platform SATUSEHAT menggunakan bahasa pemrograman Singkong


Untuk dapat membangun interoperabilitas dengan SATUSEHAT, partner perlu melakukan registrasi dan mengikuti langkah-langkah yang diperlukan.

Dalam menunggu proses verifikasi, kita dapat menggunakan environment sandbox. Contoh ini mengasumsikan kita telah memiliki akses ke API key production, sebagai berikut:


Access token

Dengan client key dan secret key tersebut, kita akan mendapatkan access token yang perlu dilewatkan pada setiap request. Kita siapkan fungsi get_token untuk mendapatkan token yang dimaksud:

load_module("json")
load_module("web")

var client_key = "CLIENT_KEY"
var secret_key = "SECRET_KEY"

var oauth_base_url = "https://api-satusehat.kemkes.go.id/oauth2/v1"
var base_url = "https://api-satusehat.kemkes.go.id/fhir-r4/v1"

var get_token = fn() {
    var c = "/accesstoken?grant_type=client_credentials"
    var u = oauth_base_url + c
    var d = query_string_hash({
        "client_id": client_key,
        "client_secret": secret_key
    })
    var h = {
        "Content-Type": "application/x-www-form-urlencoded"
    }
    var t = 60000
    var r = http_post(u, d, t, h)
    if (r == null) {
        return null
    }
    var j = json_parse(r[2])
    if (is(j, "HASH")) {
        return j["access_token"]
    }
    return null
}

Catatan:

Contoh pemanggilan fungsi adalah sebagai berikut:

var token = get_token()
println(token)


Pasien

Contoh berikutnya adalah pencarian pasien berdasarkan Nomor Induk Kependudukan (NIK). Apabila pencarian berhasil, dalam contoh ini, kita akan mendapatkan kode IHS dan nama pasien. IHS, sebagaimana dijelaskan dalam dokumentasi platform SATUSEHAT, merupakan singkatan dari Indonesia Health Services.

Berikut adalah contoh fungsi get_patient_ihs_name_by_id, yang membutuhkan argumen berupa STRING access token dan NIK. Variabel base_url merujuk pada definisi variabel sebelumnya. Modul json diasumsikan telah diload seperti contoh access token sebelumnya.

var get_patient_ihs_name_by_id = fn(t, n) {
    var c = "/Patient?identifier=https://fhir.kemkes.go.id/id/nik|" + string(n)
    var u = base_url + c
    var h = {
        "Authorization": "Bearer " + t
    }
    var t = 60000
    var r = http_get(u, t, h)
    if (r == null) {
        return null
    }
    var j = json_parse(r[2])
    if (is(j, "HASH")) {
        var pe = j["entry"][0]
        var pr = pe["resource"]
        var pi = pr["identifier"][0]
        var pn = pr["name"][0]
        if (pi["system"] == "https://fhir.kemkes.go.id/id/ihs-number") {
            return [pi["value"], pn["text"]]
        }
    }
    return []
}

Contoh pemanggilan fungsi adalah sebagai berikut (pastikanlah variabel token telah berisi token yang didapatkan dengan fungsi get_token):

var patient = get_patient_ihs_name_by_id(token, "nik pasien")
println(patient)

Sampai di sini dulu pembahasan kita. Bacalah dokumentasi SATUSEHAT untuk informasi selengkapnya.

Terima kasih telah membaca tutorial ini, dan sampai ketemu lagi di tutorial-tutorial berikut.

Terakhir diupdate pada 2024-07-31 (dibuat pada 2024-04-01).