feat: implement patient data integration with SIMRS API and add modular queue management components

This commit is contained in:
Fanrouver
2026-07-13 14:40:05 +07:00
parent fec58f14b5
commit d1b6629ac8
16 changed files with 868 additions and 82 deletions

No files matched your search

@@ -3,17 +3,31 @@
<v-card-text class="pa-4">
<div class="section-header mb-3">
<div class="section-label">SEDANG DIPROSES</div>
<v-btn
v-if="patient"
class="call-button text-white"
color="primary-500"
variant="flat"
size="small"
@click="$emit('call')"
>
<v-icon start size="18">mdi-bullhorn</v-icon>
Panggil
</v-btn>
<div class="d-flex align-center">
<v-btn
v-if="patient"
variant="outlined"
height="36"
rounded="lg"
class="data-pasien-btn bg-white mr-3 text-none font-weight-bold"
@click="showPatientDataDialog = true"
>
<v-icon start size="18">mdi-account-cog-outline</v-icon>
Data Pasien
</v-btn>
<v-btn
v-if="patient"
class="call-button text-white text-none font-weight-bold"
color="primary-500"
variant="flat"
height="36"
rounded="lg"
@click="$emit('call')"
>
<v-icon start size="18">mdi-microphone</v-icon>
Panggil
</v-btn>
</div>
</div>
<div v-if="patient" class="patient-details" :class="`patient-details-${theme}`">
@@ -138,11 +152,30 @@
</div>
</div>
</v-card-text>
<!-- Patient Data Dialog -->
<PatientDataDialog
v-if="patient"
v-model="showPatientDataDialog"
:patient="patient"
@linked="handlePatientLinked"
/>
</v-card>
</template>
<script setup>
import { computed } from 'vue';
import { computed, ref } from 'vue';
import PatientDataDialog from './PatientDataDialog.vue';
const showPatientDataDialog = ref(false);
/**
* Menangani event ketika antrean berhasil dihubungkan dengan data pasien di SIMRS
* Memunculkan notifikasi (snackbar) bahwa proses berhasil.
*/
const handlePatientLinked = () => {
emit('linked', 'Data pasien berhasil dihubungkan');
};
const props = defineProps({
patient: {
@@ -178,6 +211,11 @@ defineEmits(['action', 'change-klinik', 'process-next', 'call', 'open-klinik-rua
</script>
<style scoped lang="scss">
.data-pasien-btn {
color: var(--color-primary-500) !important;
border-color: var(--color-primary-500) !important;
}
.current-patient-card {
border-radius: 12px;
border: 1px solid var(--color-neutral-500);