Senin, 19 Desember 2016

SIRumKit with Design Pattern

Jadi kali ini, saya akan mengambil salah satu studi kasus yakni Rumah Sakit dengan menggunakan Singleton Design Pattern, Observer Design Pattern dan MVC 

Singleton design pattern adalah design pattern yang digunakan untuk membatasi instansiasi dari suatu kelas menjadi satu object, membatasi sebuah global point of access ke suatu object dan memperbolehkan multiple instances ke depan tanpa mempengaruhi singleton class client. Terkadang suatu sistem akan beroperasi lebih efisien jika hanya ada satu atau beberapa object saja.

Sebagai contoh ada terdapat di c_verifylogin.php, berikut sourcenya:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');  
 class C_verifyLogin extends CI_Controller {  
   function __construct() {  
     parent::__construct();  
     //load session and connect to database  
     $this->load->model('m_login','login',TRUE);  
     $this->load->helper(array('form', 'url','html'));  
     $this->load->library(array('form_validation','session'));  
   }  
   function index() {  
     //fungsi utk verifikasi login aja  
     $username = $this->input->post('username');  
     $password =$this->input->post('password');  
      //query the database  
     $result = $this->login->login($username, $password);  
     if($result) {  
        $sess_array = array();  
        foreach($result as $row) {  
          //create the session  
          $sess_array = array('user' => $row->user,  
            'tahun'=>$this->input->post('tahunLg'));  
          //set session with value from database  
          $this->session->set_userdata('logged_in', $sess_array);  
          }  
      redirect(base_url()."admin");  
      } else {  
        //if form validate false  
        $this->form_validation->set_message('check_database', 'Invalid username or password');  
        redirect("login?login=failed");  
      }  
    }  
    function check_database($password) {  
    //utk cek password  
      //Field validation succeeded. Validate against database  
      $username = $this->input->post('username');  
      $password =$this->input->post('password');  
      //query the database  
      $result = $this->login->login($username, $password);  
      if($result) {  
        $sess_array = array();  
        foreach($result as $row) {  
          //create the session  
          $sess_array = array('user' => $row->user,  
            'tahun'=>$this->input->post('tahunLg'));  
          //set session with value from database  
          $this->session->set_userdata('logged_in', $sess_array);  
          }  
      return TRUE;  
      } else {  
        //if form validate false  
        $this->form_validation->set_message('check_database', 'Invalid username or password');  
        return FALSE;  
      }  
    }  
 }  
 /* End of file c_verifylogin.php */  
 /* Location: ./application/controllers/c_verifylogin.php */  
Penjelasan : dikelas ini hanya digunakan untuk memverifikasi apakah username dan password sudah sesuai apa belum.

Berikut Singleton Design Pattern-nya :
Berikut tampilan dari design pattern-nya :



Observer Design Pattern
Observer Design Pattern adalah suatu interface yang digunakan untuk memastikan suatu konsistensi pada suatu objek. Observer pattern memiliki 2 bagian utama yakni, subject yang akan memunculkan event-event tertentu dan observer sendiri yang akan selalu mengamati event-event yang terjadi pada subject. Observer Pattern bisa juga digunakan dalam kondisi MVC di mana sebuah model dapat ditampilkan secara paralel di lebih dari 1 view

