Minggu, 04 Desember 2016

[8] Observer di Design Pattern (Contoh Studi kasus Observer dari Sourcemaking.com)

Kesempatan kali ini saya akan mencoba menerapkan contoh observer di design pattern dari sourcemaking.com

Tapi akan lebih afdol apabila kita lebih tau tentang pengertian observer di design pattern terlebih dahulu

The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.(Wikipedia.com)


  
UML class diagram dari Observer

 Contoh penerapan dari observer sendiri mirip seperti pelelangan, dimana yang melelang seperti class subject sedangkan yang mengikuti lelang tersebut seperti concrete observer a, b, ..., dst.


 Kalau masih bingung dengan contoh diatas mari kita lihat contoh dari sourcemaking.com berikut

Program berbahasa java ini akan menjelaskan mengenai cara kerja observer.

Di program ini yang menjadi subject adalah SensorSystem, sedangkan Lighting, Gates dan Surveillance merupakan Concrete Observer A, B, dan C. Kemudian yang menotifikasi subject adalah Alarm Listener

Pada contoh ini saya akan memakai IDE java yaitu BlueJ



Source codenya seperti ini (diambil dari sourcemaking)
interface AlarmListener { public void alarm(); }

class SensorSystem {
   private java.util.Vector listeners = new java.util.Vector();

   public void register( AlarmListener al ) { listeners.addElement( al ); }
   public void soundTheAlarm() {
      for (java.util.Enumeration e=listeners.elements(); e.hasMoreElements(); )
         ((AlarmListener)e.nextElement()).alarm();
}  }

class Lighting implements AlarmListener {
   public void alarm() { System.out.println( "lights up" ); }
}

class Gates implements AlarmListener {
   public void alarm() { System.out.println( "gates close" ); }
}

class CheckList {
   public void byTheNumbers() {  // Template Method design pattern
      localize();
      isolate();
      identify(); }
   protected void localize() {
      System.out.println( "   establish a perimeter" ); }
   protected void isolate()  {
      System.out.println( "   isolate the grid" ); }
   protected void identify() {
      System.out.println( "   identify the source" ); }
}
                   // class inheri.  // type inheritance
class Surveillance extends CheckList implements AlarmListener {
   public void alarm() {
      System.out.println( "Surveillance - by the numbers:" );
      byTheNumbers(); }
   protected void isolate() { System.out.println( "   train the cameras" ); }
}

public class ClassVersusInterface {
   public static void main( String[] args ) {
      SensorSystem ss = new SensorSystem();
      ss.register( new Gates()        );
      ss.register( new Lighting()     );
      ss.register( new Surveillance() );
      ss.soundTheAlarm();
}  }
Mungkin kira-kira sampai segini dulu coba2 kita. sampai ketemu di coba2yang lainnya














Minggu, 20 November 2016

{9} Analisis PIECES

