3D printani ampularij za lijekove u liječničkoj ordinaciji

3D printani ampularij za lijekove u liječničkoj ordinaciji smješten u ladicama.
🏥
Predstavljamo praktično i ekonomično rješenje za izradu ampularija po mjeri za liječničke ordinacije uz pomoć tehnologije 3D printanja. U članku ćete pronaći i programsku skriptu pomoću koje možete izraditi vlastite 3D modele ampularija.

U zdravstvenim ustanovama, bilo da se radi npr. o ordinacijama u sklopu primarne zdravstvene zaštite ili bolničkim odjelima, medicinsko osoblje svakodnevno koristi lijekove u ampulama. Ampule su male staklene ili plastične bočice koje se koriste za pohranjivanje lijekova u obliku tekućine ili praška. Ovisno o djelatnosti, ali i važećim pravilnicima, svako radilište mora uvijek na raspolaganju imati dovoljnu količinu specifičnih ampuliranih lijekova.

Uobičajeno skladištenje i korištenje ampula

Na tržištu postoji veliki broj lijekova u ampulama. Ampule se proizvode u nekoliko različitih veličina (promjer i visina), a razlikuju se i po izgledu naljepnice s osnovnim informacijama o lijeku. Također, identične lijekove ponekad proizvodi nekoliko različitih proizvođača. Ampule su pakirane u kartonskim kutijama s različitim brojem ampula (najčešće 5 ili 10) na kojima su također otisnute informacije o lijeku i proizvođaču.

Primjer uobičajenih ampula u kartonskom pakiranju.
Primjer lijeka u ampula u uobičajenom kartonskom pakiranju

Ampulirani lijekovi se u orginalnim kutijama najčešće skladište u bolničkoj ljekarni ili u nekom drugom prostoru predviđenom za čuvanje zaliha lijekova. Međutim manja količina ampula se također sprema u prostorijama u kojima se lijekovi primjenjuju, poput ordinacije ili jedinice intenzivnog liječenja, kako bi bili odmah dostupni za primjenu. Vrlo često se i u ovom slučaju lijekovi spremaju u svojim orginalnim kutijama, npr. u ormarima sa staklenim vratima ili pak u različitim zatvorenim spremnicima.

Takva praksa ima brojnih nedostataka, a ponekad može doprinijeti i ozbiljnim pogreškama koje mogu ugroziti zdravlje pacijenta. Neki od problema koji se pojavljuju uslijed nefunkcionalnog ampularija su:

  • nepreglednost u traženju određenog lijeka,
  • loš uvid u stanje zaliha,
  • promjenljiva pozicija specifičnog lijeka,
  • podložnost izboru krivog lijeka, i slično.

Sve to može rezultirati s nepouzdanim stanjem zaliha (previše ili premalo ampula na zalihi, istek roka korištenja i sl.), gubitku vremena prilikom traženja lijeka, većim rizikom od nedostatka lijeka, uzimanjem krivog lijeka ili lijeka kojem je istekao rok trajanja.

Primjer nefunkcionalne organizacije ampuliranih lijekova na polici ormara u liječnikoj ordinaciji.
Primjer nefunkcionalne organizacije ampuliranih lijekova na polici ormara u liječnikoj ordinaciji

Na tržištu postoje rješenja u obliku specijalnih uređaja ili ormarića, pa čak i robotskog manipuliranja ampuliranim lijekovima. Takva rješenja imaju puno prednosti, ali i nedostatke - skupa su, a time i nedostupna većini ordinacija, te u pravilu nisu mobilna, barem ne za terenski rad.

Izazov: primjenom 3D printera izraditi optimalan ampularij za liječničku ordinaciju

Motiv za naše rješenje ampularija pojavio se iz potrebe za organizacijom ampuliranih lijekova u Zdravstvenoj ustanovi Fiumed iz Rijeke. U sklopu Fiumeda djeluje ordinacija obiteljske medicine sa svojim specifičnim potrebama za vrstom i količinom ampuliranih lijekova.

Naš primarni cilj bio je izraditi jednostavan, cjenovno pristupačan i što pouzdaniji način organizacije i smještaja ampula u ordinaciji Fiumeda. Dodatno smo željeli ponuditi rješenje za izradu varijacija ampularija po mjeri, kako bi se isti mogao prilagođavati različitim radilištima, namještaju i potrebama korisnika.

Teorijska i znanstvena podloga ideje

