From edc87cb3bbeaffc49d8bdb77a888e1182f162d84 Mon Sep 17 00:00:00 2001 From: yarwest Date: Fri, 9 Jun 2017 15:02:12 +0200 Subject: [PATCH 1/2] Created patient model. --- src/models/patient.model.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/models/patient.model.ts diff --git a/src/models/patient.model.ts b/src/models/patient.model.ts new file mode 100644 index 0000000..0d4190c --- /dev/null +++ b/src/models/patient.model.ts @@ -0,0 +1,10 @@ +export class PatientModel { + public id?: number; + public name: string; + public date_of_birth: string; + + constructor(){ + this.name = "Annie"; + this.date_of_birth = "2017/12/12"; + } +} From 3077784cbca13c6b1720d12b5317faeee7147e8e Mon Sep 17 00:00:00 2001 From: yarwest Date: Fri, 9 Jun 2017 21:18:40 +0200 Subject: [PATCH 2/2] Hallo Hallo, super veel shit, vooral over patienten. Toevoegen, weergeven, editen, verwijderen. Overal zijn er paginas voor, model aanwezig, service class, meer events voor de superobserver structuur. Alles er op en er aan. Geniet er van. --- src/app/app.component.ts | 1 + src/app/app.module.ts | 2 + src/app/config.ts | 3 +- .../patient-add-page/patient-add-page.html | 41 +++++++ .../patient-add-page.module.ts | 18 +++ .../patient-add-page/patient-add-page.scss | 3 + .../patient-add-page/patient-add-page.ts | 65 +++++++++++ .../patient-edit-page/patient-edit-page.html | 42 +++++++ .../patient-edit-page.module.ts | 18 +++ .../patient-edit-page/patient-edit-page.scss | 3 + .../patient-edit-page/patient-edit-page.ts | 52 +++++++++ .../patient-info-page/patient-info-page.html | 42 +++++++ .../patient-info-page.module.ts | 18 +++ .../patient-info-page/patient-info-page.ts | 55 +++++++++ src/pages/patients-page/patients-page.html | 30 +++++ .../patients-page/patients-page.module.ts | 18 +++ src/pages/patients-page/patients-page.scss | 3 + src/pages/patients-page/patients-page.ts | 57 ++++++++++ src/providers/autoriteit/autoriteit.ts | 32 +++++- src/providers/beds-service.ts | 4 +- src/providers/mockstore/mockstore.ts | 28 ++++- src/providers/patients-service.ts | 106 ++++++++++++++++++ 22 files changed, 628 insertions(+), 13 deletions(-) create mode 100644 src/pages/patient-add-page/patient-add-page.html create mode 100644 src/pages/patient-add-page/patient-add-page.module.ts create mode 100644 src/pages/patient-add-page/patient-add-page.scss create mode 100644 src/pages/patient-add-page/patient-add-page.ts create mode 100644 src/pages/patient-edit-page/patient-edit-page.html create mode 100644 src/pages/patient-edit-page/patient-edit-page.module.ts create mode 100644 src/pages/patient-edit-page/patient-edit-page.scss create mode 100644 src/pages/patient-edit-page/patient-edit-page.ts create mode 100644 src/pages/patient-info-page/patient-info-page.html create mode 100644 src/pages/patient-info-page/patient-info-page.module.ts create mode 100644 src/pages/patient-info-page/patient-info-page.ts create mode 100644 src/pages/patients-page/patients-page.html create mode 100644 src/pages/patients-page/patients-page.module.ts create mode 100644 src/pages/patients-page/patients-page.scss create mode 100644 src/pages/patients-page/patients-page.ts create mode 100644 src/providers/patients-service.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 70ed351..f91d91b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -30,6 +30,7 @@ export class MyApp { this.pages = [ {title: 'page.profile', component: 'ProfilePage'}, {title: 'page.regiobed.title', component: 'RegiobedPage'}, + {title: 'Patients', component: 'PatientsPage'}, {title: 'page.beds.list', component: 'BedsPage'}, {title: 'page.logout', component: 'LoginPage', method: 'logout'} ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d51a2ae..3cefe96 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -8,6 +8,7 @@ import {AuthHttp, AuthConfig} from 'angular2-jwt'; import {Storage} from '@ionic/storage'; import {AuthService} from '../providers/auth-service'; import {BedsService} from '../providers/beds-service'; +import {PatientsService} from '../providers/patients-service'; import {TranslateModule, TranslateLoader} from '@ngx-translate/core'; import {TranslateHttpLoader} from '@ngx-translate/http-loader'; @@ -64,6 +65,7 @@ export function createTranslateLoader(http: Http) { }, AuthService, BedsService, + PatientsService, DistoreProvider, CryptoProvider, MockstoreProvider, diff --git a/src/app/config.ts b/src/app/config.ts index 2c09cf2..039bfbc 100644 --- a/src/app/config.ts +++ b/src/app/config.ts @@ -5,5 +5,6 @@ export let cfg = { register: '/auth/signup', login: '/auth/login' }, - beds: '/beds' + beds: '/beds', + patients: '/patients' }; diff --git a/src/pages/patient-add-page/patient-add-page.html b/src/pages/patient-add-page/patient-add-page.html new file mode 100644 index 0000000..1173891 --- /dev/null +++ b/src/pages/patient-add-page/patient-add-page.html @@ -0,0 +1,41 @@ + + + + + {{ 'page.patient.add' | translate }} + + + + + + + + + + +
+ + {{ 'label.name' | translate }}: + + + + + Date of Birth: + + + + + +
+ +
+ +
+ + + +
+ +
diff --git a/src/pages/patient-add-page/patient-add-page.module.ts b/src/pages/patient-add-page/patient-add-page.module.ts new file mode 100644 index 0000000..651a00f --- /dev/null +++ b/src/pages/patient-add-page/patient-add-page.module.ts @@ -0,0 +1,18 @@ +import {NgModule} from '@angular/core'; +import {IonicPageModule} from 'ionic-angular'; +import {PatientAddPage} from './patient-add-page'; +import {TranslateModule} from '@ngx-translate/core'; + +@NgModule({ + declarations: [ + PatientAddPage, + ], + imports: [ + IonicPageModule.forChild(PatientAddPage), + TranslateModule.forChild() + ], + exports: [ + PatientAddPage + ] +}) +export class PatientAddPageModule {} diff --git a/src/pages/patient-add-page/patient-add-page.scss b/src/pages/patient-add-page/patient-add-page.scss new file mode 100644 index 0000000..f495196 --- /dev/null +++ b/src/pages/patient-add-page/patient-add-page.scss @@ -0,0 +1,3 @@ +page-patient-add-page { + +} diff --git a/src/pages/patient-add-page/patient-add-page.ts b/src/pages/patient-add-page/patient-add-page.ts new file mode 100644 index 0000000..c3a9823 --- /dev/null +++ b/src/pages/patient-add-page/patient-add-page.ts @@ -0,0 +1,65 @@ +import {Component} from '@angular/core'; +import {IonicPage, NavController, NavParams, MenuController} from 'ionic-angular'; +import {ToastController} from 'ionic-angular'; +import {ProtectedPage} from '../protected-page/protected-page'; +import {Storage} from '@ionic/storage'; +import {Validators, FormBuilder, FormGroup} from '@angular/forms'; +import {PatientsService} from '../../providers/patients-service'; +import {PatientModel} from '../../models/patient.model'; +import {AutoriteitProvider} from '../../providers/autoriteit/autoriteit' + + + +@IonicPage() +@Component({ + selector: 'page-patient-add-page', + templateUrl: 'patient-add-page.html', +}) +export class PatientAddPage extends ProtectedPage { + + private patientData: FormGroup; + + constructor( + public navCtrl: NavController, + public navParams: NavParams, + public toastCtrl: ToastController, + public menuCtrl: MenuController, + public storage: Storage, + public formBuilder: FormBuilder, + public au: AutoriteitProvider, + public patientsService: PatientsService) { + + super(navCtrl, navParams, storage); + + this.patientData = this.formBuilder.group({ + id: [Math.floor(Math.random() * 10)], + name: ['', Validators.required], + date_of_birth: ['', Validators.required], + }); + } + + showToastWithCloseButton() { + const toast = this.toastCtrl.create({ + message: 'Patient was succesfully added!', + showCloseButton: true, + duration: 2000, + cssClass: 'succes', + closeButtonText: 'Ok' + }); + toast.present(); + } + + process() { + let patient: PatientModel; + patient = new PatientModel(); + let newpatient = Object.assign(patient, this.patientData.value); + this.patientsService.add(newpatient); + this.navCtrl.pop(); + this.showToastWithCloseButton(); + /* this.PatientsService.add(this.patientData.value) + .then(() => this.navCtrl.push('patientsPage')) + .catch((e) => console.log("add patient error", e)); */ + } + + +} diff --git a/src/pages/patient-edit-page/patient-edit-page.html b/src/pages/patient-edit-page/patient-edit-page.html new file mode 100644 index 0000000..6d39b4c --- /dev/null +++ b/src/pages/patient-edit-page/patient-edit-page.html @@ -0,0 +1,42 @@ + + + + + Edit Patient + + + + + + + + + + +
+ + {{ 'label.name' | translate }}: + + + + + Date of Birth: + + + + + + +
+ +
+ +
+ + + +
+ +
diff --git a/src/pages/patient-edit-page/patient-edit-page.module.ts b/src/pages/patient-edit-page/patient-edit-page.module.ts new file mode 100644 index 0000000..51ed017 --- /dev/null +++ b/src/pages/patient-edit-page/patient-edit-page.module.ts @@ -0,0 +1,18 @@ +import {NgModule} from '@angular/core'; +import {IonicPageModule} from 'ionic-angular'; +import {PatientEditPage} from './patient-edit-page'; +import {TranslateModule} from '@ngx-translate/core'; + +@NgModule({ + declarations: [ + PatientEditPage, + ], + imports: [ + IonicPageModule.forChild(PatientEditPage), + TranslateModule.forChild() + ], + exports: [ + PatientEditPage + ] +}) +export class PatientEditPageModule {} diff --git a/src/pages/patient-edit-page/patient-edit-page.scss b/src/pages/patient-edit-page/patient-edit-page.scss new file mode 100644 index 0000000..f495196 --- /dev/null +++ b/src/pages/patient-edit-page/patient-edit-page.scss @@ -0,0 +1,3 @@ +page-patient-add-page { + +} diff --git a/src/pages/patient-edit-page/patient-edit-page.ts b/src/pages/patient-edit-page/patient-edit-page.ts new file mode 100644 index 0000000..a99aa6f --- /dev/null +++ b/src/pages/patient-edit-page/patient-edit-page.ts @@ -0,0 +1,52 @@ +import {Component} from '@angular/core'; +import {IonicPage, NavController, NavParams, MenuController} from 'ionic-angular'; +import {ProtectedPage} from '../protected-page/protected-page'; +import {Storage} from '@ionic/storage'; +import {Validators, FormBuilder, FormGroup} from '@angular/forms'; +import {PatientsService} from '../../providers/patients-service'; +import {PatientModel} from '../../models/patient.model'; +import {AutoriteitProvider} from '../../providers/autoriteit/autoriteit' + +@IonicPage() +@Component({ + selector: 'page-patient-edit-page', + templateUrl: 'patient-edit-page.html', +}) +export class PatientEditPage extends ProtectedPage { + + private patientData: FormGroup; + private patient: PatientModel; + + constructor( + public navCtrl: NavController, + public navParams: NavParams, + public menuCtrl: MenuController, + public storage: Storage, + public au: AutoriteitProvider, + public formBuilder: FormBuilder, + public patientsService: PatientsService) { + + super(navCtrl, navParams, storage); + + this.patient = navParams.get('patient'); + + + this.patientData = this.formBuilder.group({ + name: [this.patient.name, Validators.required], + date_of_birth: [this.patient.date_of_birth, Validators.required] + }); + } + + process() { + + let updatedPatient = Object.assign(this.patient, this.patientData.value); + + this.patientsService.update(updatedPatient); + this.navCtrl.pop(); + /* this.bedsService.update(updatedBed) + .then(() => this.navCtrl.pop()) + .catch((e) => console.log("add bed error", e)); */ + } + + +} diff --git a/src/pages/patient-info-page/patient-info-page.html b/src/pages/patient-info-page/patient-info-page.html new file mode 100644 index 0000000..96cae88 --- /dev/null +++ b/src/pages/patient-info-page/patient-info-page.html @@ -0,0 +1,42 @@ + + + + + Patient + + + + + + + + + +

{{ patient.name }}

+ {{ patient.date_of_birth }} +
+ + + + + + + + + + + + + + +
+ +
diff --git a/src/pages/patient-info-page/patient-info-page.module.ts b/src/pages/patient-info-page/patient-info-page.module.ts new file mode 100644 index 0000000..f632f57 --- /dev/null +++ b/src/pages/patient-info-page/patient-info-page.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { IonicPageModule } from 'ionic-angular'; +import { PatientInfoPage } from './patient-info-page'; +import {TranslateModule} from '@ngx-translate/core'; + +@NgModule({ + declarations: [ + PatientInfoPage, + ], + imports: [ + IonicPageModule.forChild(PatientInfoPage), + TranslateModule.forChild() + ], + exports: [ + PatientInfoPage + ] +}) +export class PatientInfoPageModule {} diff --git a/src/pages/patient-info-page/patient-info-page.ts b/src/pages/patient-info-page/patient-info-page.ts new file mode 100644 index 0000000..c0938bd --- /dev/null +++ b/src/pages/patient-info-page/patient-info-page.ts @@ -0,0 +1,55 @@ +import {Component} from '@angular/core'; +import {IonicPage, NavController, NavParams, MenuController} from 'ionic-angular'; +import {ToastController} from 'ionic-angular'; +import {ProtectedPage} from '../protected-page/protected-page'; +import {Storage} from '@ionic/storage'; +import {PatientsService} from '../../providers/patients-service'; +import {PatientModel} from '../../models/patient.model'; +import {AutoriteitProvider} from '../../providers/autoriteit/autoriteit' + +@IonicPage() +@Component({ + selector: 'page-patient-info-page', + templateUrl: 'patient-info-page.html', +}) +export class PatientInfoPage extends ProtectedPage { + + private patient: PatientModel; + + constructor( + public navCtrl: NavController, + public navParams: NavParams, + public toastCtrl: ToastController, + public menuCtrl: MenuController, + public storage: Storage, + public au: AutoriteitProvider, + public patientsService: PatientsService) { + + super(navCtrl, navParams, storage); + + this.patient = navParams.get('patient'); + + } + + showToastWithCloseButton() { + const toast = this.toastCtrl.create({ + message: 'Patient was succesfully removed!', + showCloseButton: true, + duration: 2000, + cssClass: 'succes', + closeButtonText: 'Ok' + }); + toast.present(); + } + + editPatient(patient: PatientModel) { + this.navCtrl.pop(); + this.navCtrl.push('PatientEditPage', {patient: patient}); + } + + deletePatient(patient: PatientModel) { + this.patientsService.remove(patient); + this.showToastWithCloseButton(); + this.navCtrl.pop(); +} +} diff --git a/src/pages/patients-page/patients-page.html b/src/pages/patients-page/patients-page.html new file mode 100644 index 0000000..a8a5dee --- /dev/null +++ b/src/pages/patients-page/patients-page.html @@ -0,0 +1,30 @@ + + + + + + Patients + + + + + + + + + + {{patient.name}} +
+ {{patient.date_of_birth}} +
+ +
+
+ + + +
diff --git a/src/pages/patients-page/patients-page.module.ts b/src/pages/patients-page/patients-page.module.ts new file mode 100644 index 0000000..a7dcf18 --- /dev/null +++ b/src/pages/patients-page/patients-page.module.ts @@ -0,0 +1,18 @@ +import {NgModule} from '@angular/core'; +import {IonicPageModule} from 'ionic-angular'; +import {PatientsPage} from './patients-page'; +import {TranslateModule} from '@ngx-translate/core'; + +@NgModule({ + declarations: [ + PatientsPage, + ], + imports: [ + IonicPageModule.forChild(PatientsPage), + TranslateModule.forChild() + ], + exports: [ + PatientsPage + ] +}) +export class PatientsPageModule {} diff --git a/src/pages/patients-page/patients-page.scss b/src/pages/patients-page/patients-page.scss new file mode 100644 index 0000000..0874914 --- /dev/null +++ b/src/pages/patients-page/patients-page.scss @@ -0,0 +1,3 @@ +page-patients-page { + +} diff --git a/src/pages/patients-page/patients-page.ts b/src/pages/patients-page/patients-page.ts new file mode 100644 index 0000000..9c94121 --- /dev/null +++ b/src/pages/patients-page/patients-page.ts @@ -0,0 +1,57 @@ +import {Component, OnDestroy} from '@angular/core'; +import {IonicPage, NavController, NavParams, MenuController} from 'ionic-angular'; +import {Subscription} from 'rxjs/Subscription'; +import {AutoriteitProvider} from '../../providers/autoriteit/autoriteit' +import {ProtectedPage} from '../protected-page/protected-page'; +import {Storage} from '@ionic/storage'; +import {PatientsService} from '../../providers/patients-service'; +import {PatientModel} from '../../models/patient.model'; + +@IonicPage() +@Component({ + selector: 'page-patients-page', + templateUrl: 'patients-page.html', +}) +export class PatientsPage extends ProtectedPage implements OnDestroy { + + public patients: any; + subscription: Subscription; + + constructor( + public navCtrl: NavController, + public navParams: NavParams, + public menuCtrl: MenuController, + public au: AutoriteitProvider, + public storage: Storage, + public patientsService: PatientsService) { + + super(navCtrl, navParams, storage); + // subscribe to the messages of the bedsService + this.subscription = patientsService.patientsChanged$.subscribe( + ) + + } + + ionViewWillEnter() { + this.patients = this.patientsService.getAll(); + } + + patientInfo(patient: PatientModel) { + this.navCtrl.push('PatientInfoPage', {patient: patient}); + } + + /** + * Opens a page + * + * @param page string Page name + */ + openPage(page: string) { + this.navCtrl.push(page); + } + + ngOnDestroy() { + // prevent memory leak when component destroyed + this.subscription.unsubscribe(); + } + +} diff --git a/src/providers/autoriteit/autoriteit.ts b/src/providers/autoriteit/autoriteit.ts index b516d5e..339b92f 100644 --- a/src/providers/autoriteit/autoriteit.ts +++ b/src/providers/autoriteit/autoriteit.ts @@ -3,8 +3,10 @@ import { Http } from '@angular/http'; import 'rxjs/add/operator/map'; import { Events } from 'ionic-angular'; import { BedModel } from '../../models/bed.model'; +import { PatientModel } from '../../models/patient.model'; import { MockstoreProvider } from '../mockstore/mockstore'; import { BedsService } from '../beds-service'; +import { PatientsService } from '../patients-service'; /* Generated class for the AutoriteitProvider provider. @@ -17,30 +19,48 @@ export class AutoriteitProvider { constructor( public events: Events, public store: MockstoreProvider, - public bs: BedsService) { - console.log('Hello AutoriteitProvider Provider'); - store.setDefault(bs.getAll()); // fill the storage with default data + public bs: BedsService, + public ps: PatientsService) { + console.log('Hello AutoriteitProvider Provider'); // fill the storage with default data events.subscribe('crud-action:add', (bp_id: number, bed: BedModel) => { + store.setDefault(bs.getAll()); let bp = this.bs.getBedPlace(bp_id); - this.store.add(bp, bed); + this.store.addBed(bp, bed); console.log('AutoriteitProvider - add:', bp_id, bed); } ); events.subscribe('crud-action:update', (bp_id: number, bed: BedModel) => { + store.setDefault(bs.getAll()); let bp = this.bs.getBedPlace(bp_id); - this.store.update(bp, bed); + this.store.updateBed(bp, bed); console.log('AutoriteitProvider - update:', bp_id, bed); } ); events.subscribe('crud-action:remove', (bp_id: number, bed: BedModel)=>{ + store.setDefault(bs.getAll()); let bp = this.bs.getBedPlace(bp_id); - this.store.remove(bp, bed); + this.store.removeBed(bp, bed); console.log('AutoriteitProvider - remove:', bp_id, bed); }); events.subscribe('crud-action:book', (bp_id:number, bed: BedModel, affl: number)=>{ + store.setDefault(bs.getAll()); let bp = this.bs.getBedPlace(bp_id); this.store.book(bp, bed, affl); console.log('AutoriteitProvider - book:', bp_id, bed, affl); }); events.subscribe('crud-action:unbook', this.unbook); + + /* patient */ + events.subscribe('patient-action:add', (patient: PatientModel) => { + store.setDefault(ps.getAll()); + this.store.addPatient(patient); + } ); + events.subscribe('patient-action:update', (patient: PatientModel) => { + store.setDefault(ps.getAll()); + this.store.updatePatient(patient); + } ); + events.subscribe('patient-action:remove', (patient: PatientModel)=>{ + store.setDefault(ps.getAll()); + this.store.removePatient(patient); + }); } unbook = function unbook(bp_id: number, bed: BedModel, affl: number){ diff --git a/src/providers/beds-service.ts b/src/providers/beds-service.ts index c77722c..7dcf435 100644 --- a/src/providers/beds-service.ts +++ b/src/providers/beds-service.ts @@ -133,8 +133,8 @@ export class BedsService { } ] }, - 1: { - "id": 1, + 5: { + "id": 5, "name": "EIGEN PLEKKEN", "description": "Lokaal", "key": "JJDKJDKJFFDKJ", diff --git a/src/providers/mockstore/mockstore.ts b/src/providers/mockstore/mockstore.ts index fac9570..74b932d 100644 --- a/src/providers/mockstore/mockstore.ts +++ b/src/providers/mockstore/mockstore.ts @@ -2,10 +2,11 @@ import { Injectable } from '@angular/core'; import 'rxjs/add/operator/map'; import { BedPlaceModel } from '../../models/bedplace.model'; import { BedModel } from '../../models/bed.model'; +import { PatientModel } from '../../models/patient.model'; import { Events } from 'ionic-angular'; @Injectable() -export class MockstoreProvider implements StorageInterface { +export class MockstoreProvider { private repres: any; @@ -20,7 +21,7 @@ export class MockstoreProvider implements StorageInterface { this.repres = r; } - add(bp: BedPlaceModel, bed: BedModel){ + addBed(bp: BedPlaceModel, bed: BedModel){ this.repres[bp.id].beds.push(bed); console.log("From mockstore adding: ", this.repres); this.events.publish('storage:update', this.repres); @@ -31,12 +32,12 @@ export class MockstoreProvider implements StorageInterface { console.log("From mockstore booking: ", this.repres); } unbook(bp: BedPlaceModel, bed: BedModel, affl: number){} - update(bp: BedPlaceModel, bed: BedModel){ + updateBed(bp: BedPlaceModel, bed: BedModel){ this.repres[bp.id].beds[bed.id] = bed; this.events.publish('storage:update', this.repres); console.log("From mockstore updating: ", this.repres); } - remove(bp: BedPlaceModel, bed: BedModel){ + removeBed(bp: BedPlaceModel, bed: BedModel){ //delete this.repres[bp.id].beds[bed.id]; let index = bed.id-1; if (index> -1){ this.repres[bp.id].beds.splice(index, 1); } @@ -44,4 +45,23 @@ export class MockstoreProvider implements StorageInterface { console.log("From mockstore deleting: ", this.repres); } + /* patienten */ + addPatient(patient: PatientModel){ + this.repres[patient.id].push(patient); + console.log("From mockstore adding: ", this.repres); + this.events.publish('patientStorage:update', this.repres); + } + updatePatient(patient: PatientModel){ + this.repres[patient.id] = patient; + this.events.publish('patientStorage:update', this.repres); + console.log("From mockstore updating: ", this.repres); + } + removePatient(patient: PatientModel){ + //delete this.repres[bp.id].beds[bed.id]; + let index = patient.id-1; + if (index> -1){ this.repres[patient.id].splice(index, 1); } + this.events.publish('patientStorage:update', this.repres); + console.log("From mockstore deleting: ", this.repres); + } + } diff --git a/src/providers/patients-service.ts b/src/providers/patients-service.ts new file mode 100644 index 0000000..0ab13c1 --- /dev/null +++ b/src/providers/patients-service.ts @@ -0,0 +1,106 @@ +import {Injectable} from '@angular/core'; +import {PatientModel} from '../models/patient.model'; +import 'rxjs/add/operator/map'; +import 'rxjs/add/operator/toPromise'; +import {Subject} from 'rxjs/Subject'; +import * as AppConfig from '../app/config'; +//import {AutoriteitProvider} from './autoriteit/autoriteit' +import { Events } from 'ionic-angular'; +/* +vangt events af van de lockers en stuurt en vraagt data +van lockers. representatie van de data voor deze case +weet welke lockers benaderbaar zijn en kan de inhoud ervan +wijzigen. De lockers zelf maken gebruik van de storage provider. + +connectie met 3 lockers +vult de beddenplek objecten +onderhoud per beddenplek een lijst met beddenplek (pushed die naar +de view en ontvangt wijzigingen van de view.) + +komt een event binnen (vraag naar data of update). +in event staat welke locker het is +update de eigen representatie van die locker of haal de data uit de representatie + +*/ + +@Injectable() +export class PatientsService { + + // Create number stream + private patientsChangedSource = new Subject(); + + // Make number stream observable, share patientsChanged$ with receivers + patientsChanged$ = this.patientsChangedSource.asObservable(); + + private cfg: any; + private patientviewmodel: any; + + constructor( public events: Events) { + this.cfg = AppConfig.cfg; + this.patientviewmodel = + { + patients: [ + { + "id": 1, + "name": "Annie", + "date_of_birth": "1923/03/04" + } + ] + }; + //let i = 1200; + //console.log( + // this.patientviewmodel[1], +// ); +//TODO: listen for storage update event +//listen for update(){ +// pas patientviewmodel aan +// changepatients() // trigger view update +this.events.subscribe('patientStorage:update', (x) => { + this.patientviewmodel.patients = x; + }); +//} +} + +getPatient(patient_id: number){ + var result = []; + if (this.patientviewmodel.hasOwnProperty(patient_id)) { //exist the requisted patient? + result = this.patientviewmodel.patients[patient_id]; //return patient + }; + console.log(result); + return result; +} + +getPatientIDs(){ + let result = []; + for (let patient in this.patientviewmodel.patients){ //NB: access *key* not the id in dictionary! + result.push(patient); + } + return result; +} + +getPatientInfo(patient_id: number){ + return { + "id": this.patientviewmodel.patients[patient_id].id, + "name": this.patientviewmodel.patients[patient_id].name, + "date_of_birth": this.patientviewmodel.patients[patient_id].date_of_birth, + } +} + +getAll() { + return this.patientviewmodel.patients; +} + +add(patient: PatientModel) { + // TODO: Build event mechanism to ACL / goedkeuring + //trigger add-or-up event(bedplace = this.getBedPlaceInfo(bp_id) , bed)// acl approval event + patient.id = Math.floor(Math.random() * 10); + this.events.publish('patient-action:add', patient); +} +update(patient: PatientModel){ + this.events.publish('patient-action:update', patient); +} +remove(patient: PatientModel) { + this.events.publish('patient-action:remove', patient); +} + +}