Hai-hai, selamat datang kembali di blog saya, melanjutkan analisis yang ada di part 7.1 (http://adenuar-purnomo.blogspot.co.id/2016/11/71revisi-rsud-dr-soetomo-part-2-contoh.html) kali ini kita akan membahas analisis PIECES.

Apa itu analisis PIECES???
Kalian bisa membuka http://fajarbaskoro.blogspot.co.id/2016/11/apsi-9-teknik-analisis-sistem.html agar lebih memahami apa itu analisis PIECES

DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo dan juga analisis PIECES nya


Sistem informasi yang akan kita bahas hanyalah salah 1 dari banyak sistem yang ada di part 7.1. yaitu tentang sistem informasi keuangan. Sistem yang terhubung dengan SI pegawai dan SI perencanaan program tersebut perlu dibuat dengan asumsi yang sudah ada merupakan sistem informasi kuno.

A. Analisis Performance/ Kinerja

Keterlambatan di dalam melakukan proses pembayaran gaji pegawai

B. Analisis Informasi

  • Data hutang piutang yang berlebihan/ redudancy.
  • Dapat terjadi error di data hutang piutang tersebut yang berupa error pencatatan hutang piutang

C. Analisis EKONOMI

Cost yang dibutuhkan untuk sistem informasi yang lama lebih tinggi karena membutuhkan buku untuk pencatatan(tentunya harus membeli buku terlebih dahulu)

D. Analisis SECURITY / Keamanan

Tidak adanya back up
Angka inputan dapat diganti


E. ANALISIS EFISIENSI

Efisiensi tempat kurang karena harus mengalokasikan tempat untuk buku


F. ANALISIS PELAYANAN (SERVICE)

  1. Akurasi dalam pengolahan data kurang karena faktor kesalahan hitung 
  2. Dalam situasi terdesak tidak bisa digunakan apabila tidak ada akuntan disana
 

Rabu, 16 November 2016

[7.1]{Revisi} RSUD Dr. Soetomo Part 2 (contoh studi kasus analsis sistem informasi)

hai semuanya dan selamat datang kembali di blog saya. pada kesempatan ini saya akan melanjutkan pembahasan saya tentang RSUD Dr. Soetomo( part 1 bisa dilihat disini http://adenuar-purnomo.blogspot.co.id/2016/10/5-rsud-dr-soetomo.html).

sebelum membahasnya saya akan menyampaikan sebuah disclaimer.

DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo

 Berdasarkan struktur organisasi di atas, saya dapat menganalisis beberapa sistem informasi yang diperlukan / yang sudah ada di RSUD Dr. Soetomo. Berikut hasil analisis saya:

1.    Bidang kepegawaian
2.    Bidang perencanaan program
3.    Bidang TU
4.    Bidang Keuangan
5.    Bidang pelayanan medik dan keperawatan
6.    Bidang pemasaran dan rekam medik
7.    Bidang penelitian dan pengembangan


Ilustrasi sistem informasi rumah sakit

Ada 7 bidang yang membutuhkan sistem informasi dan modul-modul nya(sejauh analisis saya). mari kita bahas 1 per 1 :

          Bidang kepegawaian

Di bidang kepegawaian tentunya kita membutuhkan sistem informasi pegawai dimana sistem informasi ini mengelola pegawai yang ada yaitu informasi pegawai dan struktur kepegawaian termasuk absensi pegawai dan mungkin juga gaji pegawai.
Modul yang dibutuhkan:
·        Modul Personalia

          Bidang perencanaan program

Program-program yang ada di RSUD Dr. Soetomo tentunya dapat dibuatkan sebuah sistem informasi khusus dalam hal perencanaannya, karena tentunya dalam sebuah perencanaan terdapat anggaran negara yang mungkin saja menjadi anggaran siluman apabila tidak ada sistem informasi khusus yang menjaga anggaran tersebut. sistem ini dapat dibuat menyerupai sistem e-budgeting milik pemerintah provinsi DKI Jakarta.

          Bidang TU

perlengkapan dan juga asset dari sebuah rumah sakit tentunya banyak, begitu juga dengan obat yang ada, sehingga menurut saya perlu sebuah sistem informasi khusus yang mengatur ketiga hal tersebut, sehingga tidak terjadi kesalahan antara data yang ada dan keadaan riil nya.
Modul yang dibutuhkan:
·        Modul Pengendalian Stok
·        Modul Gudang Obat
·        Modul Floor Stock
·        Modul Produksi Obat
·        Modul Apotek (multi apotek)
·        Modul Laboratorium
·        Modul Radiologi
·        Modul Bank Darah
·        Modul Fisioterapi
·        Modul Rehab Medis
·        Modul Kamar Jenazah
·        Modul Manajemen Dapur
·        Modul Gizi

          Bidang Keuangan

Sudah cukup jelas bahwa keuangan membutuhkan sistem informasi yang dapat terintegrasi dengan SI pegawai dan SI perencanaan program. Diluar itu bidang keuangan juga memerlukan sistem informasi tersebut untuk mengecek arus dana baik dana keluar maupun dana masuk.
Modul yang dibutuhkan:
·        Modul Hutang
·        Modul Piutang
·        Modul Kas-Bank
·        Modul Budgeting
·        Modul Akutansi
·        Modul Penggajian / Payroll

          Bidang pelayanan medik dan keperawatan

Pasien datang dan masih harus menuju bagian registrasi untuk mendaftar, saya rasa hal ini umum terjadi di rumah sakit manapun. dan saya rasa hal ini membutuhkan perubahan berupa sistem informasi registrasi pasien, Mungkin nanti pasien hanya perlu registrasi di sebuah web based aplication yang terintegrasi dengan sistem informasi ini, sehingga ketika pasien datang dia hanya perlu mengambil nomor antrian dan duduk mengantri dengan tenang.
Modul yang dibutuhkan:
·        Modul Loket/Registrasi Pasien
·        Modul Pelayanan Rawat Jalan
·        Modul Pelayanan Rawat Inap
·        Modul UGD
·        Modul IRD
·        Modul Kamar Operasi
·        Modul Persalinan
·        Modul Paviliun
·        Modul Modul Rawat Intensive (ICU/NICU/PICU)
·        Modul Instalasi Hemodelisia

          Bidang pemasaran dan rekam medik

Sistem informasi registrasi diatas, harus diintegrasi kan dengan rekam medik pasien, jadi dokter nantinya hanya perlu login di SI tersebut, dan mencari nama pasien, dan didapatlah rekam medik sang pasien. disini dokter juga dapat mengisi rekam medik terbaru pasiennya, sehingga kita tidak dapat menghemat penggunaan kertas (sebagai media rekam medik yang selama ini sudah ada)
Modul yang dibutuhkan:
·        Modul Medical Check Up
·        Modul Rekam Medik
          Bidang penelitian dan pengembangan

di bidang ini, sistem informasi yang digunakan bertujuan untuk mendata dan memberikan pengetahuan tentang penelitian dan pengembangan di bidang medis yang sudah dilakukan oleh dokter di RSUD Dr. Soetomo
Modul yang dibutuhkan:
·        Modul RSU Pendidikan

Semua bidang yang ada membutuhkan sebuah server untuk menghubungkannya.
Sementara pada masing-masing bidang membutuhkan:

Bidang kepegawaian
Sistem ini dapat dibuat dengan hardware pc/laptop dan mesin absensi sidik jari. 
Bidang perencanaan program
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang TU
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang Keuangan
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang pelayanan medik dan keperawatan
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang pemasaran dan rekam medik
Pembuatan sistem ini dapat menggunakan hardware pc/laptop.
Bidang penelitian dan pengembangan

Pembuatan sistem ini dapat menggunakan hardware pc/laptop.

Senin, 31 Oktober 2016

[7] RSUD Dr. Soetomo Part 2 (contoh studi kasus analsis sistem informasi)

hai semuanya dan selamat datang kembali di blog saya. pada kesempatan ini saya akan melanjutkan pembahasan saya tentang RSUD Dr. Soetomo( part 1 bisa dilihat disini http://adenuar-purnomo.blogspot.co.id/2016/10/5-rsud-dr-soetomo.html).

sebelum membahasnya saya akan menyampaikan sebuah disclaimer.

DISCLAIMER: postingan ini bukanlah sistem informasi yang sebenarnya dipakai di RSUD Dr. Soetomo(kalau ada yang kebetulan sama, ya sudahlah), melainkan hanyalah analisis saya terhadap klasifikasi sistem informasi dan juga teknologi informasi yang digunakan berdasarkan struktur organisasi RSUD Dr. Soetomo



Berdasarkan struktur organisasi di atas, saya dapat menganalisis beberapa sistem informasi yang diperlukan / yang sudah ada di RSUD Dr. Soetomo. Berikut hasil analisis saya:

  1. Bidang kepegawaian
  2. Bidang perencanaan program
  3. Bidang TU
  4. Bidang Keuangan
  5. Bidang pelayanan medik dan keperawatan
  6. Bidang pemasaran dan rekam medik
  7. Bidang penelitian dan pengembangan

Ada 7 bidang yang membutuhkan sistem informasi(sejauh analisis saya). mari kita bahas 1 per 1 :

          Bidang kepegawaian

Di bidang kepegawaian tentunya kita membutuhkan sistem informasi pegawai dimana sistem informasi ini mengelola pegawai yang ada yaitu informasi pegawai dan struktur kepegawaian termasuk absensi pegawai dan mungkin juga gaji pegawai. Sistem ini dapat dibuat dengan hardware pc/laptop dan mesin absensi sidik jari.

          Bidang perencanaan program

Program-program yang ada di RSUD Dr. Soetomo tentunya dapat dibuatkan sebuah sistem informasi khusus dalam hal perencanaannya, karena tentunya dalam sebuah perencanaan terdapat anggaran negara yang mungkin saja menjadi anggaran siluman apabila tidak ada sistem informasi khusus yang menjaga anggaran tersebut. sistem ini dapat dibuat menyerupai sistem e-budgeting milik pemerintah provinsi DKI Jakarta. Pembuatan sistem ini dapat menggunakan hardware pc/laptop.

          Bidang TU

perlengkapan dan juga asset dari sebuah rumah sakit tentunya banyak, begitu juga dengan obat yang ada, sehingga menurut saya perlu sebuah sistem informasi khusus yang mengatur ketiga hal tersebut, sehingga tidak terjadi kesalahan antara data yang ada dan keadaan riil nya.

          Bidang Keuangan

Sudah cukup jelas bahwa keuangan membutuhkan sistem informasi yang dapat terintegrasi dengan SI pegawai dan SI perencanaan program. Diluar itu bidang keuangan juga memerlukan sistem informasi tersebut untuk mengecek arus dana baik dana keluar maupun dana masuk.

          Bidang pelayanan medik dan keperawatan

Pasien datang dan masih harus menuju bagian registrasi untuk mendaftar, saya rasa hal ini umum terjadi di rumah sakit manapun. dan saya rasa hal ini membutuhkan perubahan berupa sistem informasi registrasi pasien, Mungkin nanti pasien hanya perlu registrasi di sebuah web based aplication yang terintegrasi dengan sistem informasi ini, sehingga ketika pasien datang dia hanya perlu mengambil nomor antrian dan duduk mengantri dengan tenang.

          Bidang pemasaran dan rekam medik

Sistem informasi registrasi diatas, harus diintegrasi kan dengan rekam medik pasien, jadi dokter nantinya hanya perlu login di SI tersebut, dan mencari nama pasien, dan didapatlah rekam medik sang pasien. disini dokter juga dapat mengisi rekam medik terbaru pasiennya, sehingga kita tidak dapat menghemat penggunaan kertas (sebagai media rekam medik yang selama ini sudah ada)

          Bidang penelitian dan pengembangan

di bidang ini, sistem informasi yang digunakan bertujuan untuk mendata dan memberikan pengetahuan tentang penelitian dan pengembangan di bidang medis yang sudah dilakukan oleh dokter di RSUD Dr. Soetomo


(6.5) [Revisi lagi] CRC card, class diagram, sequensial diagram dan penerapan aplikasi + component diagram dan deployment diagram

1. CRC card


2.Use Case Diagram

3.Class diagram


4. Sequensial diagram









5.Activity Diagram



6. Penerapan


#include<string>
using std::string;
using std::getline;

#include <vector>
using std::vector;

#include <iostream>
using std::cout;
using std::endl;
using std::cin;

#include <iomanip>
using std::setw;
using std::left;
using std::right;

#include <fstream>
using std::ofstream;
using std::ifstream;

#include <sstream>
using std::stringstream;

#include <ctime>

class List {
    private:
    string _identification;
    string _category;
    string _itemDescription;
    string _price;
    string _quantity;
    string _total;
    string _newprice;
    string _VAT;
    public:
    List();
    List(string id, string category, string itemDescription, string price);
    List(string id, string quantity, string price, string total, string VAT );
    string toString();
void display();
    void Bill();
};
class ListItem {
    private:
    int _identification;
    string _price;
    vector<List> _items;
    vector<List> _itemSlot;
    public:
    void displayAll();
    void ListBill();
    void getFile();
    void showMenu();
    void StopProgram();
};
class Menu {
    private:
    ListItem _Li;
    string _file;
    public:
    Menu();
    bool select();
};

const string currentDateTime() {
    time_t     now = time(0);
    struct tm  tstruct;
    char       buf[80];
    tstruct = *localtime(&now);
    strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
    return buf;
}


//***************************************************************
// Displaying and string data to the document
//****************************************************************
List::List(string id, string itemDescription, string category, string price)
:_identification(id), _itemDescription(itemDescription), _category(category), _price(price){      }
List::List(string id, string quantity, string price, string total, string VAT)
:_identification(id), _quantity(quantity), _price(price), _total(total), _VAT(VAT) { }
string List::toString(){
    return string(_identification + ":" + _quantity +  ":" + _price + ":" + _total + ":" +  _VAT);
}
void List::display(){
    cout << _identification << " " << left << _category << " " << left << _itemDescription << " " << left << _price <<setw(2) << left << endl;
}
void List::Bill(){
    cout << _identification << " " << _quantity << " " << _price << " " <<  _total << " " << _VAT;
}
void ListItem::displayAll(){
    for(size_t i = 0; i < _items.size(); ++i){
        _items[i].display();
    }
    cout << endl;
}
//***************************************************************
// Read file
//****************************************************************
void ListItem::getFile(){
    //Opens the file and reads the file
    char ch;
    while(ch = 'y')
    {
        cout << "Enter File name: ";
        system("color 1f");
        string name = "menu";
        cin >> name;
        name += ".txt";
        ifstream fin(name.c_str());
        if(fin){
            ch = 'n';
            while(!fin.eof()){
                string IdNo;
                getline(fin,  IdNo, ':'); // Finds "IDNO://
                string category;
                getline(fin, category, ':');
                string itemDescription;
                getline(fin, itemDescription, ';');
                string price;
                getline(fin, price);
                if(!fin.eof()){
                    _items.push_back(List(IdNo, category, itemDescription, price));
                }
            }
        }
        if (ch = 'n')
        {
            break;
        }
    }
}
//***************************************************************
// Allows other functions to link up with each other!!
//****************************************************************
Menu::Menu(){
    select();
}
//***************************************************************
// Entering the details
//****************************************************************
void ListItem::showMenu(){


system ("cls");
    int ch, quantity;
    double price,total, VAT;
    char choice;
char buffer[80];

string _quantity, _total, _VAT, _ch;


    // User enters data

cout<<"\nn============================";
    cout<<"\n PLACE YOUR ORDER";
    cout<<"\n============================";
    cout << "\nEnter the ID, Quantiy and Price" <<endl;
    while((choice = 'y') || (choice = 'Y'))
    {
        cout << "\nItem ID: ";
    cin >> ch;
        cout << "\nQuantity; ";
        cin >> quantity;
        cout << "\nprice: ";
        cin >> price;
   
total = price * quantity;
        VAT = total * 1.2;
   
cout << "\ntotal: " << total << endl;
        cout << "\nVAT: " <<VAT << endl;
 
 
    stringstream  stream;
       stream << quantity;   //String Streams, passes data into the attribute in the class which then gets stored in a vector
       stream >> _quantity;
       stringstream stream2;
       stream2 << price;
       stream2 >> _price;
       stringstream  stream3;
       stream3 << total;
       stream3 >> _total;
      stringstream  stream4;
     stream4 << VAT;
     stream4 >> _VAT;
     stringstream  stream5;
     stream5 << ch;
     stream5 >> _ch;
 
    cout << "\nCurrent time: ";
     cout << currentDateTime() << std::endl;
     getchar();
        _itemSlot.push_back(List(_ch, _quantity, _price, _total, _VAT) );
   cout << "\n To continue press Y, else to quit press N " << endl;
        cin >> choice;
cin.ignore();

        if(choice == 'n' || choice == 'N')
        {
            system("cls");
break;
        }
    }
}
//********************************************************************************************************
// Gets the information he user enters which is then sent to endMenu when the close it and it saves the file
//**********************************************************************************************************
void ListItem::ListBill(){
    cout << "ItemID" << " Quantity" << " Price" << " total" << "VAT" << endl;
    for(size_t i = 0; i < _itemSlot.size(); ++i){
        _itemSlot[i].Bill();
    }
    cout <<endl;
}
void ListItem::StopProgram(){
system("color 2f");
    string _bill = "Transaction";  // For some unknown strange reason, it saves the file as 5.txt
    cout << right <<  "Bill has been saved " <<endl;
    _bill += ".txt";
    ofstream fout(_bill.c_str());
    for(size_t i = 0; i < _itemSlot.size(); ++i) {
        fout << i+1 << " : " << _itemSlot[i].toString() << endl;
    }
    fout.close();
    cout << endl;
}
bool Menu::select(){
    system("color 1f");
cout << "Menu====\n" << endl;
    cout << "(1) Read a file \n(2) Add a "
    "bill \n(3)  Display Bill\n(4) Display all data\n(5) Save file and leave  the Program\n" << endl;

cout << "Select: ";
    char ch;
    cin >> ch;
    cin.ignore(256, '\n');
    cout << endl;
    switch(ch)
do
{
        case '1' : _Li.getFile();
        return true;
        case '2' : _Li.showMenu();
        return true;
        case '3' : _Li.ListBill();
        return true;
        case '4': _Li.displayAll();
        return true;
        case '5': _Li.StopProgram();
        return false;
default : cout << "Enter an '1', '2' ,'3', '4' or '5' without"
        " the qoutes.n";
        return true;
}while(ch!=1 || ch !=2 || ch != 3 || ch !=4 || ch!=5);

}
int main(){
    //all of the functions are run through menu4
    Menu menu;
    while(menu.select()) {
        // empty body
    }
    return 0;
}


7. Component Diagram


8. Deployment diagram