# UML Sistem Manajemen Pasien
## Sequence Diagram
### Flow Login
```plantuml
actor users as u
participant "sistem manajemen pasien" as smp
database database as db
u->smp: request login
smp->db : get user by username
db -->smp : return
smp->smp: check if user exist
alt if user is not exist
smp-->u : return error (user not found)
else if user exist
smp->smp : validate password
alt if password not valid
smp-->u : return error (invalid password)
else if password valid
smp->smp : redirect to page dashboard
smp-->u : success login
end
end
```
### Flow of Adding Employee Data
:::info
Note : only superadmin
:::
```plantuml
actor superadmin as sa
participant "sistem manajemen pasien" as smp
database database as db
sa -> smp : request add employee
smp->smp : redirect to page form add employee
smp-->sa : return form add employee
sa->smp : input employee data
smp -> db : get user list
db-->smp : return value
smp->smp: check if user is exist
alt if user is exist
smp --> sa: return error (employee is already registered)
else if user not exist
smp->db: insert new employee data
smp-->sa: success insert new employee
end
```
### Flow of Adding Room Data
```plantuml
actor users as sa
participant "sistem manajemen pasien" as smp
database database as db
sa -> smp : request add room
smp->smp : redirect to page form add room
smp-->sa : return form add room
sa->smp : input new room data
smp -> db : get room list
db-->smp : return value
smp->smp: check if room is exist
alt if room is exist
smp --> sa: return error (room is already adding)
else if room not exist
smp->db: insert new room data
smp-->sa: success insert new room data
end
```
### Flow booking inpatient room
:::info
Note : this is the flow for patients ordering inpatient room that will be carried out by employee
:::
```plantuml
actor users as us
participant "sistem manajemen pasien" as smp
database database as db
us->smp: request insert inpatient data
smp->smp: redirect to page form inpatient
smp->db: get available inpatient room
db-->smp : return value
smp-->us: return form inpatient
us->smp: input inpatient data
smp->db: get room data by room_id
db-->smp : return value
smp->smp: check if room is available
alt if room is not available
smp-->us: return error (room is full)
else if room available
smp->db: insert inpatient data
smp-->us: success insert inpatient data
end
```
### Flow of Adding Doctor Data
```plantuml
actor users as us
participant "sistem manajemen pasien" as smp
database database as db
us -> smp : request add doctor
smp->smp : redirect to page form add doctor
smp-->us : return form add doctor
us->smp : input new doctor data
smp -> db : get doctor list
db-->smp : return value
smp->smp: check if doctor is exist
alt if doctor is exist
smp --> us: return error (doctor is already adding)
else if doctor not exist
smp->db: insert new doctor data
smp-->us: success insert new doctor data
end
```
### Flow Patient Check-up
:::info
Note : This is the flow of patient check-up data input that will be carried out by employees
:::
```plantuml
actor users as us
participant "sistem manajemen pasien" as smp
database database as db
us->smp: request insert patient check-up data
smp->smp: redirect to page form patient check-up
smp->db: get available doctor
db-->smp : return value
smp-->us: return form patient check-up
us->smp: input patient check-up data
smp->db: insert patient check-up data
smp-->us: success insert patient check-up data
```