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

Minggu, 27 November 2016

Design Patterns - Strategy Pattern

dalam pola strategi, perilaku kelas atau algoritma dapat diubah berdasarkan berjalannya waktu. 
dalam pola strategi, objek yang kita buat mewakili berbagai strategi dan objek konteks yg perilakunya bervariasi sesuai objek strateginya. objek strategi perubahan algoritma mengeksekusi objek konteks.

IMPLEMENTASI


Step 1 : create an interface (strategy.java)
public interface Strategy {
   public int doOperation(int num1, int num2);
}
Step 2 : create concrete classes implementing  (operationadd.java)
public class OperationAdd implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 + num2;
   }
}
(operationsubstract.java)
public class OperationSubstract implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 - num2;
   }
}
(operationmultiply.java)
public class OperationMultiply implements Strategy{
   @Override
   public int doOperation(int num1, int num2) {
      return num1 * num2;
   }
}
Step 3 : Create Context Class (context.java)
public class Context {
   private Strategy strategy;

   public Context(Strategy strategy){
      this.strategy = strategy;
   }

   public int executeStrategy(int num1, int num2){
      return strategy.doOperation(num1, num2);
   }
}
Step 4 : Use the Context to see change in behaviour when it changes its Strategy(strategypatterndemo.java)
public class StrategyPatternDemo {
   public static void main(String[] args) {
      Context context = new Context(new OperationAdd());  
      System.out.println("10 + 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationSubstract());  
      System.out.println("10 - 5 = " + context.executeStrategy(10, 5));

      context = new Context(new OperationMultiply());  
      System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
   }
}
step 5 : verify the output
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50

Revisi Builder Design pattern - Implementation [Animal Toy]

Builder Design pattern - Implementation [Animal Toy] 

Design Pattern merupakan sebuah istilah di dalam rekayasa perangkat lunak yang mengacu pada solusi umum yang bisa dipergunakan kembali atau berulang-ulang untuk menyelesaikan masalah-masalah yang umum terjadi dalam konteks tertentu atau khusus yang ditemui pada desain perangkat lunak. Sebuah pola desain yang sudah terbentuk bukan berarti desain tersebut dapat langsung digunakan untuk menulis program.

Builder Pattern adalah sebuah software design pattern.
Tujuannya adalah sebagai adalah sebagai langkah-langkah abstract kerangka (kontruksi) object ,jika suatu implementasi menggunakan langkah-langkah yang berbeda, maka akan membuat representasi object yang berbeda juga.
Builder Pattern sering digunakan untuk membangun produk sesuai dengan sebuah pola struktur Composite Pattern, dengan cara memisahkan pembangunan kompleks object dari representation, sehingga proses konstruksi yang sama dapat membuat representation yang berbeda. 

Class Diagram :
 

 Design Pattern Diagram :

AnimalToy.java 
 