Iako ova problematika na prvi pogled izgleda trivijalno, objavljen je veći broj stručnih i znanstvenih radova koji se ozbiljno bave tematikom organizacije lijekova u zdravstvenim ustanovama radi unaprijeđenja rada i izbjegavanja grešaka. U praksi postoje različiti pristupi s obzirom na konkretan scenarij okoline i korištenja (npr. jedinica intenzivnog liječenja i hitni medicinski prijem, ili ordinacija obiteljske medicine), ali zajednički cilj im je predložiti organizaciju pohrane ampularnih lijekova koja će što bolje udovoljiti sljedećim zahtjevima:

  • da su lijekovi jasno vidljivi, uključujući i njihov naziv, te lako dostupni,
  • da ampule nisu u zatvorenom originalnom pakiranju čime se dobiva na vremenu potrebnom za otvaranje ambalaže,
  • da pojedini lijekovi idealno uvijek budu na istom mjestu, neovisno o količini i vrsti,
  • da se pregledno vidi kojih ampula ima dovoljno, a kojih eventualno nedostaje, s obzirom na propisani protokol posjedovanja i potreba,
  • da ampularij onemogući spremanje pojedinog ampuliranog lijeka na krivu poziciju koliko god je to moguće.

Zahtjevi Fiumed ordinacije

Djelatnici ordinacije obiteljske medicine u Fiumedu odlučili su svoje ampulirane lijekove smjestiti u dvije ladice s mogućnošću zaključavanja. Ladice se nalaze unutar ormara u sestrinskoj sobi te su lako dostupne tijekom uobičajenog rada, ali i u slučaju hitnih intervencija.

Vrsta i količina ampula određena je analizom:

  • pravilnika koji propisuje obavezne lijekove koje svaka ordinacija obiteljske medicine mora imati,
  • nadstandardnim lijekovima koje educirano osoblje koristi za specifičnu terapiju,
  • broja pacijenata upisanih u ordinaciju i dinamike potrošnje pojedinih lijekova.

Tehnička realizacija

3D modeliranje ampularija i prototipiranje

Nakon što smo skupili potrebne informacije o dimenzijama ladica i vrsti lijekova, te broju i dimenzijama njihovih ampula, započeli smo s izradom prvih 3D modela i prototipova ampularija. Zbog boljeg korisničkog iskustva i upotrebljivosti, te specifičnosti tehnologije 3D printanja, odlučili smo se za modularni ampularij umjesto ampularija izrađenog u jednom komadu.

Ampularij smo podijelili u 24 modula identičnih vanjskih dimenzija i oblika, prema količini potrebnih lijekova i dimenzijama ladica. Dizajn modula smo kroz niz iteracija usavršavali korekcijama modela i praktičnim isprobavanjem 3D printanih prototipova. Nakon što smo definirali osnovni dizajn modula, odnosno njegov vanjski izgled i dimenzije, svaki od njih smo dalje oblikovali prilagođavajući ih ampulama svakog pojedinog lijeka, odnosno odgovarajućim dimenzijama i broju utora. Za ovaj zadatak poslužili smo se OpenSCAD programom za modeliranje.

OpenSCAD

3D model izrađenog držača ampula može se nacrtati u gotovo svakom programu za 3D modeliranje. Međutim, u našem slučaju imali smo preko 20 lijekova čije ampule imaju različite dimenzije i potrebne količine. To znači da smo trebali nacrtati toliko različitih modula, s poželjno pravilnim i vizualno logičnim rasporedom samih utora na modulu. Pri tome se svaka promjena osnovnog modela držača, odnosno njegovih dimenzija i pojedinih detalja (držača, natpisa, kosih stranica i dr.) različito odražava na module različitih ampula.

Modeliranje modula s toliko varijanti ampula bilo bi mukotrpno i dugotrajno u klasičnom programu za 3D modeliranje. Zato smo se odlučili za OpenSCAD, malo drugačiji tip programa za 3D modeliranje. Radi se o besplatnom programu otvorenog koda koji postoji za sve računalne platforme, a ključna značajka mu je da se u njemu ne crta povlačenjem miša (ili sličnog pomagala) i korištenjem gotovih predefiniranih osnovnih geometrijskih oblika kao kod većine takvih programa, već - programiranjem, odnosno matematičkim kreiranjem 2D i 3D oblika, njihovom programskom modifikacijom, translacijom, spajanjem, oduzimanjem, umnažanjem i sličnim operacijama, zbog čega ga i nazivaju "The Programmers Solid 3D CAD Modeller".

