KPIS DSR API
์์ฝํ ๊ณต๊ธ๋ด์ญ ๊ฐ๊ณต ์์คํ v0.77.0 (Korean Pharmaceutical Information Service - Drug Supply Report API)
๊ฐ์
| ํญ๋ชฉ | ๋ด์ฉ |
|---|---|
| ๋ฒ์ | v0.77.0 |
| ์คํ | Vite 7 + React 19 SPA + Express 5 API + TypeScript 5.9 |
| UI | Tailwind CSS 4 + shadcn/ui (Radix UI) + Lucide Icons |
| DB | Supabase (PostgreSQL) + better-sqlite3 (์ธ์ฆ์ ์ ์ฅ) |
| ํธ์คํ | Vercel (ํ๋ก ํธ์๋ SPA) + Oracle Cloud PM2 (Express API) |
| ์ธ์ฆ | Google OAuth (Supabase Auth) + Basic Auth ๋์ฒด ๋ชจ๋ |
๋๋ฉ์ธ
- KPIS (์์ฝํ๊ด๋ฆฌ์ข ํฉ์ ๋ณด์ผํฐ): ์์ฝํ ์ ํต ๋ณด๊ณ ์๋ฌด๋ฅผ ๊ด๋ฆฌํ๋ ์ ๋ถ ๊ธฐ๊ด
- DSR (Drug Supply Report): ์์ฝํ ๊ณต๊ธ๋ด์ญ ๋ณด๊ณ ์
- ๊ฐ์ง: ๊ณต๊ธ์ ๋ณด๊ณ ๋ฌธ์ (21์ด) โ ๊ณต๊ธ์ฌ์ ์, ์ ํ๋ช , ํ์ค์ฝ๋, ์๋/๋จ๊ฐ/๊ธ์ก, ๊ณต๊ธ๊ตฌ๋ถ
- ์์ง: ์ผ๋ จ๋ฒํธ ๋ฌธ์ (3์ด) โ ๊ฐ์ง ์ฐ๋ฒ์ ๋งค์นญ๋๋ ์์ฝํ ์ผ๋ จ๋ฒํธ/RFID
์ฃผ์ ๊ธฐ๋ฅ
- ์์ ์ ๋ก๋ (๊ฐ์ง/์์ง) ๋ฐ ์๋ ๋ ์ง ์ถ์ถ
- 5๋จ๊ณ ์๋ ์ฝ๋๋งคํ (์ฝ๋๋งคํ โ ๋ง์คํฐ๋งค์นญ โ ๋จ๊ฐ์์ โ ๊ท๊ฒฉ๋ณด์ โ ๊ท์น์์ง)
- 3๋จ๊ณ ์ ํจ์ฑ ๊ฒ์ฆ (ํ์๊ฐ โ ํ์ โ ๋น์ฆ๋์ค)
- KPIS API ์๋ ์ ์ถ (MA111 ๋ฑ๋ก โ MA112 ๊ฒฐ๊ณผํ์ธ โ MA113 ๋ฐ์ก์ ์ฒญ โ MA114 ์ํ์กฐํ)
- ์์ ๋ด๋ณด๋ด๊ธฐ (์๋ ๋ณด๊ณ ์ฉ, ํด๋ ์ง์ ์ ์ฅ)
- ๋ฐ์ก ๊ด๋ฆฌ ๋ฐ ์ค๋ฅ ์๋ํด๊ฒฐ
- ๋์๋ณด๋ (์๋ณ ๋ณด๊ณ ํํฉ, KPI ์นด๋, ์ฐจํธ)
์ธ๋ถ ์ฐ๋
KPIS OpenAPI
KPIS OpenAPI๋ ์ธ์ฆ ๋ฐฉ์์ ๋ฐ๋ผ ๋ ๊ฐ์ง๋ก ๋๋ฉ๋๋ค.
| ๊ตฌ๋ถ | API ID | ์ธ์ฆ ๋ฐฉ์ | ์ฉ๋ |
|---|---|---|---|
| ์กฐํ API | MA101~MA110 | API KEY (aplHbin + apiKey) | ํ์ค์ฝ๋ ์กฐํ, ๊ฑฐ๋์ฒ ํ์ธ, ๋ณด๊ณ ๊ธฐ๊ฐ ์กฐํ |
| ๋ฑ๋ก API | MA111~MA114 | JWT (client_id/client_secret) + ๊ณต๋์ธ์ฆ์ | ๊ณต๊ธ๋ด์ญ ๋ฑ๋ก, ๊ฒฐ๊ณผํ์ธ, ๋ฐ์ก์ ์ฒญ, ์ํ์กฐํ |
- ์กฐํ API๋ ์ฌ์ ์๋ฑ๋ก๋ฒํธ์ API KEY๋ง์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค.
- ๋ฑ๋ก API๋ ์๋ฒ์์ JWT ํ ํฐ์ ๋ฐ๊ธ๋ฐ๊ณ , ๊ณต๋์ธ์ฆ์๋ก ์ ์์๋ช ํ์ฌ ํธ์ถํฉ๋๋ค.
์ธ์ฆ ์ฒด๊ณ
| ์ธ์ฆ | ์ค๋ช |
|---|---|
| Google OAuth | Supabase Auth ๊ธฐ๋ฐ ์ฌ์ฉ์ ์ธ์ฆ (๊ธฐ๋ณธ ๋ชจ๋) |
| Basic Auth | ์ธ์ฆ ์๋ฒ ์์ด ์ด์ํ ๋์ ๋์ฒด ๋ชจ๋ |
| ๊ณต๋์ธ์ฆ์ | KPIS API ๋ฑ๋ก ์ ํ์ํ ์ ์์๋ช ์ฉ ์ธ์ฆ์ (DER ํฌ๋งท, AES-256 ์ํธํ ๋ณด๊ด) |
์ด์ค ๋ฐฐํฌ ๊ตฌ์กฐ
| ๊ณ์ธต | ํ๋ซํผ | ์ญํ |
|---|---|---|
| ํ๋ก ํธ์๋ | Vercel | React SPA ์ ์ ํธ์คํ |
| API ์๋ฒ | Oracle Cloud PM2 | Express API, KPIS ํ๋ก์, ์ธ์ฆ์ ๊ด๋ฆฌ |
์ฃผ์: KPIS API๋ IP ํ์ดํธ๋ฆฌ์คํธ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ทผ์ ์ ํํฉ๋๋ค. API ์๋ฒ๊ฐ Oracle Cloud์ ๊ณ ์ IP๋ก ๋ฐฐํฌ๋์ด์ผ KPIS ์๋ฒ์ ํต์ ํ ์ ์์ต๋๋ค. Vercel์์ ์ง์ KPIS API๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๊ธฐํ ์ธ๋ถ ์ฐ๋
| ์๋น์ค | ์ฉ๋ |
|---|---|
| ๊ณต๊ณต๋ฐ์ดํฐํฌํธ API | ๊ณตํด์ผ ๋ฐ์ดํฐ ์๋ ์์ง (์์ ์ผ ๊ณ์ฐ์ ํ์ฉ) |
| Supabase | PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฌ์ฉ์ ์ธ์ฆ, ์คํ ๋ฆฌ์ง |
๋ฐ์ดํฐ ํ๋ฆ
์์คํ ์ ์ ์ฒด ๋ฐ์ดํฐ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Excel(๊ฐ์ง+์์ง) โ [์
๋ก๋/ํ์ฑ] โ ๋ฉ๋ชจ๋ฆฌ + Supabase DB ์ ์ฅ
โ
[์๋์ฒ๋ฆฌ] ์ฝ๋๋งคํ โ ๋ง์คํฐ๋งค์นญ โ ๋จ๊ฐ์์ โ ๊ท๊ฒฉ๋ณด์ โ ๊ท์น์์ง
โ
[๊ฒ์ฆ] ํ์๊ฐ โ ํ์ โ ๋น์ฆ๋์ค ๊ท์น
โ
[์๋์์ ] ์ฌ์ฉ์๊ฐ ์ค๋ฅ/๊ฒฝ๊ณ ํ์ ์ง์ ํธ์ง
โ
โโ [๋ด๋ณด๋ด๊ธฐ/์๋๋ณด๊ณ ] ์์
๋ค์ด๋ก๋ โ KPIS ํฌํธ ์ง์ ์
๋ก๋
โโ [API ์ ์ถ/์๋๋ณด๊ณ ] MA111 ๋ฑ๋ก โ MA112 ๊ฒฐ๊ณผํ์ธ โ ๋ฐ์ก ์ MA113 ์ฌ์ ์ฒญ- ์ ๋ก๋๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ฑ๋ ํ Supabase DB์ ์ ์ฅ๋ฉ๋๋ค.
- ์ฌ์ฉ์์ ํธ์ง์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฆ์ ๋ฐ์๋๊ณ ,
flushCurrentDate()ํธ์ถ ์ DB์ ๋๊ธฐํ๋ฉ๋๋ค. - ๋ด๋ณด๋ด๊ธฐ๋ ์์ ์ฝ๊ธฐ ์์ ์ผ๋ก DB์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
- API ์ ์ถ ์ ์ ์๋ฒํธ๊ฐ ๋ฐ๊ธ๋์ด ๊ฐ ํ์ ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
๋งค๋ด์ผ
- ์ฌ์ฉ์ ๋งค๋ด์ผ โ ์์ฝํ ๋๋งค์ ๋ด๋น์์ฉ
- ์ด์์ ๋งค๋ด์ผ โ API ์๋ฒ/์์คํ ๊ด๋ฆฌ์์ฉ
Last updated on