Sebagai contoh ada terdapat di angularcontroller.js, berikut sourcenya:
 var app = angular.module('rumahSakit', []);  
 app.controller('formController', function($scope,$http) {  
   var config = {  
     headers : {  
       'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'  
     }  
   }  
   var menuSelects = [];  
   var menu = [];  
   menu.push({'value':'VK- Persalinan','name':'VK- Persalinan'});  
   menu.push({'value':'VK- Perawatan Bayi','name':'VK- Perawatan Bayi'});  
   menu.push({'value':'VK- Jasa VK','name':'VK- Jasa VK'});  
   menu.push({'value':'OK- Jasa OK','name':'OK- Jasa OK'});  
   menu.push({'value':'OK- Penerimaan Alat Monitor','name':'OK- Penerimaan Alat Monitor'});  
   menu.push({'value':'OK- Penerimaan Alat Couter','name':'OK- Penerimaan Alat Couter'});  
   menu.push({'value':'OK- Penerimaan RR','name':'OK- Penerimaan RR'});  
   menu.push({'value':'Rawat Inap - VIP','name':'Rawat Inap - VIP'});  
   menu.push({'value':'Rawat Inap - Kelas I','name':'Rawat Inap - Kelas I'});  
   menu.push({'value':'Rawat Inap - Kelas II','name':'Rawat Inap - Kelas II'});  
   menu.push({'value':'Rawat Inap - Kelas III','name':'Rawat Inap - Kelas III'});  
   menu.push({'value':'BPJS - Persentase dr dari pasien','name':'BPJS - Persentase dr dari pasien'});  
   menu.push({'value':'BPJS - Jasa dr utk RS dari Jasa Visite','name':'BPJS - Jasa dr utk RS dari Jasa Visite'});  
   menu.push({'value':'BPJS - Labor Rawat Nginap','name':'BPJS - Labor Rawat Nginap'});  
   menu.push({'value':'BPJS - Penerimaan HCU','name':'BPJS - Penerimaan HCU'});  
   menu.push({'value':'BPJS - Transportasi','name':'BPJS - Transportasi'});  
   menu.push({'value':'BPJS - Medical Record','name':'BPJS - Medical Record'});  
   menu.push({'value':'BPJS - Piutang yang diterima','name':'BPJS - Piutang yang diterima'});  
   menu.push({'value':'BPJS - Penerimaan Obat - Obat Rawat Inap','name':'BPJS - Penerimaan Obat - Obat Rawat Inap'});  
   menu.push({'value':'BPJS - Perasat','name':'BPJS - Perasat'});  
   menu.push({'value':'BPJS - Insentif obat rawat inap + rawat jalan','name':'BPJS - Insentif obat rawat inap + rawat jalan'});  
   menu.push({'value':'BPJS - Jasa Pelayanan','name':'BPJS - Jasa Pelayanan'});  
   menu.push({'value':'BPJS - Penerimaan Rotgen','name':'BPJS - Penerimaan Rotgen'});  
   menu.push({'value':'BPJS - Penerimaan USG','name':'BPJS - Penerimaan USG'});  
   menu.push({'value':'Rawat Jalan - Labor Rawat Jalan','name':'Rawat Jalan - Labor Rawat Jalan'});  
   menu.push({'value':'Rawat Jalan - EKG Rawat Jalan + Rawat Inap','name':'Rawat Jalan - EKG Rawat Jalan + Rawat Inap'});  
   menu.push({'value':'Rawat Jalan - Karcis IGD Rawat Jalan + Rawat Inap','name':'Rawat Jalan - Karcis IGD Rawat Jalan + Rawat Inap'});  
   menu.push({'value':'Rawat Jalan - Jasa Tindakan Rawat Jalan','name':'Rawat Jalan - Jasa Tindakan Rawat Jalan'});  
   menu.push({'value':'Rawat Jalan - Penerimaan Obat-Obatan Rawat Jalan','name':'Rawat Jalan - Penerimaan Obat-Obatan Rawat Jalan'});  
   menu.push({'value':'Rawat Jalan - Karcis Rawat Jalan','name':'Rawat Jalan - Karcis Rawat Jalan'});  
   menu.push({'value':'Penerimaan Lain-Lain','name':'Penerimaan Lain-Lain'});  
   menuSelects.push(menu);  
   menu = [];  
   menu.push({'value':'B.Pegawai - Gaji Karyawan','name':'B.Pegawai - Gaji Karyawan'});  
   menu.push({'value':'B.Pegawai - Insentif Karyawan','name':'B.Pegawai - Insentif Karyawan'});  
   menu.push({'value':'B.Pegawai - Honor Dr. Jaga','name':'B.Pegawai - Honor Dr. Jaga'});  
   menu.push({'value':'B.Pegawai - Jasa UGD Dr','name':'B.Pegawai - Jasa UGD Dr'});  
   menu.push({'value':'B.Pegawai - Jasa Partus Bidan','name':'B.Pegawai - Jasa Partus Bidan'});  
   menu.push({'value':'B.Pegawai - Jasa Cuci Kain OK + Kain Pasien','name':'B.Pegawai - Jasa Cuci Kain OK + Kain Pasien'});  
   menu.push({'value':'B.Pegawai - Lembur Karyawan','name':'B.Pegawai - Lembur Karyawan'});  
   menu.push({'value':'B.Pegawai - THR Karyawan','name':'B.Pegawai - THR Karyawan'});  
   menu.push({'value':'B.Pegawai - Beli Baju Dinas Karyawan','name':'B.Pegawai - Beli Baju Dinas Karyawan'});  
   menu.push({'value':'B.Pegawai - Perjalanan + Pelatihan','name':'B.Pegawai - Perjalanan + Pelatihan'});  
   menu.push({'value':'B.Pegawai - Konsumsi Karyawan/Uang Daging','name':'B.Pegawai - Konsumsi Karyawan/Uang Daging'});  
   menu.push({'value':'B.Operasional - Pengeluaran Administrasi','name':'B.Operasional - Pengeluaran Administrasi'});  
   menu.push({'value':'B.Operasional - Pengeluaran Dapur/Menu Pasien','name':'B.Operasional - Pengeluaran Dapur/Menu Pasien'});  
   menu.push({'value':'B.Operasional - Pengeluaran Laboratorium','name':'B.Operasional - Pengeluaran Laboratorium'});  
   menu.push({'value':'B.Operasional - Pengeluaran Obat-Obatan','name':'B.Operasional - Pengeluaran Obat-Obatan'});  
   menu.push({'value':'B.Operasional - Pengeluaran Mobil','name':'B.Operasional - Pengeluaran Mobil'});  
   menu.push({'value':'B.Operasional - Pengeluaran Listrik + Kain Pasien','name':'B.Operasional - Pengeluaran Listrik + Kain Pasien'});  
   menu.push({'value':'B.Operasional - Pengeluaran Air','name':'B.Operasional - Pengeluaran Air'});  
   menu.push({'value':'B.Operasional - Pengeluaran Telepon','name':'B.Operasional - Pengeluaran Telepon'});  
   menu.push({'value':'B.Operasional - Pengeluaran Inventaris','name':'B.Operasional - Pengeluaran Inventaris'});  
   menu.push({'value':'B.Operasional - Pemeliharaan Sarana','name':'B.Operasional - Pemeliharaan Sarana'});  
   menu.push({'value':'Pengeluaran Lain-Lain','name':'Pengeluaran Lain-Lain'});  
   menuSelects.push(menu);  
   var menueditSelects = [];  
   var menuedit = [];  
   menuedit.push({'value':'VK- Persalinan','text':'VK- Persalinan'});  
   menuedit.push({'value':'VK- Perawatan Bayi','text':'VK- Perawatan Bayi'});  
   menuedit.push({'value':'VK- Jasa VK','text':'VK- Jasa VK'});  
   menuedit.push({'value':'OK- Jasa OK','text':'OK- Jasa OK'});  
   menuedit.push({'value':'OK- Penerimaan Alat Monitor','text':'OK- Penerimaan Alat Monitor'});  
   menuedit.push({'value':'OK- Penerimaan Alat Couter','text':'OK- Penerimaan Alat Couter'});  
   menuedit.push({'value':'OK- Penerimaan RR','text':'OK- Penerimaan RR'});  
   menuedit.push({'value':'Rawat Inap - VIP','text':'Rawat Inap - VIP'});  
   menuedit.push({'value':'Rawat Inap - Kelas I','text':'Rawat Inap - Kelas I'});  
   menuedit.push({'value':'Rawat Inap - Kelas II','text':'Rawat Inap - Kelas II'});  
   menuedit.push({'value':'Rawat Inap - Kelas III','text':'Rawat Inap - Kelas III'});  
   menuedit.push({'value':'BPJS - Persentase dr dari pasien','text':'BPJS - Persentase dr dari pasien'});  
   menuedit.push({'value':'BPJS - Jasa dr utk RS dari Jasa Visite','text':'BPJS - Jasa dr utk RS dari Jasa Visite'});  
   menuedit.push({'value':'BPJS - Labor Rawat Nginap','text':'BPJS - Labor Rawat Nginap'});  
   menuedit.push({'value':'BPJS - Penerimaan HCU','text':'BPJS - Penerimaan HCU'});  
   menuedit.push({'value':'BPJS - Transportasi','text':'BPJS - Transportasi'});  
   menuedit.push({'value':'BPJS - Medical Record','text':'BPJS - Medical Record'});  
   menuedit.push({'value':'BPJS - Piutang yang diterima','text':'BPJS - Piutang yang diterima'});  
   menuedit.push({'value':'BPJS - Penerimaan Obat - Obat Rawat Inap','text':'BPJS - Penerimaan Obat - Obat Rawat Inap'});  
   menuedit.push({'value':'BPJS - Perasat','text':'BPJS - Perasat'});  
   menuedit.push({'value':'BPJS - Insentif obat rawat inap + rawat jalan','text':'BPJS - Insentif obat rawat inap + rawat jalan'});  
   menuedit.push({'value':'BPJS - Jasa Pelayanan','text':'BPJS - Jasa Pelayanan'});  
   menuedit.push({'value':'BPJS - Penerimaan Rotgen','text':'BPJS - Penerimaan Rotgen'});  
   menuedit.push({'value':'BPJS - Penerimaan USG','text':'BPJS - Penerimaan USG'});  
   menuedit.push({'value':'Rawat Jalan - Labor Rawat Jalan','text':'Rawat Jalan - Labor Rawat Jalan'});  
   menuedit.push({'value':'Rawat Jalan - EKG Rawat Jalan + Rawat Inap','text':'Rawat Jalan - EKG Rawat Jalan + Rawat Inap'});  
   menuedit.push({'value':'Rawat Jalan - Karcis IGD Rawat Jalan + Rawat Inap','text':'Rawat Jalan - Karcis IGD Rawat Jalan + Rawat Inap'});  
   menuedit.push({'value':'Rawat Jalan - Jasa Tindakan Rawat Jalan','text':'Rawat Jalan - Jasa Tindakan Rawat Jalan'});  
   menuedit.push({'value':'Rawat Jalan - Penerimaan Obat-Obatan Rawat Jalan','text':'Rawat Jalan - Penerimaan Obat-Obatan Rawat Jalan'});  
   menuedit.push({'value':'Rawat Jalan - Karcis Rawat Jalan','text':'Rawat Jalan - Karcis Rawat Jalan'});  
   menuedit.push({'value':'Penerimaan Lain-Lain','text':'Penerimaan Lain-Lain'});  
   menueditSelects.push(menuedit);  
   menuedit = [];  
   menuedit.push({'value':'B.Pegawai - Gaji Karyawan','name':'B.Pegawai - Gaji Karyawan'});  
   menuedit.push({'value':'B.Pegawai - Insentif Karyawan','name':'B.Pegawai - Insentif Karyawan'});  
   menuedit.push({'value':'B.Pegawai - Honor Dr. Jaga','name':'B.Pegawai - Honor Dr. Jaga'});  
   menuedit.push({'value':'B.Pegawai - Jasa UGD Dr','name':'B.Pegawai - Jasa UGD Dr'});  
   menuedit.push({'value':'B.Pegawai - Jasa Partus Bidan','name':'B.Pegawai - Jasa Partus Bidan'});  
   menuedit.push({'value':'B.Pegawai - Jasa Cuci Kain OK + Kain Pasien','name':'B.Pegawai - Jasa Cuci Kain OK + Kain Pasien'});  
   menuedit.push({'value':'B.Pegawai - Lembur Karyawan','name':'B.Pegawai - Lembur Karyawan'});  
   menuedit.push({'value':'B.Pegawai - THR Karyawan','name':'B.Pegawai - THR Karyawan'});  
   menuedit.push({'value':'B.Pegawai - Beli Baju Dinas Karyawan','name':'B.Pegawai - Beli Baju Dinas Karyawan'});  
   menuedit.push({'value':'B.Pegawai - Perjalanan + Pelatihan','name':'B.Pegawai - Perjalanan + Pelatihan'});  
   menuedit.push({'value':'B.Pegawai - Konsumsi Karyawan/Uang Daging','name':'B.Pegawai - Konsumsi Karyawan/Uang Daging'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Administrasi','name':'B.Operasional - Pengeluaran Administrasi'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Dapur/Menu Pasien','name':'B.Operasional - Pengeluaran Dapur/Menu Pasien'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Laboratorium','name':'B.Operasional - Pengeluaran Laboratorium'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Obat-Obatan','name':'B.Operasional - Pengeluaran Obat-Obatan'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Mobil','name':'B.Operasional - Pengeluaran Mobil'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Listrik + Kain Pasien','name':'B.Operasional - Pengeluaran Listrik + Kain Pasien'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Air','name':'B.Operasional - Pengeluaran Air'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Telepon','name':'B.Operasional - Pengeluaran Telepon'});  
   menuedit.push({'value':'B.Operasional - Pengeluaran Inventaris','name':'B.Operasional - Pengeluaran Inventaris'});  
   menuedit.push({'value':'B.Operasional - Pemeliharaan Sarana','name':'B.Operasional - Pemeliharaan Sarana'});  
   menuedit.push({'value':'Pengeluaran Lain-Lain','name':'Pengeluaran Lain-Lain'});    
   menueditSelects.push(menuedit);  
   if($('input[name=transaksi]:checked').val()==1)  
      {  
           $scope.option = menuSelects[0];  
           $scope.selectedItem = menuSelects[0][0].value;  
      }  
      else if($('input[name=transaksi]:checked').val()==2)  
      {  
           $scope.option = menuSelects[1];  
           $scope.selectedItem = menuSelects[1][0].value;  
      }  
   $scope.cekFilter = function(){  
        if($('input[name=transaksi]:checked').val()==1)  
        {  
             $scope.option = menuSelects[0];  
             $scope.selectedItem = menuSelects[0][0].value;  
        }  
        else if($('input[name=transaksi]:checked').val()==2)  
        {  
             $scope.option = menuSelects[1];  
             $scope.selectedItem = menuSelects[1][0].value;  
        }  
   }  
   $scope.submit = function(){  
     // var nomor = $scope.nomorTransaksi  
        var nama = $scope.namaTransaksi  
        var transaksi = $('#selectedItem option:selected').text();  
        var uraian = $scope.uraian;  
        var uang = $scope.uang;  
        var message = "<ul>"+"<li>"+"Transaksi : "+transaksi+"</li>"+"<li>"+"Uraian : "+uraian+"</li>"+"<li>"+"Biaya : "+uang+"</li>"+"</ul>";  
        swal({  title: "<h2>Apakah anda yakin dengan data ini ?</h2>!",  text: message,  html: true ,showCancelButton: true,  confirmButtonColor: "#4682B4",  confirmButtonText: "Simpan",  closeOnConfirm: false}  
       , function(){  
         var data =$.param({  
           item:$scope.selectedItem,  
           uraian:$scope.uraian,  
           jenis:$('input[name=transaksi]:checked').val(),  
           biaya:$scope.uang  
         })  
         $http.post("/sirumkit1/index.php/admin/pasien", data,config)  
         .then(  
           function(response){  
           console.log(response.data)  
           swal("Good job!", "data disimpan", "success")  
           },   
           function(response){  
            // failure callback  
           }  
         );  
     });  
   }  
  $scope.showModal= function(Id_Transaksi,No_Transaksi,Item_Transaksi,Uraian,Biaya,jenis)  
  {  
    $scope.idtransaksi = Id_Transaksi;  
   $scope.selectedItem= Item_Transaksi;  
   if( jenis==1 ){  
    $('input[name=transaksi]')[0].checked = true;  
   }  
   else {  
    $('input[name=transaksi]')[1].checked = true;  
   }  
   $scope.uraian=Uraian;  
   $scope.uang= parseInt(Biaya);  
   if (jenis==1)   
   {  
    $scope.option=menuSelects[0];  
    $scope.selectedItem=menuSelects[0][0].value;  
   }  
   else if (jenis==2)  
   {  
    $scope.option=menuSelects[1];  
    $scope.selectedItem=menuSelects[1][0].value;  
   }  
   console.log($scope.idtransaksi);  
  }   
   $scope.edit_companies = [];  
   $scope.submit_edit = function(idtransaksi) {  
    var id = idtransaksi     
    var nama = $scope.namaTransaksi  
    var transaksi = $('#selectedItem option:selected').text();  
    var uraian = $scope.uraian;  
    var uang = $scope.uang;  
    var jenisopt = $('input[name=transaksi]:checked').val();  
    $scope.edit_companies.push({'counter':$scope.counter, 'transaksi': transaksi, 'uraian':uraian, 'biaya':uang, 'jenis':jenisopt, 'id':id});  
    edit_item = {edit_item: $scope.edit_companies};  
    console.log(edit_item)  
    data =$.param({  
      edit_item:$scope.edit_companies  
    })  
    $http.post("/sirumkit1/index.php/admin/edit_transaksi/"+jenisopt, data, config)  
     .then(  
      function(response){  
       console.log(response.data)  
       swal("Good job!", "data disimpan", "success")  
        $("#myModal").modal().hide();  
        window.top.location.href = "/sirumkit1/index.php/admin/edit_transaksi/1";   
      },   
      function(response){  
       // failure callback  
      }  
     );  
   }  
   $scope.companies = [];  
   $scope.counter = 1;  
   $scope.total = 0;  
   $scope.addRow = function() {  
   var nama = $scope.namaTransaksi  
   var transaksi = $('#selectedItem option:selected').text();  
   var uraian = $scope.uraian;  
   var uang = $scope.uang;  
   $scope.total= $scope.total+$scope.uang;  
   var total = $scope.total;  
   $scope.companies.push({'counter':$scope.counter, 'transaksi': transaksi, 'uraian':uraian, 'biaya':uang, 'total':total});  
   $scope.counter++;  
   $scope.namaTransaksi = '';  
   $scope.uraian = '';  
   $scope.uang = '';  
   }  
   $scope.removeRow = function(counter){      
   var index = -1;    
   var comArr = eval( $scope.companies );  
   for( var i = 0; i < comArr.length; i++ ) {  
    if( comArr[i].counter === counter ) {  
     index = i;  
     break;  
    }  
   }  
   if( index === -1 ) {  
    // alert( "Something gone wrong" );  
   }  
   $scope.companies.splice( index, 1 );    
   };  
   $scope.submitCashier = function() {  
    cashier = {cashier: $scope.companies};  
    console.log(cashier)  
    data =$.param({  
      cashier:$scope.companies  
    })  
    $http.post("/sirumkit1/index.php/admin/cashier/1", data, config)  
     .then(  
      function(response){  
       console.log(response.data)  
       swal("Good job!", "data disimpan", "success")  
        window.top.location.href = "/sirumkit1/index.php/admin/cashier/1";   
      },   
      function(response){  
       // failure callback  
      }  
     );  
   }  
   $scope.editButton = function (id_transaksi,no_transaksi,item_transaksi,uraian,biaya) {  
   swal.withForm({  
     title: 'More complex Swal-Forms example',  
     text: 'This has different types of inputs',  
     showCancelButton: true,  
     confirmButtonColor: '#DD6B55',  
     confirmButtonText: 'Get form data!',  
     closeOnConfirm: true,  
     formFields: [  
      { id: 'uraian', placeholder: 'Nomor Transaksi',value:no_transaksi,title:'Nomor Transaksi' },  
      { id: 'uraian', placeholder: 'Uraian',value:uraian,title:'Uraian ' },  
      { id: 'biaya', placeholder: 'Biaya',value:biaya,title:'Biaya ' },  
      { id: 'select', type: 'select', options: [  
        {value: 'VK- Persalinan', text: 'VK- Persalinan'},  
        {value: 'test2', text: 'test2'},  
        {value: 'test3', text: 'test3'},  
        {value: 'test4', text: 'test4'},  
        {value: 'test5', text: 'test5'}  
      ]}  
     ]  
    }, function (isConfirm) {  
     // do whatever you want with the form data  
     console.log(this.swalForm) // { name: 'user name', nickname: 'what the user sends' }  
    })  
   setTimeout(function(){ $('.sweet-alert.showSweetAlert.visible').css('margin-top',"-300px");console.log('change') }, 500);  
   }  
 }); 