Za korištenje OpenSCAD-a nije nužno prethodno poznavanje programiranja, ali je svakako poželjno i predstavlja prednost. Možemo se reći da je čak više poželjno malo bolje poznavanje prostorne geometrije i posjedovanje matematičkog "osjećaja" za 3D crtanje.

Korištenje tog alata se svodi na pisanje koda, odnosno skripte s naredbama. Njegov skriptni jezik sadrži niz naredbi za kreiranje osnovnih 2D i 3D oblika, za njihovo "izvlačenje", premještanje i slične geometrijske postupke, te klasične programerske naredbe poput ponavljajućih petlji, grananja, varijabli i nizova, matematičke operacije i operacije nad znakovnim nizovima. Na CheatSheet stranici može se vidjeti kratki popis svih naredbi i funkcija, a njihovo korištenje je detaljno i s primjerima opisano u korisničkom priručniku.

Ovdje nećemo detaljno objašnjavati korištenje OpenSCAD-a, već ćemo samo objasniti kako smo "isprogramirali" naš ampularij, odnosno kako radi napisana skripta u OpenSCAD-u za generiranje svih modula ovog ampularija. Skriptu objavljujemo kao otvoreni kod pod GPLv3 licencom i može se sukladno tome slobodno proučavati, koristiti i modificirati, uz navođenje izvora i autora.

Skripta za kreiranje 3D modela ampularija

Niže navedenu skriptu za kreiranje 3D modela ampularija možete preuzeti i učitati u OpenSCAD program. Pokretanjem skripte, odnosno pokretanjem renderiranja, dobit ćete model kompletnog ampularija kojeg možete spremiti u standardnom STL formatu za sliceanje i printanje na bilo kojem 3D printeru, uključujući i popularne kućne printere.

Mi smo za 3D printanje koristili printere Prusa Mini i Creality Ender-3. Printanje jednog modula trajalo je oko 5,5 sati, ali smo printali po dva modula u jednom printu. Budući da kompletno renderiranje traje oko 5 minuta (ovisno o jačini računala) i zauzme oko 1,2 GB RAM-a, za brzi pregled modela može se koristiti Preview opcija koja radi gotovo trenutno.

Skriptu možete jednostavno modificirati, izmjenom parametara poput npr. dimenzija samog modula te broja i dimenzija utora za ampule. U skripti su kratki komentari koji objašnjavaju koji dio što radi, a ovo su bitni dijelovi:

  • od 8. do 32. retka je niz (array) koji sadrži popis ampula, njihovu količinu u odgovarajućem modulu, promjer i visinu, te eventualnu korekciju dubine utora; ažuriranjem ove liste moguće je izgenerirati ampularije za gotovo bilo koje ampule koje se koriste na konkretnom radilištu;
  • od 34. do 65. retka definirane su osnovne dimenzije jednog modula, njegovog utora za natpis, držača za hvatanje i ostalog, pri čemu se određene dimenzije računaju relativno na osnovne; te parametre se može promijeniti za drugačije dimenzije ladica, ormarića ili kutije za držanje ampula;
  • od 69. do 121. retka skripte nalazi se petlja koji crta po jedan modul za svaku ampulu u listi s početka skripte, pri čemu je osnovni modul uvijek isti, samo se rade različiti utori, koji se automatski računaju ovisno o količini i dimenzijama ampula tako da razmještaj bude uvijek simetričan i optimalan;
  • od 125. do 195. retka se po uzoru na osnovni modul radi prazan šuplji modul za držanje rinfuzo čepića i sličnih lijekova, s odgovarajućem poklopcem.
💡
Poanta je da se istim programskim kodom može brzo dobiti proizvoljna količina modula s različitim utorima za ampule samo jednostavnim modificiranjem liste ampula i osnovnih parametara modula s početka skripte (uz određena ograničenja poput najvećih ampula ili njihove količine).
// Vials boxes
// GIIK for Fiumed
// V3.2 October 2022
// info@fiumed.hr
// Released under GPLv3 licence