 public class AnimalToy  
 {  
  private String animalToyName;  
  private String animalToyHead;  
  private String animalToyBody;  
  private String animalToyArms;  
  private String animalToyLegs;  
  private String animalToyTail;  
  public String getAnimalToyName()  
  {  
   return animalToyName;  
  }  
  public void setAnimalToyName( String animalToyName )  
  {  
   this.animalToyName = animalToyName;  
  }  
  public String getAnimalToyHead()  
  {  
   return animalToyHead;  
  }  
  public void setAnimalToyHead( String animalToyHead )  
  {  
   this.animalToyHead = animalToyHead;  
  }  
  public String getAnimalToyBody()  
  {  
   return animalToyBody;  
  }  
  public void setAnimalToyBody( String animalToyBody )  
  {  
   this.animalToyBody = animalToyBody;  
  }  
  public String getAnimalToyArms()  
  {  
   return animalToyArms;  
  }  
  public void setAnimalToyArms( String animalToyArms )  
  {  
   this.animalToyArms = animalToyArms;  
  }  
  public String getAnimalToyLegs()  
  {  
   return animalToyLegs;  
  }  
  public void setAnimalToyLegs( String animalToyLegs )  
  {  
   this.animalToyLegs = animalToyLegs;  
  }  
  public String getAnimalToyTail()  
  {  
   return animalToyTail;  
  }  
  public void setAnimalToyTail( String animalToyTail )  
  {  
   this.animalToyTail = animalToyTail;  
  }  
  @Override  
  public String toString()  
  {  
   return "AnimalToy [animalToyName=" + animalToyName + ", animalToyHead=" + animalToyHead  
           + ", animalToyBody=" + animalToyBody + ", animalToyArms=" + animalToyArms  
           + ", animalToyLegs=" + animalToyLegs + ", animalToyTail=" + animalToyTail + "]\n";  
  }  
 } 
 


AnimalToyBuilder.java

public abstract class AnimalToyBuilder  
 {  
  private AnimalToy animalToy;  
  public AnimalToy getAnimalToy()  
  {  
   return animalToy;  
  }  
  public void setAnimalToy( AnimalToy animalToy )  
  {  
   this.animalToy = animalToy;  
  }  
  public final AnimalToy buildAnimalToy()  
  {  
   AnimalToy animalToy = createAnimalToy();  
   setAnimalToy(animalToy);  
   buildAnimalHead();  
   buildAnimalBody();  
   buildAnimalLegs();  
   buildAnimalArms();  
   buildAnimalTail();  
   setAnimalToyName();  
   return animalToy;  
  }  
  public abstract void buildAnimalHead();  
  public abstract void buildAnimalBody();  
  public abstract void buildAnimalLegs();  
  public abstract void buildAnimalArms();  
  public abstract void buildAnimalTail();  
  public abstract void setAnimalToyName();  
  public abstract AnimalToy createAnimalToy();  
 }  

DogToyBuilder.java
 public class DogToyBuilder extends AnimalToyBuilder  
 {  
  public AnimalToy createAnimalToy()  
  {  
   return new AnimalToy();  
  }  
  public void buildAnimalHead()  
  {  
   getAnimalToy().setAnimalToyHead("Dog head");  
   System.out.println("Step 1 : Dog Head has been built");  
  }  
  public void buildAnimalBody()  
  {  
   getAnimalToy().setAnimalToyBody("Dog Body");  
   System.out.println("Step 2 : Dog Body has been built");  
  }  
  public void buildAnimalLegs()  
  {  
   getAnimalToy().setAnimalToyLegs("Dog 4 legs");  
   System.out.println("Step 3 : Dog Legs has been built");  
  }  
  public void buildAnimalArms()  
  {  
   // No implementation because dog doesn't have Arms  
   getAnimalToy().setAnimalToyLegs("No arms");  
   System.out.println("Step 4 : is skiped because dog doesn't have Arms");  
  }  
  public void setAnimalToyName()  
  {  
   getAnimalToy().setAnimalToyName("Dog");  
  }  
  public void buildAnimalTail()  
  {  
   getAnimalToy().setAnimalToyTail("Dog Tail");  
   System.out.println("Step 5 : Dog Tail has been built");  
  }  
 } 
 
 
 LionToyBuilder.java  
 public class LionToyBuilder extends AnimalToyBuilder  
 {  
  public AnimalToy createAnimalToy()  
  {  
   return new AnimalToy();  
  }  
  public void buildAnimalHead()  
  {  
   getAnimalToy().setAnimalToyHead("Lion head");  
   System.out.println("Step 1 : Lion Head has been built");  
  }  
  public void buildAnimalBody()  
  {  
   getAnimalToy().setAnimalToyBody("Lion Body");  
   System.out.println("Step 2 : Lion Body has been built");  
  }  
  public void buildAnimalLegs()  
  {  
   getAnimalToy().setAnimalToyLegs("Lion 4 legs");  
   System.out.println("Step 3 : Lion Legs has been built");  
  }  
  public void buildAnimalArms()  
  {  
   // No implementation because Lion doesn't have Arms  
   getAnimalToy().setAnimalToyLegs("No arms");  
   System.out.println("Step 4 : is skiped because Lion doesn't have Arms");  
  }  
  public void setAnimalToyName()  
  {  
   getAnimalToy().setAnimalToyName("Lion");  
  }  
  public void buildAnimalTail()  
  {  
   getAnimalToy().setAnimalToyTail("Lion Tail");  
   System.out.println("Step 5 : Lion Tail has been built");  
  }  
 }


MonkeyToyBuilder.java 
public class MonkeyToyBuilder extends AnimalToyBuilder  
 {  
  public AnimalToy createAnimalToy()  
  {  
   return new AnimalToy();  
  }  
  public void buildAnimalHead()  
  {  
   getAnimalToy().setAnimalToyHead("Monkey head");  
   System.out.println("Step 1 : Monkey Head has been built");  
  }  
  public void buildAnimalBody()  
  {  
   getAnimalToy().setAnimalToyBody("Monkey Body");  
   System.out.println("Step 2 : Monkey Body has been built");  
  }  
  public void buildAnimalLegs()  
  {  
   getAnimalToy().setAnimalToyLegs("Monkey 2 legs");  
   System.out.println("Step 3 : Monkey Legs has been built");  
  }  
  public void buildAnimalArms()  
  {  
   getAnimalToy().setAnimalToyArms("Monkey 2 Arms");  
   System.out.println("Step 4 : Monkey Arms has been built");  
  }  
  public void setAnimalToyName()  
  {  
   getAnimalToy().setAnimalToyName("Monkey");  
  }  
  public void buildAnimalTail()  
  {  
   getAnimalToy().setAnimalToyTail("Monkey Tail");  
   System.out.println("Step 5 : Monkey Tail has been built");  
  }  
 } 


ToyMaker.java 
 public class ToyMaker  
 {  
  public final static String LION_TOY  = "Lion";  
  public final static String DOG_TOY  = "Dog";  
  public final static String MONKEY_TOY = "Monkey";  
  public static AnimalToy makeToy( String toyType ) throws Exception  
  {  
   AnimalToyBuilder animalToyBuilder = null;  
   if( toyType.equalsIgnoreCase(LION_TOY) )  
   {  
    animalToyBuilder = new LionToyBuilder();  
   }  
   else if( toyType.equalsIgnoreCase(DOG_TOY) )  
   {  
    animalToyBuilder = new DogToyBuilder();  
   }  
   else if( toyType.equalsIgnoreCase(MONKEY_TOY) )  
   {  
    animalToyBuilder = new MonkeyToyBuilder();  
   }  
   else  
   {  
    System.out.println("Sorry we cann't make : " + toyType);  
    throw new Exception("Sorry we cann't make : " + toyType);  
   }  
   return animalToyBuilder.buildAnimalToy();  
  }  
 }  


BuilderClient.java

public class BuilderClient  
 {  
  public static void main( String[] args ) throws Exception  
  {  
   AnimalToy lionToy = ToyMaker.makeToy(ToyMaker.LION_TOY);  
   System.out.println(lionToy);  
   AnimalToy dogToy = ToyMaker.makeToy(ToyMaker.DOG_TOY);  
   System.out.println(dogToy);  
   AnimalToy monkeyToy = ToyMaker.makeToy(ToyMaker.MONKEY_TOY);  
   System.out.println(monkeyToy);  
  }  
 }  
  

Minggu, 30 Oktober 2016

Component Diagram dan Deployment Diagram

Component Diagram 



Deployment Diagram 

Sistem Informasi Keuangan Rumah Sakit

Actor beserta Tugas 
Dalam sistem ini terdapat 2 actor, yaitu : 

1. Admin
Tugasnya :
- Mengelola transaksi
   >> Menambah transaksi
   >> Mengubah transaksi
- Mencetak laporan keuangan
   >> Mencetak laporan keuangan harian
   >> Mencetak laporan keuangan bulanan
   >> Mencetak laporan keuangan tahunan
- Melihat laporan keuangan
   >> Melihat laporan keuangan harian
   >> Melihat laporan keuangan bulanan
   >> Melihat laporan keuangan tahunan


2. Cashier

Tugasnya :
- Menambahkan transaksi ada kwitansi


Use Case Sistem Informasi Keuangan Rumah Sakit
Class Diagram Sistem Informasi Keuangan Rumah Sakit




CRC Sistem Informasi Keuangan Rumah Sakit












Use Case dan Realisasi Class

Activity Diagram  
1. Menambahkan data Transaksi
2. Mengubah data Transaksi
3. Melihat Laporan Keuangan Harian
4. Melihat Laporan Keuangan Bulanan
5. Melihat Laporan Keuangan Tahunan

6. Mencetak Laporan Keuangan Harian

7. Mencetak Laporan Keuangan Bulanan
8. Mencetak Laporan Keuangan Tahunan
9. Menambahkan Transaksi ada kwitansi
Sequence Diagram  

1. Menambahkan data Transaksi

2. Mengubah data Transaksi


3. Melihat Laporan Keuangan Harian


4. Melihat Laporan Keuangan Bulanan


5. Melihat Laporan Keuangan Tahunan


6. Mencetak Laporan Keuangan Harian

7. Mencetak Laporan Keuangan Bulanan


8. Mencetak Laporan Keuangan Tahunan


9. Menambahkan Transaksi ada kwitansi


Documentation





Source Code 

Source Code didapat dari : https://github.com/hafiznuzal/sirumkit