Penjelasan : dikelas ini digunakan pada saat instansiasi form transaksi dan form cashier.

Berikut Observer Design Pattern-nya :

Berikut tampilan dari design pattern-nya :



MVC (Model View Controller)
Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller). Dalam implementasinya kebanyakan framework dalam aplikasi website adalah berbasis arsitektur MVC. MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna, dan bagian yang menjadi kontrol dalam sebuah aplikasi webUntuk dikodingannya ada di admin controller function 

Sebagai contoh ada public function index() yang terdapat di admin.php, berikut sourcenya:
 public function index()  
      {  
           if($this->session->userdata('logged_in')){  
                $this->load->model('m_report');  
                $bulan = date('m');  
                $tahun = date('Y');  
                $hari = date('d');  
                if ($bulan < 10) {  
                     $tanggal_lengkap = $tahun."-0".$bulan;  
                     $tanggal_hari_ini = $tahun."-0".$bulan."-".$hari;  
                }  
                else $tanggal_lengkap = $tahun."-".$bulan;  
                $tanggal_hari_ini = $tahun."-".$bulan."-".$hari;  
                $hasil_masuk_thn = $this->m_report->tabel_jumlah_bln_th_msk($tahun);  
                $hasil_keluar_thn = $this->m_report->tabel_jumlah_bln_th_klr($tahun);  
                $hasil_masuk_bln = $this->m_report->tabel_jumlah_bln_th_msk($tanggal_lengkap);  
                $hasil_keluar_bln = $this->m_report->tabel_jumlah_bln_th_klr($tanggal_lengkap);  
                $hasil_masuk_hri = $this->m_report->tabel_jumlah_bln_th_msk($tanggal_hari_ini);  
                $hasil_keluar_hri= $this->m_report->tabel_jumlah_bln_th_klr($tanggal_hari_ini);  
                // echo $data['jumlah_pengembang'][0]->jumlah_pengembang;  
                $data['masuk_thn']=$hasil_masuk_thn[0]['Biaya'];  
                $data['keluar_thn']=$hasil_keluar_thn[0]['Biaya'];  
                $data['masuk_bln']=$hasil_masuk_bln[0]['Biaya'];  
                $data['keluar_bln']=$hasil_keluar_bln[0]['Biaya'];  
                $data['masuk_hri']=$hasil_masuk_hri[0]['Biaya'];  
                $data['keluar_hri']=$hasil_keluar_hri[0]['Biaya'];  
                // print_r($data);  
                // exit();  
                $this->load->view('template/admin_header',$this->sesi);  
                $this->load->view('admin/admin_home',$data);  
                $this->load->view('template/admin_footer');  
           }  
           else redirect(base_url()."/");  
      }  
Penjelasan : dikelas ini memanggil kelas view dan kelas model.

Berikut MVC Design Pattern-nya :

Untuk diagram sbb:
1. Actor
2. Use Case
3. Class Diagram
4. CRC
5. Use Case dan Realisasi Class
6. Activity Diagram
7. Sequence Diagram
berada di :http://aninditagltm.blogspot.co.id/2016/10/sistem-informasi-keuangan-rumah-sakit.html


8. Deployment Diagram
9. Component Diagram
berada di : http://aninditagltm.blogspot.co.id/2016/10/component-diagram-dan-deployment-diagram.html