// vials list: name, qty, diameter in cm, height in cm, hole depth correction
vials_list = [
    ["Adrenalin",5,1.2,5.1,0],
    ["Amiodaron",4,1.6,6.9,0],
    ["Atropin",5,1.2,4.7,0],
    ["Aminophylline",4,1.9,8.5,0],
    ["Calcium glukonat",3,2.3,8.5,0],
    ["Dexamethason",10,1.2,4.7,0],
    ["Diazepam",10,1.2,5.7,0],
    ["Diklofenak",10,1.4,6.2,0],
    ["Furesemid",6,1.2,5.8,0],
    ["Flumazenil",2,1.6,6.8,0],
    ["Haloperidol",5,1.2,4.7,0],
    ["Hiosicin butilbromid",10,1.2,6,0],
    ["Ketoprofen",10,1.2,5.7,0],
    ["Kloropiramin",10,1.2,5.4,0],
    ["Lidokain",5,1.6,6.9,0],
    ["Metoklopramid",8,1.2,5.9,0],
    ["Morfin klorid",2,1.2,6,0],
    ["Nalokson",5,1.2,6,0],
    ["Promazin",3,1.2,6,0],
    ["Propafenon",2,2.4,10.1,-3],
    ["Tietilperazin",6,1.2,4.7,0],
    ["Tramadol",6,1.2,5.6,0],
    ["Solu-medrol",4,2.4,6.4,7]
];

// vials params in mm
vial_max = 101;
vial_min = 47;

// box params in mm
box_width = 130;
box_length = 60;
box_height = 40;
bottom_width = box_width*0.85;
bottom_length = box_length*0.85;

// label area
label_width = box_width*0.5;
label_length = box_length*0.24;
label_hole = 2;
label_distance = 2;
text_distance = 9.5;
text_height = 0.5;

// handles - dimensions and base distance
handle_radius = 15;
handle_thickness = 2.5;
handle_offset = 9;

// holes area
holes_width = box_width*0.8;
holes_length = box_length*0.75;

// container box params
container_dist = 4;
cover_height = 3;
cover_clearance = 0.5;

// drawing code
// loop for each vials box in the list
for(v=[0:len(vials_list)-1]) {

    // vials calculations
    vial_diameter = vials_list[v][2]*10;
    vial_height = vials_list[v][3]*10;
    vial_qty = vials_list[v][1];
    vial_rows = vial_diameter*1.3*vial_qty < holes_width ? 1 : 2;
    vial_in = vial_max/3+vials_list[v][4];
    hole_area = holes_width/(vial_qty/vial_rows);

    // move away each drawn box
    translate([0,(box_length+10)*v,0]) {
        difference() {
            // one box
            union() {
                // bootom part of the box
                linear_extrude(2*box_height/3,scale=[box_width/bottom_width,box_length/bottom_length])
                    square([bottom_width,bottom_length],center=true);
                // upper part of the box
                translate([0,0,2*box_height/3])
                    linear_extrude(box_height/3)
                        square([box_width,box_length],center=true);
                // handles
                translate([0,-box_length/2+handle_offset/2,box_height])
                    rotate([90,0,0])
                        linear_extrude(handle_thickness)
                            circle(d=handle_radius,$fn=100);
                translate([0,box_length/2-label_length-label_distance,box_height])
                    rotate([90,0,0])
                        linear_extrude(handle_thickness)
                            circle(d=handle_radius,$fn=100);
            }
            
            // label hole
            translate([0,box_length/2-label_length/2-label_distance,box_height-label_hole])
                linear_extrude(label_hole,scale=[1,0.8])
                    square([label_width,label_length],true);
            
            // label hole vial identification number
            translate([0,box_length/2-text_distance,box_height-label_hole-text_height])
                linear_extrude(0.5)
                    text(str(v+1),halign="center",valign="center",$fn=100);
            
            // vial holes
            for(n=[0:vial_qty-1]) {
                r = n < round(vial_qty/vial_rows) ? 0 : 1;
                i = n % ceil(vial_qty/vial_rows);
                translate([i*hole_area+hole_area/2-holes_width/2+(vial_rows-1)*(r*2-1)*(hole_area/4),(holes_length/(1+vial_rows))*(r+1)-box_length/2,box_height-vial_in])
                    cylinder(vial_in,d=vial_diameter,true,$fn=100);
            }
        }
    }
}

// empty container box with cover

