###### tags: `Projects` `CMS` `KB`
# [CMS] Knowledge Base
###### *`CMS` -> `Cloud Medical System`*
:::warning
# TODO
- [ ] Patient page mobile app
- [ ] Dashboard update
:::
## Resources
- [Development](#Development)
- [[CMS] Entity Relationship Diagram](https://hackmd.io/@noobtech/B1G6MC40t)
- [[CMS] Activity Diagrams](/Bd42hQesSRCvfNI0noI7Zg)
### Repositories
- [API Repo](https://gitlab.com/Noob-Tech/cms/api-repo)
- [API Record](https://gitlab.com/Noob-Tech/cms/api-record)
- [Admin Dashboard](https://gitlab.com/Noob-Tech/cms/admin-dashboard)
- [Web App](https://gitlab.com/Noob-Tech/cms/web-app-v2)
#### Mockup
- [Dashboard](https://xd.adobe.com/view/b7408017-a32c-4028-a285-c933c7693d49-e213)
- [Mobile App](https://xd.adobe.com/view/ba44db66-4598-4a81-ac87-c0cd4601d274-ef17/)
## Overview
### Definisi / *Definition*
Tentang *CMS App* secara umum untuk menjawab seputar *Q&A* *5W+1H* berikut:
1. ***What*** - Apa itu Cloud Medical System (*CMS*)?
2. **Why** - Kenapa perlu menggunakan *CMS* ?
3. **Who** - Pengguna *CMS* siapa aja?
4. **How** - Bagaimana CMS bisa menjadi solusi atau sebagai *demand* pengguna?
### Objektif / *Objective*
1. Dokter dapat mengakses data rekam medis dengan cepat dan mudah
2. Dokter A dapat menangani pasien yang sama di rumah sakit yang berbeda
3. Pasien dapat mempunyai dan melihat data rekam medisnya sendiri dari setiap dokter yang menanganinya
### Entitas / *Entities*
1. Dokter
2. Pasien
3. *Medical Record*
### Glosarium / *Glossary*
Istilah & objek yg terlibat di *CMS*
| Istilah | Definisi |
|:-------------- |:------------------ |
| Patient | Pasien |
| Doctor | Dokter |
| Medical Record | Rekam medik pasien |
### Fitur utama / *Key Features*
Tentang fitur-fitur utama yang jadi keunggulan *CMS* bagi pengguna
1. *Medical Record* berbasis penyimpanan *Cloud Computing*
2. Dokter dapat membuat *medical record* pasien yang masih aktif dalam *treatment*
3. Dokter mempunyai daftar pasien & *medical record*-nya yang masih dalam *treatment* & pernah ditangani
>
### Fitur Rinci / *Detailed Features*
1. Doctor
1. Dashboard
- Melihat daftar pasien yang sedang aktif pengobatan
- Membuat *Medical Record* pasien yang sedang aktif pengobatan
- Menambahkan pasien yang sedang ditangani menggunakan fitur *add patient* agar dokter dapat membuat *medical record* pasien
- Melakukan *finish treatment* pasien yang telah selesai pengobatan
2. Patient
- Menyimpan daftar pasien yang sedang & pernah ditangani dokter. Pada menu ini juga dokter dapat melihat *medical record* pasiennya
3. Shared Record
- Tempat dokter dapat melihat *medical record* milik pasien yang ditulis oleh dokter lain
- Dokter hanya bisa melihat *medical record* yang dibagikan oleh pasiennya
4. Account
4.1 Profile
- Menampilkan informasi singkat dokter
- Mengganti alamat *email*
4.2 Change Password
- Mengganti *account* password
2. Patient
1. Dashboard
- Pasien dapat melihat seluruh *medical record* miliknya
- Pasien dapat membagikan *medical record* kepada dokter yang diizinkan & telah terdaftar sebagai dokter yang sedang menangani pasien ybs
2. Upload
- Pasien dapat mengunggah *medical record* yang berbentuk *file* lalu akan terdafar didalam Dashboard pasien
4. Account
3.1 Profile
- Menampilkan informasi singkat pasien
- Mengganti alamat *email*
3.2 Change Password
- Mengganti *account* password
#### Feature Matrix
| No | Fitur | Cek |
| --- | ----- | ----- |
| 1 | A | |
| 2 | B | **✓** |
| 3 | ... | ... |
## Technology Stack
### User Dashboard (Web)
| Tool | Name |
| --------------- | --------- |
| Language | Typescript |
| Architecture | MVVM |
| Platform | Web App |
| Library | Svelte |
| Design Approach | MaterialUI |
| API Integration | gRPC Web |
### Admin Dashboard (Web)
| Tool | Name |
| --------------- | --------- |
| Language | Typescript |
| Architecture | MVVM |
| Platform | Web App |
| Library | NextJS |
| Design Approach | MaterialUI |
| API Integration | gRPC Web |
### Backend
| Tool | Name |
|:------------- |:--------------------------- |
| Language | Golang, Python |
| Design Pattern | Repository Pattern |
| Architecture | Clean Arch |
| API Library | gRPC |
| Database | PostgreSQL |
| Storage | MinIO |
| Containerized | Docker |
| API Testing | Postman, Stoplight, Swagger |
### Development
#### Keys
1. Client credentials
```yaml=
> Admin App Client credential. ClientId = TD1SZQ8R ClientSecret = GMwqYsT8M0C10h416X4hQCYXfH3AfWOA
> User Web App Client credential. ClientId = Q8PS84VG ClientSecret = uL74DvNICcarVBwPnTEVVYJdTqDm5cXl
> User Mobile App Client credential. ClientId = APOEMM7E ClientSecret = mB18HOVTaSIbqeXIN0tiEE4DYzfRyiXD
> Internal Service Client credential. ClientId = O6GT47N3 ClientSecret = RnZ0UFjwxzRBQuHriFjAcLf2mOOUQHZi
```
2. User credentials
```yaml=
> Super Administrator credential. Username = superadmin@cms.co.id Password = jo4RTmskFfflDYoffxwomSzXo3S1w6O5
```
#### Postman
#### Importing
- Collection:
:::info
Use **Import > Link** to import collection
:::
- Environment:
:::info
Use **Import > Raw Text** to import environment and put environment below
:::