integrasi identitas & pengukuran

This commit is contained in:
Ryan Ariana 2024-05-15 19:46:23 +07:00
parent 3d63594d4f
commit 58fa93d99c
5 changed files with 149 additions and 26 deletions

View File

@ -94,7 +94,7 @@ export class IdentitasPage implements OnInit {
});
toast.present();
}
simpanData() {
async simpanData() {
if (this.isEdit && this.idIdentitas) {
this.identitasService.updateIdentitas(this.idIdentitas, this.userData).subscribe(
response => this.handleResponse(response),
@ -102,7 +102,14 @@ export class IdentitasPage implements OnInit {
);
} else {
this.identitasService.simpanIdentitas(this.userData).subscribe(
response => this.handleResponse(response),
async (response) => {
if (!this.isEdit) {
await this.storage.set('id_identitas', response.id || response.data.id);
this.idIdentitas = response.id || response.data.id; // Update local idIdentitas
this.isEdit = true;
}
this.handleResponse(response);
},
error => this.handleError(error)
);
}

View File

@ -16,80 +16,104 @@
<ion-list>
<ion-item>
<ion-label position="stacked">Berat Badan (Kg)</ion-label>
<ion-input type="number" placeholder="Masukkan Berat Badan"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.berat_badan" placeholder="Masukkan Berat Badan"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Tinggi Badan (Cm)</ion-label>
<ion-input type="number" placeholder="Masukkan Tinggi Badan"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.tinggi_badan" placeholder="Masukkan Tinggi Badan"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">IMT (Kg/m²)</ion-label>
<ion-input type="number" placeholder="Masukkan IMT"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.imt" placeholder="Masukkan IMT"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Lingkar Perut (Cm)</ion-label>
<ion-input type="number" placeholder="Masukkan Lingkar Perut"></ion-input>
<ion-label position="stacked">Tekanan Darah Diastole(mmHg)</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.tekanan_darah_diastole" placeholder="Masukkan Tekanan Darah Diastole"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Tekanan Darah (mmHg)</ion-label>
<ion-input type="text" placeholder="Masukkan Tekanan Darah"></ion-input>
<ion-label position="stacked">Tekanan Darah Sistole(mmHg)</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.tekanan_darah_sistole" placeholder="Masukkan Tekanan Darah Sistole"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Frekuensi Nafas (Kali/menit)</ion-label>
<ion-input type="number" placeholder="Masukkan Frekuensi Nafas"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.frekuensi_nafas" placeholder="Masukkan Frekuensi Nafas"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Nadi (Kali/menit)</ion-label>
<ion-input type="number" placeholder="Masukkan Nadi"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.nadi" placeholder="Masukkan Nadi"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar Gula Darah (mg/dL)</ion-label>
<ion-input type="number" placeholder="Masukkan Kadar Gula Darah"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.kadar_gula_darah" placeholder="Masukkan Kadar Gula Darah"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar Kolesterol (mg/dL)</ion-label>
<ion-input type="number" placeholder="Masukkan Kadar Kolesterol"></ion-input>
<ion-label position="stacked">Kadar Kolesterol HDL(mg/dL)</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.kolesterol_hdl" placeholder="Masukkan Kadar Kolesterol"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar Kolesterol LDL(mg/dL)</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.kolesterol_ldl" placeholder="Masukkan Kadar Kolesterol LDL"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar Kolesterol Total(mg/dL)</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.kolesterol_total" placeholder="Masukkan Kadar Kolesterol Total"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar HB (gr/dL)</ion-label>
<ion-input type="number" placeholder="Masukkan Kadar HB"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.kadar_hb" placeholder="Masukkan Kadar HB"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Kadar Asam Urat (mg/dL)</ion-label>
<ion-input type="number" placeholder="Masukkan Kadar Asam Urat"></ion-input>
<ion-input type="number" [(ngModel)]="payloadData.kadar_asam_urat" placeholder="Masukkan Kadar Asam Urat"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Golongan Darah</ion-label>
<ion-input type="text" placeholder="Masukkan Golongan Darah"></ion-input>
<ion-input type="text" [(ngModel)]="payloadData.golongan_darah" placeholder="Masukkan Golongan Darah"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Px. HbA1C (%)</ion-label>
<ion-input type="number" placeholder="Masukkan Px. HbA1C"></ion-input>
<ion-label position="stacked">Trigliserida</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.trigliserida" placeholder="Masukkan Trigliserida"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Lingkar Perut</ion-label>
<ion-input type="number" [(ngModel)]="payloadData.lingkar_perut" placeholder="Masukkan Lingkar Perut"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Waktu Pengambilan Gula Darah</ion-label>
<ion-select [(ngModel)]="payloadData.waktu_pengambilan_gula_darah" placeholder="Pilih waktu">
<ion-select-option value="puasa">Puasa minimal 8 jam</ion-select-option>
<ion-select-option value="makan">Satu sampai 2 jam setelah makan</ion-select-option>
<ion-select-option value="gds">Gula Darah Sewaktu/GDS</ion-select-option>
<ion-select-option value="tidur">Sebelum berangkat tidur malam</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label position="stacked">Kondisi Umum</ion-label>
<ion-input type="text" placeholder="Masukkan Kondisi Umum"></ion-input>
<ion-input type="text" [(ngModel)]="payloadData.kondisi_umum" placeholder="Masukkan Kondisi Umum"></ion-input>
</ion-item>
<ion-item>
<ion-label position="stacked">Keluhan/Perasaan</ion-label>
<ion-textarea placeholder="Tuliskan Keluhan atau Perasaan"></ion-textarea>
<ion-textarea [(ngModel)]="payloadData.keluhan_perasaan" placeholder="Tuliskan Keluhan atau Perasaan"></ion-textarea>
</ion-item>
<ion-button expand="block" color="primary">Simpan</ion-button>
<ion-button expand="block" color="primary" (click)="simpanData()">Simpan</ion-button>
</ion-list>
</ion-content>

View File

@ -1,5 +1,8 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Storage } from '@ionic/storage-angular';
import { ToastController } from '@ionic/angular';
import { PengukuranService } from '../services/pengukuran.service';
@Component({
selector: 'app-pemeriksaan',
@ -7,13 +10,68 @@ import { Router } from '@angular/router';
styleUrls: ['./pemeriksaan.page.scss'],
})
export class PemeriksaanPage implements OnInit {
public payloadData = {
identitas_id: 0,
berat_badan: '',
frekuensi_nafas: '',
golongan_darah: "",
imt: '',
kadar_asam_urat: '',
kadar_gula_darah: '',
kadar_hb: '',
keluhan_perasaan: '',
kolesterol_hdl: '',
kolesterol_ldl: '',
kolesterol_total: '',
kondisi_umum: '',
lingkar_perut: '',
nadi: '',
tekanan_darah_diastole: 0,
tekanan_darah_sistole: 0,
tinggi_badan: '',
trigliserida: '',
waktu_pengambilan_gula_darah: ''
};
private idIdentitas: number | null = null;
constructor(private router: Router) { }
constructor(
private storage: Storage,
private toastController: ToastController,
private pengukuranService: PengukuranService
) {}
ngOnInit() {
async ngOnInit() {
await this.storage.create();
this.idIdentitas = await this.storage.get('id_identitas');
}
async simpanData() {
if (!this.payloadData.identitas_id && this.idIdentitas) {
this.payloadData.identitas_id = this.idIdentitas;
}
console.log(this.payloadData);
this.pengukuranService.simpanPengukuran(this.payloadData).subscribe(
async (response) => {
this.handleResponse(response);
},
error => this.handleError(error)
);
}
handleResponse(response: any) {
this.showToast('Data successfully saved!', 'top', 'success');
}
goToNewPage() {
this.router.navigate(['/indikator']);
handleError(error: { message: any; }) {
this.showToast(`Error saving data: ${error.message}`, 'top', 'danger');
}
async showToast(message: string, position: 'top' | 'middle' | 'bottom', color: string) {
const toast = await this.toastController.create({
message: message,
duration: 2000,
position: position,
color: color
});
toast.present();
}
}

View File

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { PengukuranService } from './pengukuran.service';
describe('PengukuranService', () => {
let service: PengukuranService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(PengukuranService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@ -0,0 +1,18 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class PengukuranService {
private apiUrl = `${environment.apiUrl}/pengukuran`;
constructor(private http: HttpClient) { }
simpanPengukuran(data: any): Observable<any> {
return this.http.post(this.apiUrl, data);
}
}