translate([0,-(box_length+10),0]) {
    
    // container box
    
    difference() {
        // box
        union() {
            // bootom part of the box
            linear_extrude(2*box_height/3,scale=[box_width/bottom_width,box_length/bottom_length])
                square([bottom_width,bottom_length],center=true);
            // upper part of the box
            translate([0,0,2*box_height/3])
                linear_extrude(box_height/3)
                    square([box_width,box_length],center=true);
        }
        
        // label hole
        translate([0,box_length/2-label_length/2-label_distance,box_height-label_hole])
            linear_extrude(label_hole,scale=[1,0.8])
                square([label_width,label_length],true);

        // container hole
        translate([0,0,container_dist]) {
            difference() {
                union() {
                    // hole bottom part
                    linear_extrude(2*box_height/3-container_dist,scale=[(box_width-2*container_dist)/(bottom_width-2*container_dist),(box_length-2*container_dist)/(bottom_length-2*container_dist)])
                        square([bottom_width-2*container_dist,bottom_length-2*container_dist],center=true);
                    // hole upper part
                    translate([0,0,2*box_height/3-container_dist])
                        linear_extrude(box_height/3)
                            square([box_width-2*container_dist,box_length-2*container_dist],center=true);
                }
                translate([0,box_length/2-label_length/2-label_distance,0])
                    linear_extrude(box_height)
                        square([box_width,label_length+label_distance*2],center=true);
            }
        }

        // cover hole
        translate([-(box_width-container_dist)/2,-(box_length/2-(handle_offset/2-handle_thickness)/2),box_height-cover_height])
            linear_extrude(cover_height)
                square([box_width-container_dist,box_length-(handle_offset/2-handle_thickness)/2-(label_length+label_distance)-cover_clearance]);
    }

    // cover with handles

    translate([0,-cover_clearance/2,10]) { // move cover above box
        difference() {
            union() {
                // cover plate
                translate([-(box_width-container_dist)/2+cover_clearance/2,-(box_length/2-(handle_offset/2-handle_thickness)/2)+cover_clearance,box_height-cover_height])
                    linear_extrude(cover_height)
                        square([box_width-container_dist-cover_clearance,box_length-(handle_offset/2-handle_thickness)/2-(label_length+label_distance)-2*cover_clearance]);
                // handles
                translate([0,-box_length/2+handle_offset/2-cover_clearance,box_height])
                    rotate([90,0,0])
                        linear_extrude(handle_thickness)
                            circle(d=handle_radius,$fn=100);
                translate([0,box_length/2-label_length-label_distance-cover_clearance,box_height])
                    rotate([90,0,0])
                        linear_extrude(handle_thickness)
                            circle(d=handle_radius,$fn=100);
            }
            // cut handle bottoms
            translate([-(box_width-container_dist-cover_clearance)/2,-(box_length/2-(handle_offset/2-handle_thickness)/2)+cover_clearance,box_height-cover_height-(handle_radius/2-cover_height)])
                linear_extrude(handle_radius/2-cover_height)
                    square([box_width-container_dist-cover_clearance,box_length-(handle_offset/2-handle_thickness)/2-(label_length+label_distance)-2*cover_clearance]);
        }
    }
}
OpenSCAD skripta za generiranje 3D modela kompletnog ampularija

Nekoliko slika renderiranih modula u OpenSCAD-u:

Fiumed ampularij

Fiumed koristi ukupno 24 modula za svoj ampularij. U 23 modula se spremaju različiti ampulirani lijekovi, a 24. modul, koji smo naknadno izradili, ima veći spremnik s poklopcem za spremanje lijekova u obliku čepića. U Fiumed ordinaciji odlučili su se lijekove složiti abecednim redom prema njihovom generičkom nazivu, a one koji se koriste u hitnim stanjima dodatno su istaknuli upotrebom crvene podloge na kartici s imenom lijeka.

Raspored modula može se jednostavno mijenjati zbog njihove uniformnosti. Također je moguće i čitav modul printati u različitim bojama od bijele. Moduli se lagano vade iz ladice te se na taj način lijekovi mogu lako prenositi.

Nedostaci

Dimenzije utora prilagođene su pojedinim odgovarajućim ampulama. Veća ampula ne može ući u manji utor. Manja ampula može ući u veći utor, ali slobodan prostor koji preostaje oko ampule znak je da ona tu ne pripada. Jedini stvarni rizik postoji kod ampula istih dimenzija s različitim lijekovima. Taj problem ovim pristupom nije riješen, ali je rizik sveden na minimum jer je takvih ampula malo, odnosno značajno je manji u odnosu na generičke ampularije kod kojih su svi utori istih dimenzija ili su elastični, pa se svaka ampula može spremiti na bilo koje mjesto.

