Data Pengusul
Pengusul Nama: Tim H2VS Jabatan: Mahasiswa S2
- Santi Fitri A.S 23208304
- Zakia Lutfiyani 23208316
- Siti Amanah 23208347
- Gina Indriani 23208349
Tanggal: 03 -0 7 - 2010 Tanda-tangan:
Lembaga: Program Magister Teknik Elektro
Opsi Teknologi Informasi
Bidang Khusus Teknologi Media Digital and Game
Alamat: Lab. Sistem Kendali & Komputer, Labtek VIII, STEI – ITB
Jl. Ganesha No.10 Bandung
Telepon: Faks: Email:
081385882688 zakia.lutfiyani@gmail.com
DAFTAR ISI
Tahap system design merupakan merupakan tahap awal dari fase sintesis dalam
siklus hidup pengembangan produk (product development life cycle). Tahap ini
disebut sebagai tahap awal fase sintesis karena sejak di tahap ini sudah mulai
digunakan pendekatan bottom up, yaitu memanfaatkan semua rincian persyaratan
dan kebutuhan yang telah dispesifikasikan pada tahap analisis sebelumnya untuk
1
Penjelasan mengenai prototipe produk ini pernah diuraikan pada dokumen B100
membentuk suatu sistem CABbaGe yang utuh. Domain yang digunakan di tahap ini
bukan lagi domain bisnis (business domain) yang menggunakan sudut pandang
pengguna (user), namun telah masuk ke domain aplikasi (application domain) yang
menggunakan sudut pandang pengembang (developer) aplikasi.
1.3 Referensi
[1] Tim H2VS, B100-virtual surgeryver02.doc, LSKK-ITB, 2009
[2] Tim H2VS, B200-virtual surgeryver01.doc, LSKK-ITB, 2009
[3] Tim H2VS, B300-virtual surgeryver01.doc, LSKK-ITB, 2010
[4] G. Sparks, The Use Case Model, UML Case Tool by Sparks System, 2000
[5] Malan, Ruth, and Bredmeyer, Dana, Functional Requirement and Use Cases.
Hewlett Packard Company, Bredmeyer Consulting,
http://www.digilife.be/quick references/PT/ Functional%20Requirements
%20and%20Use%20Cases.pdf, 2008
[6] http://www.ambysoft.com/essays/userInterfaceDesign.html, diakses tanggal 2
Juli 2007
[7] Fishwick, Paul A., Computer Simulation: The Art and Science of Digital World
Construction, http://www.cis.ufl.edu/~fishwick/introsim/paper.html, 28 Juni
2008
[8] Anonymous, http://www.ist.ucf.edu/background.htm, diakses tanggal 21 juni
2008
Berangkat dari skenario setiap fungsi dasar yang terdapat di bagian Rancangan
Fungsional di B300, dan dari karakteristik entitas-entitas sistem yang terdapat di
bagian Rancangan Struktural di dokumen yang sama, pada tahap ini
diimplementasikan behavior/perilaku dinamis entitas-entitas tersebut yang
tergabung dalam beberapa modul sistem Simulator CABbaGe. Selain itu juga akan
disampaikan rencana pengujian dan hasil pengujian untuk modul tersebut.
Macam Data
Rancangan Data yang digunakan antara lain :
1. Data konfigurasi simulasi, didapat setelah pengguna melakukan setting
konfigurasi simulasi yang akan dijalankan. Data ini meliputi data konfigurasi
yang ingin dijalankan, termasuk data setting metoda yang akan disimulasikan.
Jika pengguna tidak menset konfigurasi, sistem akan menggunakan konfigurasi
default mulai simulasi pada menu latihan dan metoda pembedahan yang akan
dijalankan adalah off-pump.
2. Data tindakan dari pengguna terhadap setiap kasus yang dihadapi, dapat berupa
instruksi perubahan obyek posisi X, Y, Z maupun parameter-parameter medis
yang kemudian divisualisasikan.
3. Data respon sistem terhadap tindakan yang diberikan oleh pengguna,
berdasarkan alasan medis, ataupun matematika fisika.
List Environtment
Pada bagian ini didaftar semua environtment yang mungkin dibutuhkan dan
dikembangkan untuk dipertimbangkan dalam manajemen kompleksitas. Artinya,
dalam implementasinya dapat lebih disederhanakan sesuai dengan kebutuhan.
Virtual Environment pada aplikasi Simulator CABbaGe
- Ruangan dilengkapi AC atau kipas angin
- Bed (Tempat Tidur) yang digunakan oleh pasien pada proses pembedahan
- Kursi untuk operator
- Pasien yang akan dibedah
- Dokter bedah jantung atau calon dokter bedah jantung
- Tiang infus
- Tensimeter dan stetoskop binaural
- Lampu sorot yang dapat diatur (fleksibel)
- Tempat Sampah
- Tangan Penolong Pembedahan
- Alat-alat pembedahan (klem penjepit, pisau bedah, gunting, sterna shaw,
jarum suntik, pinset, kapas, alcohol 70 %, waskom, alat injeksi, , infuse, lap,
benang, kain penutup/duk, baju ganti pasien, baju steril, oksigen)
Keterangan: model 3D dibuat dengan 3DSMax
Organ jantung (detak dan perubahan bentuk organ) serta pembuluh darah
dimodelkan dan dipresentasikan kepada user melalui tampilan-tampilan grafis dan
audio. Representasi berupa visualisasi ini tidak hanya dalam bentuk objek tiga
dimensi, namun juga diharapkan dapat mewakili karakteristik alami organ jantung,
dalam hal ini sistem pembedahan jantung.
Interaksi pengguna dengan model visual jantung (misal, pengirisan obyek, tusukan
jarum, dan pemotongan obyek) jika tidak dapat secara default diwakili oleh
penggunaan perangkat mouse, keyboard, ataupun joystick, akan diwakilkan pada
tampilan grafis dan suara (atau audio visual keluaran).
Untuk mengatasi hal ini, dengan teknologi komputer, ditawarkan suatu alternatif
bagi pembelajaran pembedahan secara virtual yang disebut dengan Virtual Surgery.
Untuk keperluan tersebut, dirancanglah sebuah aplikasi simulasi yang dinamakan
Simulator CABbaGe.
Pada awalnya tim Human Heart Virtual Surgery (H2VS) berencana membuat suatu
aplikasi pembelajaran (e-learning) 3 dimensi dalam bentuk simulator. Simulator
CABbaGe (simulator bedah jantung koroner) ini secara umum merupakan teknik
virtual reality yang mensimulasikan prosedur pembedahan, yang membantu ahli
bedah memperbaiki rencana pembedahan dan berlatih proses pembedahan dengan
model 3D. Hasil simulator pembedahan dapat dievaluasi sebelum pembedahan
dilakukan terhadap pasien sebenarnya. Ini akan membantu ahli bedah memperoleh
gambaran yang jelas terhadap hasil pembedahan. Jika ahli bedah menemukan
beberapa kesalahan, ia akan dapat memperbaikinya dengan mengulangi prosedur
pembedahan berkali-kali sampai menghasilkan hasil akhir yang sesuai dengan
parameter hasil pembedahan yang baik. Ahli bedah juga dapat mengamati anatomi
dari berbagai sudut.
1. Tahapan awal
Masuk aplikasi.
Pemilihan konfigurasi (tutorial, latihan, atau ujian).
Pemilihan metoda (on-pump atau off-pump).
Pemilihan guider (suara atau teks).
2. Tahapan teknis pembedahan
Persiapan ruang bedah berikut peralatannya.
Anestesi pasien.
Pembelahan jaringan dada, sternum, dan perikardium.
Pemasangan mesin pompa jantung (on-pump).
Pemilihan pembuluh vena/arteri dari tangan, kaki, atau mamari.
Pemotongan pembuluh yang dipilih.
Pencangkokkan pembuluh yang telah dipilih ke area pembuluh yang
tersumbat.
Pencabutan mesin pompa jantung.
Penutupan perikardium, sternum, dan jaringan dada.
3. Tahap akhir
Penawaran untuk pindah ke konfigurasi ujian, otomatis ditawarkan sistem
kepada user.
Keluar aplikasi (untuk user yang tidak menginginkan masuk ke konfigurasi
ujian).
Aplikasi ini dibangun menggunakan framework yang dinamakan SOFA, sebuah
framework baru yang mulai dikenalkan pada tahun 2007. Adapun untuk pembuatan
interface dari aplikasi yang dirancang, SOFA dapat dijadikan sebagai library
eksternal yang diintegrasikan pada perangkat lunak pembuat interface.
Dari ide awal ini, diperlukan banyak perangkat maupun sumber acuan guna
mendukung perancangan tersebut, yang di antaranya adalah ilmu yang komprehensif
tentang pembedahan jantung, perangkat haptic untuk mendukung tahapan teknis
pembedahan, dokumentasi SOFA yang lengkap sebagai sumber acuan pembentuk
simulasi, serta perangkat komputasi yang memadai. Untuk mengatasi hal tersebut,
maka dibuatlah penyederhanaan produk sebagai berikut.
Aplikasi dibatasi dengan tidak melibatkan tahapan teknis yang menyeluruh serta
pembuatan interface aplikasi simulator CABbaGe. Hal ini dilakukan karena sarana
dan prasarana serta waktu pengerjaan produk yang terbatas.
Hal utama yang membatasi yaitu pertimbangan kompleksitas agar lebih terjangkau
untuk diaplikasikan menjadi suatu simulator. Sedangkan pemodelan soft body
dengan sistem mass-spring sendiri mempunyai keterbatasan-keterbatasan antara
seperti di bawah ini.
1. Dua buah obyek soft body yang bersinggungan tidak dapat menangani
tumbukan sehingga akan tembus. Hal ini disebabkan obyek soft body pada
dasarnya tidak berupa obyek padat (solid), tetapi berupa susunan partikel-
partikel bermassa yang saling dihubungkan dengan pegas semu. Jadi
sebenarnya banyak ruang kosong. Itulah sebabnya tumbukan antar dua obyek
soft body tidak tertangani.
2. Sulit menemukan parameter soft body yang sesuai untuk pemodelan,
sehingga kurang merepresentasikan sifat material yang dimodelkan.
void
DetakSinusForceField<DataTypes>::addTriangleSurfacePressure(VecDeriv
& f, const VecCoord& x, const VecDeriv& /*v*/, const Real& pressure)
{
typedef BaseMeshTopology::Triangle Triangle;
if ( isInPressuredBox(x[t[0]]) &&
isInPressuredBox(x[t[1]]) && isInPressuredBox(x[t[2]]) )
{
if (m_mainDirection.getValue() != Deriv())
{
Deriv n = ab.cross(ac);
n.normalize();
Real scal = n * m_mainDirection.getValue();
p *= fabs(scal);
}
f[t[0]] += p;
f[t[1]] += p;
f[t[2]] += p;
}
}
}
typename DetakSinusForceField<DataTypes>::Real
DetakSinusForceField<DataTypes>::computeMeshVolume(const VecDeriv&
/*f*/, const VecCoord& x)
{
typedef BaseMeshTopology::Triangle Triangle;
Real volume = 0;
int i = 0;
void
DetakSinusForceField<DataTypes>::addTriangleSurfacePressure(VecDeriv
& f, const VecCoord& x, const VecDeriv& /*v*/, const Real& pressure)
{
typedef BaseMeshTopology::Triangle Triangle;
if ( isInPressuredBox(x[t[0]]) &&
isInPressuredBox(x[t[1]]) && isInPressuredBox(x[t[2]]) )
{
if (m_mainDirection.getValue() != Deriv())
{
Deriv n = ab.cross(ac);
n.normalize();
Real scal = n * m_mainDirection.getValue();
p *= fabs(scal);
}
f[t[0]] += p;
f[t[1]] += p;
f[t[2]] += p;
}
}
}
Setelah file-file tersebut disimpan, kemudian dibuatlah suatu file scn sebagai file
pembangun utama dalam SOFA (lihat Lampiran). Dari langkah-langkah yang
tersebut di atas, didapatlah hasil dengan antar muka seperti di bawah ini.
Keterangan.
Kiri: model visual.
Kanan: model wire.
Gambar 1 merupakan tampilan antar muka obyek jantung dari sisi view. Bagian ini
diperuntukkan untuk melihat tampilan gambar, baik dari segi visual, behaviour,
collision, maupun mapping. Berikut merupakan tampilan obyek jantung dilihat
secara detil dari berbagai model.
Fixed
constraint
Keterangan.
Kiri atas: model behavior jantung.
Kanan atas : model collision jantung.
Kiri bawah : model mapping jantung.
Kanan bawah : enam titik fixed constraint pada obyek jantung.
Berdasarkan algoritma yang telah dirancang, untuk menghitung titik posisi ruang
yang terletak pada segment waktu digunakan pendekatan fungsi garis lurus dan
interpolasi linier yang dituangkan dalam persamaan, maka implementasi dalam
bahasa pemrogramannya seperti di bawah ini.
Pada program diatas //set the motion to the Dofs adalah menampilkan posisi
dan orientasi yang baru, tetapi terlebih dahulu dihitung sudut rotasinya
menggunakan metoda quaternion yang diimplementasikan dalam bahasa
pemrograman seperti di bawah ini.
Didalam SOFA terdapat file .scn yang berfungsi sebagai file pembangun utama.
Ketiga file .xml diatas adalah pendukung dari file .scn. Untuk simulasi gerak pada
SOFA, diimplementasikan file .scn tersebut sehingga diperoleh tampilan antar muka
seperti di bawah ini.
Gambar 3 merupakan tampilan untuk simulasi gerak pada SOFA, dan belum
diintegrasikan pada simulator CABbaGe. Pada gambar diatas tampak 3 sumbu
berwarna, sumbu tersebut mewakili sumbu-sumbu pada bidang kartesius. Sumbu x
diwakili oleh sumbu berwarna merah, sumbu y diwakili oleh sumbu berwarna hijau
dan sumbu z diwakili oleh sumbu berwarna biru. Apabila simulasi gerak telah
diintegrasikan pada simulator CABbaGe, maka diperoleh tampilan antar muka
seperti di bawah ini.
Gambar 4 Simulasi gerak pada simulator CABbaGe
Algoritma dari program yang akan dijalankan ditampilkan dalam bentuk flowchart
Inisialisasi titik, sisi,
sebagai berikut.
permukaan, volume
t=0
t = t +1
Tidak
Apakah t <
END
blade movement
time?
Collision detection
Ya
Remove Tidak
Apakah terjadi
tetrahedron
collision?
Ya
Aplikasi rumus perhitungan deteksi tabrakan pada program adalah sebagai berikut.
template<class Sphere>
bool DiscreteIntersection::testIntersection( Sphere& sph, Triangle&
triangle)
{
double EPSILON = 0.00001;
//Vertices of the triangle:
Vector3 p0 = triangle.p1();
Vector3 p1 = triangle.p2();
Vector3 p2 = triangle.p3();
// Center of the sphere
const Vector3 sphCenter(sph.center());
// Radius of the sphere
const double r = sph.r();
//Normal to the plane (plane spanned by tree points of the triangle)
Vector3 normal = cross( (p1 - p0), (p2 - p0) );
normal.normalize();
//Distance from the center of the sphere to the plane.
double distance = sphCenter*normal - normal*p0;
//Projection of the center of the sphere onto the plane
Vector3 projPoint = sphCenter - normal*distance;
//Distance correction in case is negative.
if (distance < 0.0)
distance = -distance;
//Distance to the sphere:
distance -= r;
//If the distance is positive, the point has been proyected outside
//the sphere and hence the plane does not intersect the sphere
//and so the triangle (that spanned the plane) cannot be inside the
sphere.
if (distance > EPSILON)
{
return false;
}
Data-data yang tersimpan pada setiap kelas pada node TOCUT akan dirinci sebagai berikut.
Simulasi ini belum dapat digunakan secara interaktif, karena pergerakan pisau diatur dengan
menggunakan metoda trayektori. Data mengenai posisi pisau pada waktu tertentu disimpan di
kelas LinearConstraint pada node BLADE.
Obyek-obyek yang terlibat dalam simulasi diletakkan dalam child node. Berikut ini adalah
obyek-obyek yang diperlukan beserta komponen-komponen yang diperlukan.
1. Pembuluh darah
2. Pisau
Komponen-komponen pada node pembuluh darah dan node pisau tidak dibahas di sini
karena bukan merupakan bagian dari tesis ini.
3. Darah
Node adalah bagian penting dari simulasi bleeding dan diberi nama Blood.
Pada node ini harus terdapat komponen yang nantinya bertanggung jawab terhadap
berjalannya simulasi bleeding.
Komponen yang menangani algoritma SPH yaitu SPHFluidForceField
Pada komponen ini semua parameter yang berhubungan dengan inisialisasi SPH
ditentukan yaitu: radius sebuah partikel (smoothing length), massa partikel, tekanan,
densitas, viskositas, dan tegangan permukaan.
Komponen yang menangani visualisasi bleeding
Komponen ini merupakan child node dari node Blood. Komponen yang berhubungan
untuk visualisasi adalah OglModel, dan FluidSurfaceMapping yang di dalamnya
Versi Done To Do
Versi I, dengan pengembangan yang diharapkan:
A Tampilan 3D dari objek pembedahan -
B Tampilan toolbar yang mewakili entitas konfigurasi pointer,
-
entitas konfigurasi sistem, entitas alat bantu
C Penerapan deformable object pada suatu yang menyerupai
√
jaringan atau organ manusia
Versi II, dengan pengembangan yang diharapkan:
Penerapan deformable object pada jantung √
Pemodelan matematis untuk denyut jantung √
Pemodelan matematis untuk tool movement √
Pemodelan matematis untuk cutting √
Pemodelan matematis untuk bleeding √
Sistem dapat menerima input lewat interaksi yang diwakili oleh
entitas Dokter bedah, serta dapat memberikan output audio- -
visual hasil pemrosesan terhadap input tersebut
Versi III, dengan pengembangan yang diharapkan: -
Sistem dapat mensimulasikan proses pemotongan pembuluh
√
darah