Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify Apotek Implementation #73

Merged
merged 4 commits into from
Dec 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/red-forks-boil.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@ssecd/jkn": patch
---

Clarify Apotek service implementation
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
# JKN

JKN (BPJS) Bridging API untuk NodeJS

<img width="512" alt="Mudahnya JKN API dari SSEC" src="./assets/demo.gif">

## Fitur

- ✅ Aplicares
- ✅ VClaim
- ✅ Antrean
- ✅ Apotek
- ✅ i-Care
- ✅ Rekam Medis
- 🧩 PCare _([partial](https://github.com/ssecd/jkn/pull/26))_

## Instalasi

Instalasi paket dapat dilakukan dengan perintah berikut:
Expand All @@ -12,9 +20,13 @@ Instalasi paket dapat dilakukan dengan perintah berikut:
npm install @ssecd/jkn
```

Instalasi juga dapat dilakukan menggunakan `PNPM` atau `YARN`
Untuk dukungan _type_ pada API Rekam Medis, perlu menambahkan development dependensi `@types/fhir` dengan perintah:

```bash
npm install --save-dev @types/fhir
```

> ⚠ Untuk dukungan _type_ pada API Rekam Medis, perlu menambahkan development dependensi `@types/fhir` dengan perintah `npm install --save-dev @types/fhir` atau `pnpm i -D @types/fhir`.
Instalasi juga dapat dilakukan menggunakan `PNPM` atau `YARN`

## Penggunaan

Expand All @@ -25,14 +37,12 @@ Penggunaan paket ini sangatlah sederhana, cukup menginisialisasi global instansi

import JKN from '@ssecd/jkn';

const jkn = new JKN({
/* config */
});
const jkn = new JKN();

export default jkn;
```

Secara default konfigurasi seperti cons id atau secret akan dibaca melalui environment variable namun konfigurasi juga dapat diatur pada constructor class JKN seperti berikut:
Secara default konfigurasi seperti cons id atau cons secret akan dibaca melalui environment variable namun konfigurasi juga dapat diatur pada constructor class JKN seperti berikut:

```ts
// file: jkn.ts atau jkn.js
Expand Down Expand Up @@ -65,7 +75,7 @@ const jkn = new JKN(async () => {
export default jkn;
```

> ⚠ Perlu diperhatikan bahwa fungsi pada constructor parameter tersebut hanya akan dipanggil satu kali. Bila terjadi perubahan konfigurasi harap memanggil fungsi `invalidateConfig(): Promise<void>` pada instansi JKN untuk memperbaharui atau menerapkan perubahan konfigurasi.
Perlu diperhatikan bahwa fungsi pada constructor parameter tersebut hanya akan dipanggil satu kali. Bila terjadi perubahan konfigurasi harap memanggil fungsi `await invalidateConfig()` pada instansi JKN untuk memperbaharui atau menerapkan perubahan konfigurasi.

Kemudian cukup impor module `jkn` tersebut di mana pun saat akan menggunakannya:

Expand Down Expand Up @@ -243,16 +253,6 @@ interface Config {
}
````

## API Tersedia

- ✅ Aplicares
- ✅ VClaim
- ✅ Antrean
- ✅ Apotek _(experimental)_
- 🧩 PCare _([partial](https://github.com/ssecd/jkn/pull/26))_
- ✅ i-Care
- ✅ Rekam Medis

## Kontribusi

Kontribusi sangat dipersilakan dan dapat dilakukan dengan berbagai cara seperti melaporkan masalah, membuat permintaan atau menambahkan fitur melalui PR, atau sekedar memperbaiki kesalahan ketikan.
Expand Down
2 changes: 1 addition & 1 deletion src/apotek/monitoring.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class Monitoring extends ApotekBaseApi {
/** jenis obat (0 = Semua) (1 = Obat PRB) (2 = Obat Kronis Belum Stabil) (3 = Obat Kemoterapi) */
jenisObat: number;

/** status klaim (1 = Belum di-verifikasi) (2 = Sudah Verifikasi) */
/** status klaim (0 = Belum di-verifikasi) (1 = Sudah Verifikasi) */
status: number;
}) {
return this.send<{
Expand Down
2 changes: 2 additions & 0 deletions src/apotek/obat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export class Obat extends ApotekBaseApi {
* Simpan data obat non racikan
*/
async saveNonRacikan(data: {
/** nomor SEP Resep dari hasil simpan resep */
NOSJP: string;
NORESEP: string;
KDOBT: string;
Expand All @@ -26,6 +27,7 @@ export class Obat extends ApotekBaseApi {
* Simpan data obat racikan
*/
async saveRacikan(data: {
/** nomor SEP Resep dari hasil simpan resep */
NOSJP: string;
NORESEP: string;
JNSROBT: string;
Expand Down
6 changes: 4 additions & 2 deletions src/apotek/pelayanan-obat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ export class PelayananObat extends ApotekBaseApi {
return this.send<string>({
path: `/pelayanan/obat/hapus/`,
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
skipContentTypeHack: true,
data
});
}
Expand All @@ -24,7 +26,7 @@ export class PelayananObat extends ApotekBaseApi {
* Data daftar pelayanan obat
*/
async daftar(params: {
/** nomor SEP kunjungan */
/** nomor SEP Resep dari response simpan resep */
nomorSep: string;
}) {
return this.send<{
Expand All @@ -50,7 +52,7 @@ export class PelayananObat extends ApotekBaseApi {
};
};
}>({
path: `/obat/daftar/${params.nomorSep}`,
path: `/pelayanan/obat/daftar/${params.nomorSep}`,
method: 'GET'
});
}
Expand Down
12 changes: 11 additions & 1 deletion src/apotek/resep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ export class Resep extends ApotekBaseApi {

POLIRSP: string;

/** (1 = Obat PRB) (2 = Obat Kronis Belum Stabil) (3 = Obat Kemoterapi) */
/**
* (1 = Obat PRB) (2 = Obat Kronis Belum Stabil) (3 = Obat Kemoterapi)
*
* nomor Resep maksimal 5 digit, di-generate sesuai kebutuhan, dalam 1
* bulan klaim tidak boleh ada yang sama.
*/
KDJNSOBAT: string;

NORESEP: string;
Expand All @@ -35,6 +40,7 @@ export class Resep extends ApotekBaseApi {
noKartu: string;
nama: string;
faskesAsal: string;
/** Nomor SEP Resep */
noApotik: string;
noResep: string;
tglResep: string;
Expand All @@ -53,15 +59,19 @@ export class Resep extends ApotekBaseApi {
* Hapus data resep
*/
async hapus(data: {
/** nomor SEP Resep dari response simpan resep */
nosjp: string;

/** nomor SEP Kunjungan */
refasalsjp: string;

noresep: string;
}) {
return this.send<null>({
path: `/hapusresep`,
method: 'DELETE',
headers: { 'Content-Type': 'application/json' },
skipContentTypeHack: true,
data
});
}
Expand Down