Pri izradi modula za pojedini lijek, željeli smo dimenzije utora prilagoditi dimenzijama ampule na način da ampula lako uđe u utor, ali nema značajan prostor za pomicanje. Međutim, različiti proizvođači istog lijeka ponekad koriste različite dimenzije ampula. Srećom ovaj problem se događa rijetko, a može se izbjeći narudžbom lijeka od istog proizvođača. Usprkos tome, čak i da se dogodi trajna promjena na tržištu, sve što je potrebno je modelirati i isprintati samo jedan novi modul s drugačijim dimenzijama utora za ampule.

Buduća unaprjeđenja

Tijekom razvijanja ovog ampularija iskristalizirale su se dodatne ideje za unaprjeđenje osnovnog modela i cijelog projekta.

Prenosivost

Medicinsko osoblje ordinacije obiteljske medicine ponekad ima potrebu za korištenjem ampula izvan ordinacije, npr. kod kućnih posjeta ili hitnih intervencija.

Uobičajeno, medicinsko osoblje koristi manje prenosive ampularije u obliku torbica ili kutijica za potrebe rada na terenu. U tom slučaju potrebno je posjedovati dodatan set svih ili barem dijela ampula spremnog samo za terenski rad koji u obiteljskoj medicini nije toliko često kao npr. u izvanbolničkoj hitnoj službi. Ovakav način organizacije predstavlja značajan dodatni trošak, ne samo zbog inicijalne nabave, nego i zbog veće vjerojatnosti za istekom roka trajanja neupotrebljenih ampula. Postojeći držači ampula rađeni su i s idejom da se lako izvade iz ladice, i da svojom konstrukcijom budu ujedno i zaštita za same ampule.

Iz ovog razloga razmišljamo o varijacijama poklopca kojim bi se pojedini postojeći modul mogao zatvoriti i staviti u medicinsku torbu koja se s ostalom opremom nosi na teren. Poklopac mora biti dizajniran na način da se može jednostavno i brzo postaviti, pružati zaštitu od rasipanja i oštećenja samih ampula i biti univerzalan za sve module ampularija.

Pametni ampularij

Ovako dizajnirani moduli funkcioniraju kao pasivni držači ampula, bez ikakve naprednije tehnologije koja bi se omogućilo lakše održavanje zaliha i povećala sigurnost.

Modulima se mogu dodati senzori u utore za ampule koji bi mogli raditi nekoliko provjera. Jedna moguće provjera je prisutnost ampule u ležištu, čime se može automatski pratiti brojno stanje potrebnih ampula i pravovremeno dobiti obavijest i podsjetnik o potrebi dodatne nabavke.

Druga je da se na same ampule doda NFC tag čime se dobiva niz naprednih značajki. NFC tagom svaka ampula dobiva svoju jedinstvenu oznaku poput serijskog broja. Time se baš svaka pojedina ampula može pratiti od trenutka zaprimanja do krajnjeg trenutka korištenja ili zbrinjavanja. Međutim, glavna prednost ostvarila bi se s NFC čitačem u samom utoru ampule. Time bi se moglo provjeriti da li se u tom ležištu nalazi odgovarajuća ampula (točan lijek prema natpisu držača), ali i na neki način (LED žaruljicom odgovarajuće boje) označiti ampulu čiji je datum isteka roka trajanja najbliži i time osoblju sugerirati da je iskoristi prvu. Na ovaj način bi se dodatno povećala sigurnost i štedljivost, odnosno optimalno trošenje lijekova.

Takav "pametni" ampularij pogonili bi elektronički sklopovi i aplikacije za korištenje, u obliku mobilne i/ili web aplikacija.

Web online generator 3D modela ampularija

Ukoliko bi postojao interes, od ovog projekta bi se mogao napraviti online servis za generiranje 3D modela ampularija. Na taj način korisnik ne bi morao raditi u OpenSCAD programu. Na web stranici bi korisnik po vlastitim potrebama definirao osnovne parametre poput veličine modula ili ladice i specifikacija ampula, a pozadinski programski alat bi na osnovu toga izgenerirao STL datoteku spremnu za 3D printere. Zainteresirani?

Zaključak

Ovaj projekt predstavljao je zanimljiv izazov za nalaženje rješenja konkretnog problema, uz dosadašnje iskustvo, postojeće znanje i raspoložive programske alate i uređaje. Činilo nam se zanimljivo i korisno podijeliti još jedan giik projektić sa svijetom.

Sve komentare i sugestije primljene na info@giik.biz ćemo sa zadovoljstvom pročitati i eventualno primjeniti.