xMaulana commited on
Commit
8c5095b
0 Parent(s):

re-commit and delete history

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ __pycache__
2
+ *.pyc
3
+ .env
4
+ *env
.streamlit/config.toml ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [theme]
2
+ base = "dark"
Cek_Kulit.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ from utils import diagnosis
4
+ from PIL import Image
5
+ from torchvision import transforms
6
+
7
+ st.set_page_config(page_title="Pocketmed", page_icon= "💊")
8
+
9
+ st.write("# POCKETMED")
10
+
11
+ st.text("⚕️Selamat datang di Pocketmed!⚕️")
12
+ if "close_warning" not in st.session_state:
13
+ st.warning("Selain cek kesehatan kulit, di Pocketmed ini kamu juga bisa berbincang dengan dokter virtual kami. Silahkan klik tombol di kiri atas layar kalian dan pilih 'Dokter Virtual'", icon="🤖")
14
+
15
+ img_file = st.file_uploader("Masukkan gambar", type=["jpg", "png", "jpeg", "webp"], accept_multiple_files=False)
16
+ st.set_option("deprecation.showfileUploaderEncoding", False)
17
+
18
+
19
+ if img_file is not None:
20
+ st.session_state.close_warning = True
21
+ gbr = Image.open(img_file).resize((224,224)).convert("RGB")
22
+ tensorImage = np.asarray(gbr, dtype=np.uint8)
23
+ st.image(gbr, use_column_width=True,channels= "RGB")
24
+ st.write("klik tombol dibawah untuk memulai prediksi")
25
+ if st.button("Cek kondisi kulit"):
26
+ data = list(diagnosis(tensorImage))
27
+ st.markdown("""<style>
28
+ p {
29
+ text-align: justify;
30
+ }
31
+ </style>""", unsafe_allow_html=True)
32
+ st.markdown('<h4>Hasil diagnosis anda adalah sebagai berikut:</h4>',unsafe_allow_html=True)
33
+ text = f''' <p style="text-indent: 30px;">Dari gambar yang kamu berikan, kami mengklasifikasikannya sebagai {data[0]}.</p>
34
+ {data[2]}
35
+ Berikut adalah tautan yang mungkin bisa kamu baca : <a href="{data[1]}">{data[1]}</a>.</p>
36
+
37
+
38
+ ⚠️ Peringatan : Hasil prediksi bisa saja salah, silahkan hubungi dan kunjungi dokter untuk penjelasan lebih lanjut.
39
+ '''
40
+ st.markdown(text, unsafe_allow_html=True)
41
+ else:
42
+ pass
43
+ else:
44
+ pass
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Compfest Pocketmed
3
+ emoji: ⚕️
4
+ colorFrom: purple
5
+ colorTo: blue
6
+ sdk: streamlit
7
+ sdk_version: 1.25.0
8
+ app_file: Cek_Kulit.py
9
+ pinned: false
10
+ license: gpl-3.0
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
__pycache__/config.cpython-310.pyc ADDED
Binary file (1.72 kB). View file
 
__pycache__/config_path.cpython-310.pyc ADDED
Binary file (427 Bytes). View file
 
__pycache__/skinmodels.cpython-310.pyc ADDED
Binary file (2.78 kB). View file
 
__pycache__/utils.cpython-310.pyc ADDED
Binary file (1.8 kB). View file
 
config.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import torch
3
+ import json
4
+ import torchvision.transforms as T
5
+
6
+
7
+ def read_disease_step(disease_step_path):
8
+ assert os.path.isfile(
9
+ disease_step_path), f"Can't find disease_step config : {disease_step_path}"
10
+ with open(disease_step_path, 'r') as f:
11
+ disease_step = json.load(f)
12
+
13
+ disease_to_link = {disease['name']: disease['link']
14
+ for disease in disease_step}
15
+ disease_to_step = {disease['name']: disease['step']
16
+ for disease in disease_step}
17
+
18
+ return disease_to_link, disease_to_step
19
+
20
+
21
+ def read_label_decode(label_decode_path):
22
+ assert os.path.isfile(
23
+ label_decode_path), f"Can't find label_decode config : {label_decode_path}"
24
+ with open(label_decode_path, 'r') as f:
25
+ labels = f.read().splitlines()
26
+ label_decode = dict()
27
+ for label in labels:
28
+ code, disease = label.split(':')
29
+ label_decode[int(code)] = disease
30
+
31
+ return label_decode, len(label_decode)
32
+
33
+
34
+ def transform_img(im):
35
+ im = torch.tensor(im, dtype=torch.float32).permute(2, 0, 1).unsqueeze(dim=0)
36
+ test_transforms = T.Compose([
37
+ T.Resize((224, 224)),
38
+ T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
39
+ ])
40
+ input = test_transforms(im)
41
+ return im
config_path.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ ## SKIN ----------------------------------------
2
+ SKINMODEL1_PATH = './tools/model_isskin.pth'
3
+ SKINMODEL2_PATH = './tools/model_ishealthy.pth'
4
+ SKINMODEL3_PATH = './tools/model_disease.pth'
5
+ SKINLABEL_DECODE_PATH = './tools/label_decode.txt'
6
+ SKINDISEASE_STEP_PATH = './tools/disease_step.json'
pages/1_Dokter_Virtual.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import openai
3
+ from utils import getMessage
4
+ from dotenv import load_dotenv
5
+ import os
6
+
7
+ load_dotenv()
8
+
9
+ openai.api_key = os.getenv("API_KEY")
10
+
11
+
12
+ st.set_page_config(page_title="Pocketmed", page_icon= "💊")
13
+ st.write("### DR. REHAN WANGSAFF (DOKTER VIRTUAL)")
14
+ initBot = [{'role': 'user', 'content': '''Disini kamu berperan sebagai seorang dokter bernama Dokter Rehan Wangsaff.
15
+ Kamu adalah seorang dokter spesialis kulit yang sangat ahli dan sedang berbicara dengan saya sebagai seorang pasien.
16
+ Jawablah pertanyaan-pertanyaanku ini dengan baik dan benar sebagaimana seorang dokter.
17
+ ketika menjawab, jangan gunakan "Dr. Rehan: ", "Dokter Rehan Wangsaff: " dan lain sebagainya, langsung saja jawab jawabanmu'''}]
18
+
19
+ if "messages" not in st.session_state:
20
+ st.session_state.messages = initBot
21
+
22
+ for i, message in enumerate(st.session_state.messages):
23
+ if i == 0:
24
+ continue
25
+ with st.chat_message(message["role"]):
26
+ st.markdown(message["content"])
27
+
28
+
29
+ if prompt := st.chat_input("Masukkan pesan"):
30
+ prompt = f"Kamu: {prompt}"
31
+ st.chat_message("user").markdown(prompt)
32
+ st.session_state.messages.append({"role": "user", "content": prompt})
33
+
34
+ response = getMessage(st.session_state.messages)
35
+
36
+ st.session_state.messages.append({"role" : "assistant", "content" : response})
37
+ with st.chat_message("assistant"):
38
+ st.markdown(f"Dr. Rehan : {response}")
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ torch==1.13.1
2
+ torchvision==0.14.1
3
+ gradio==3.39.0
4
+ gradio_client==0.3.0
5
+ Flask==2.2.3
6
+ streamlit==1.25.0
7
+ openai==0.28.0
8
+ python-dotenv==1.0.0
skinmodels.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from torchvision.models import resnet50
4
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
5
+
6
+ class IsSkinResnet(nn.Module):
7
+ def __init__(self):
8
+ super().__init__()
9
+ self.resnet = resnet50(
10
+ weights="ResNet50_Weights.IMAGENET1K_V1").to(device)
11
+ self.linear = nn.Sequential(
12
+ nn.Linear(1000, 500),
13
+ nn.ReLU(),
14
+ nn.Linear(500, 2),
15
+ nn.Softmax()
16
+ )
17
+
18
+ def __call__(self, x):
19
+ x = self.resnet(x)
20
+ x = self.linear(x)
21
+ return x
22
+
23
+
24
+ class IsHealthySkinResnet(nn.Module):
25
+ def __init__(self):
26
+ super().__init__()
27
+
28
+ self.resnet = resnet50(
29
+ weights="ResNet50_Weights.IMAGENET1K_V1").to(device)
30
+ self.linear = nn.Sequential(
31
+ nn.Linear(1000, 500),
32
+ nn.ReLU(),
33
+ nn.Dropout(0.2),
34
+ nn.LayerNorm(500),
35
+ nn.Linear(500, 250),
36
+ nn.ReLU(),
37
+ nn.Dropout(0.2),
38
+ nn.LayerNorm(250),
39
+ nn.Linear(250, 2),
40
+ nn.Softmax()
41
+ )
42
+
43
+ def __call__(self, x):
44
+ x = self.resnet(x)
45
+ x = self.linear(x)
46
+ return x
47
+
48
+ # @title <p> Resnet alternative
49
+ class LinearBlock(nn.Module):
50
+ def __init__(self, in_channel, out_channel, dropout = 0.2):
51
+ super().__init__()
52
+ self.linear = nn.Sequential(
53
+ nn.Linear(in_channel, out_channel),
54
+ nn.ReLU(),
55
+ nn.Dropout(dropout),
56
+ nn.LayerNorm(out_channel)
57
+ )
58
+ def __call__(self, x):
59
+ return self.linear(x)
60
+
61
+ class SkinDiseaseModelResnet(nn.Module):
62
+ def __init__(self, num_class):
63
+ super().__init__()
64
+ self.num_class = num_class
65
+ self.resnet = resnet50(weights="ResNet50_Weights.IMAGENET1K_V2")
66
+ self.linearblock = nn.Sequential(
67
+ LinearBlock(1000, 750),
68
+ LinearBlock(750, 500),
69
+ LinearBlock(500, 250),
70
+ LinearBlock(250, 125),
71
+ LinearBlock(125, 62),
72
+ nn.Linear(62, num_class),
73
+ nn.Softmax()
74
+ )
75
+
76
+ def __call__(self, x):
77
+ x = self.resnet(x)
78
+ x = self.linearblock(x)
79
+ return x
tools/disease_step.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "name": "Atopic Dermatitis",
4
+ "link": "https://www.alodokter.com/eksim-atopik#:~:text=Pengobatan%20dermatitis%20atopik%20bertujuan%20untuk,serta%20perawatan%20mandiri%20di%20rumah",
5
+ "step": "<p style='text-indent: 30px;'>Pengobatan dermatitis atopik bertujuan untuk meredakan gejala yang muncul, seperti kulit kemerahan, rasa gatal, hingga infeksi. Metode pengobatannya meliputi pemberian obat eksim, krim pelembap, terapi khusus, serta perawatan mandiri di rumah.</p><br />1. Kenali dan hindari zat, makanan, dan minuman yang memicu gejala.<br />2. Pastikan bayi selalu berada di ruangan bersuhu sejuk dan nyaman<br />3. Ganti pakaian bayi dengan rutin jika bayi berkeringat<br />4. Ganti popok bayi secara berkala.<br />5. Jangan menggunakan air yang terlalu panas ketika memandikan bayi.<br />6. Gunakan sampo dan sabun khusus untuk bayi.<br />7. Hindari memandikan bayi terlalu lama.<br />8. Oleskan obat oles dermatitis atopik yang diresepkan dokter dalam keadaan kulit bayi masih lembap setelah dimandikan."
6
+ },
7
+ {
8
+ "name": "Benign keratosis",
9
+ "link": "https://www.alodokter.com/keratosis-seboroik",
10
+ "step": "<p style='text-indent: 30px;'>Keratosis seboroik umumnya tidak memerlukan pengobatan khusus. Namun, jika benjolan mengalami iritasi atau infeksi, dokter perlu mengangkatnya. Benjolan juga bisa diangkat jika pasien merasa keratosis seboroik menimbulkan ketidaknyamanan dan mengganggu penampilan.</p><p style='text-indent: 30px;'>Beberapa metode pengangkatan benjolan keratosis seboroik yang dapat dijalani pasien adalah:</p><br />1. Krioterapi<br /><p style='text-indent: 30px;'>Pada krioterapi, dokter akan membekukan benjolan keratosis seboroik dengan menggunakan nitrogen cair untuk menghilangkan benjolan. Namun, prosedur ini biasanya tidak disarankan jika benjolan sangat tebal.</p><br />2. Terapi laser<br /><p style='text-indent: 30px;'>Sinar laser dapat digunakan untuk membakar benjolan, mensterilkan luka, dan menutup jaringan.</p><br />3. Electrocautery<br /><p style='text-indent: 30px;'>Electrocautery bertujuan untuk menghilangkan benjolan dengan menggunakan arus listrik. Metode ini dapat diterapkan sebagai prosedur tunggal atau dikombinasikan dengan kuret. Jika dilakukan secara hati-hati, metode ini umumnya tidak meninggalkan bekas luka.</p><br />4. Kuret (curettage)<br /><p style='text-indent: 30px;'>Kuret dilakukan dengan mengerik benjolan keratosis seboroik menggunakan alat khusus. Kuret dapat dikombinasikan dengan krioterapi atau electrocautery guna mendapatkan hasil yang lebih maksimal.</p><br />5. Bedah konvensional<br /><p style='text-indent: 30px;'>Pengangkatan keratosis seboroik dengan teknik bedah konvensional dilakukan dengan bius lokal dan sayatan pisau bedah. Setelah tindakan, luka akan dijahit.Setelah operasi pengangkatan, area kulit bekas benjolan akan berwarna lebih pucat daripada kulit di sekitarnya. Perbedaan warna akan berkurang seiring berjalannya waktu.</p>"
11
+ },
12
+ {
13
+ "name": "Melanoma",
14
+ "link": "https://www.halodoc.com/kesehatan/melanoma",
15
+ "step": "<p style='text-indent: 30px;'>Pengobatan kanker kulit mirip dengan pengobatan kanker lainnya. Namun tidak seperti kebanyakan kanker di dalam tubuh, lebih mudah untuk mengakses jaringan kanker dan menghilangkannya sepenuhnya. Untuk alasan ini, operasi adalah pilihan pengobatan standar untuk melanoma.</p><br /><p style='text-indent: 30px;'>Jika penyakit ini dapat bermetastasis atau menyebar ke organ lain, dokter akan merekomendasikan perawatan tergantung di mana melanoma telah menyebar. Hal ini termasuk:<br />1. Kemoterapi, dengan menggunakan obat yang menargetkan sel kanker.<br />2. Imunoterapi, dengan menggunakan obat yang bekerja dengan sistem kekebalan untuk membantu melawan kanker.<br />3. Terapi bertarget, menggunakan obat-obatan yang mengidentifikasi dan menargetkan gen atau protein tertentu yang spesifik untuk kondisi ini.</p><br />"
16
+ },
17
+ {
18
+ "name": "Actinic keratosis",
19
+ "link": "https://www.halodoc.com/kesehatan/actinic-keratosis",
20
+ "step": "<p style='text-indent: 30px;'>Pemberian obat-obatan dan terapi intervensi merupakan metode yang dilakukan oleh dokter untuk mengobati actinic keratosis. Dokter akan memilih rekomendasi terapi berdasarkan keluhan dan kondisi kulit pengidap. Pengobatan dengan obat-obatan umumnya dengan menggunakan salep untuk mengurangi gejala.</p><br />Sementara terapi intervensi yang dapat dilakukan, antara lain:<br />1. Cryosurgery. Terapi ini disebut juga dengan krioterapi yang dilakukan dengan cara menggunakan nitrogen cair untuk membekukan pertumbuhan kulit. Biasanya, terapi ini membutuhkan waktu penyembuhan selama 7-14 hari.<br />2. Kuretase dan electrosurgery, yaitu dengan mengikis pertumbuhan kulit abnormal.<br />3. Shave excision. Tindakan ini dilakukan untuk mengangkat pertumbuhan kulit dan dilakukan pemeriksaan untuk kemungkinan keganasan.<br />4. Laser resurfacing. Dilakukan penembakan cahaya laser untuk menghancurkan lapisan kulit yang paling atas dan diharapkan akan tumbuh kembali jaringan kulit normal.<br />5. Chemical Peeling. Prosedur ini melibatkan pengelupasan lapisan yang tidak diinginkan di lapisan atas kulit. Dalam beberapa hari pertama, area yang ditangani dengan chemical peeling akan terasa sakit dan merah. Saat kulit sembuh, lapisan kulit baru yang sehat akan tumbuh.<br />6. Terapi fotodinamik. Jika kamu memiliki beberapa kondisi actinic keratosis, atau actinic keratosis kambuh lagi setelah perawatan, dokter mungkin merekomendasikan terapi fotodinamik. Perawatan ini menggunakan krim dan terapi cahaya khusus untuk menghancurkan sel kulit yang bermasalah. Namun setelah perawatan, kamu harus menghindari sinar matahari selama beberapa hari selama kulit yang dirawat pulih.<br />"
21
+ },
22
+ {
23
+ "name": "Psoriasis",
24
+ "link": "https://www.alodokter.com/psoriasis/pengobatan",
25
+ "step": "<p style='text-indent: 30px;'>Pengobatan psoriasis tergantung pada tingkat keparahan psoriasis dan efektivitas perawatan sebelumnya. Metode pengobatan yang bisa dilakukan untuk mengatasi psoriasis antara lain:</p><br />1. Emolien<br />Emolien merupakan pelembab yang dapat digunakan untuk mengobati psoriasis ringan. Manfaat emolien untuk psoriasis antara lain untuk mengurangi pengelupasan kulit dan iritasi, meredakan gatal, dan mencegah perdarahan akibat goresan pada kulit.<br />2. Obat oles<br />Pemberian obat oles bertujuan untuk meredakan gatal dan peradangan, mengurangi gejala kulit bersisik, dan menghambat pembentukan sel kulit baru. Obat oles berupa krim atau salep yang dapat diresepkan oleh dokter untuk mengobati psoriasis yaitu calcipotriol; kortikosteroid, seperti clobetasol, betamethasone, desoximetasone, atau desonide, dithranol, fluprednidene, dan tacrolimus.<br />3. Fototerapi<br />Fototerapi atau terapi cahaya dilakukan jika psoriasis tidak dapat ditangani dengan obat oles. Prosedur ini dilakukan oleh dokter kulit menggunakan sinar ultraviolet (UV) UVA atau UVB. Jika menggunakan UVA, terapi cahaya akan dikombinasikan dengan obat jenis psoralen. Tujuannya adalah agar kulit lebih sensitif terhadap efek sinar UV.<br />4. Obat minum<br />Pengobatan lain untuk psoriasis yang bisa diberikan oleh dokter adalah obat minum. Beberapa jenis obat yang digunakan adalah methotrexate dan ciclosporin.<br />5. Obat suntikan<br />Obat suntik bisa diberikan untuk menangani psoriasis parah yang tidak efektif diobati dengan metode di atas. Jenis obat suntik yang dapat diberikan untuk menangani psoriasis adalah etanercept, adalimumab, secukinumab, dan infliximab.<br />"
26
+ },
27
+ {
28
+ "name": "Dermatofibroma",
29
+ "link": "https://www.honestdocs.id/dermatofibroma",
30
+ "step": "<p style='text-indent: 30px;'>Biasanya, dermatofibroma bersifat kronis dan tidak dapat sembuh sendiri secara spontan. Tetapi kondisi ini tidak berbahaya, dan perawatan biasanya semata-mata hanya bertujuan untuk alasan kosmetik. Pilihan pengobatan untuk dermatofibroma meliputi:</p><br />1. Pembekuan / cryotherapy (dengan nitrogen cair)<br />2. Injeksi kortikosteroid terlokalisasi<br />3. Terapi laser<br />4. Skin peeler<br /><p style='text-indent: 30px;'>Terapi ini mungkin tidak dapat menghilangkan dermatofibroma sepenuhnya, karena jaringan dapat terakumulasi kembali di dalam lesi dan kembali ke ukuran sebelum dilakukan terapi.</p><br /><p style='text-indent: 30px;'>Sebuah dermatofibroma dapat sepenuhnya dihilangkan dengan eksisi bedah, tetapi ada juga kemungkinan pembentukan jaringan parut yang mungkin dianggap lebih tidak sedap dipandang daripada dermatofibroma itu sendiri.</p><br /><p style='text-indent: 30px;'>Jangan pernah mencoba memotong atau menghilangkan dermatofibroma sendiri di rumah. Jika Anda mencoba menghilangkannya sendiri di rumah, terutama menggunakan alat-alat yang tidak steril, maka dapat menyebabkan infeksi, jaringan parut, dan perdarahan berlebih.</p><br />"
31
+ },
32
+ {
33
+ "name": "Tinea Ringworm Candidiasis",
34
+ "link": "https://www.alodokter.com/candidiasis",
35
+ "step": "<p style='text-indent: 30px;'>Tujuan pengobatan candidiasis adalah untuk mengatasi infeksi dan mencegah terjadinya komplikasi. Saat sudah didiagnosis mengalami candidiasis, dokter akan memberikan obat antijamur, sesuai dengan lokasi dan tingkat keparahan infeksi. Dokter dapat memberikan obat antijamur dalam bentuk tablet, losion, atau krim.</p><br /><p style='text-indent: 30px;'>Obat antijamur yang dapat digunakan antara lain:</p><br />1. Amphotericin B<br />2. Butoconazole<br />3. Bifonazole<br />4. Caspofungin<br />5. Clotrimazole<br />6. Fluconazole<br />7. Miconazole<br />8. Itraconazole<br />9. Nystatin<br />10. Tioconale<br />11. Voriconazole<br />12. Micafungin<br />"
36
+ },
37
+ {
38
+ "name": "Eczema",
39
+ "link": "https://www.halodoc.com/kesehatan/eksim",
40
+ "step": "<p style='text-indent: 30px;'>Dipercaya jika belum ada obat yang dapat mengatasi eksim. Perawatan terhadap kondisi ini bertujuan untuk menyembuhkan kulit yang terserang serta mencegah gejalanya. Pengobatan yang dapat dilakukan berdasarkan berbagai faktor. Nah, berikut beberapa cara pengobatan yang bisa dilakukan:</p><br />1. Penggunaan antihistamin. Metode ini dapat meredakan eksim yang diinduksikan oleh alergi. Namun, perlu diperhatikan jika obat ini dapat menyebabkan kantuk jika dikonsumsi secara oral. Dokter kerap menyarankan untuk menggunakan obat secara topikal.<br />2. Penggunaan kortikosteroid oles. Obat ini dapat digunakan untuk menekan peradangan akibat eksim. Namun, pengobatan seperti steroid sebaiknya hanya digunakan di daerah yang mengalami peradangan dan tidak untuk area lain, terutama area luka dan wajah.<br />3. Penggunaan pelembap kulit. Pilih pelembap yang benar-benar sesuai dengan kondisi kulit. Cobalah lebih sering mengoleskannya untuk menghindari masalah kulit yang lebih meluas.<br />"
41
+ },
42
+ {
43
+ "name": "Vascular lesion",
44
+ "link": "https://skinsight.com/skin-conditions/laser-vascular-lesion-treatment/#:~:text=Laser%20treatment%20is%20usually%20the,inserted%20into%20larger%20blood%20vessels",
45
+ "step": "1. Pengobatan menggunakan laser merupakan opsi terbaik untuk vascular lesions di area wajah.<br />2. Sedangkan untuk vascular lesion di daerah kaki, lebih baik menggunakan injeksi obat.<br />3. Vascular lesions yang lebih kronis, dianjurkan untuk melakukan tindakan bedah atau laser kecil.<br />"
46
+ },
47
+ {
48
+ "name": "Warts Molluscum",
49
+ "link": "https://www.alodokter.com/molluscum-contagiosum",
50
+ "step": "<p style='text-indent: 30px;'>Moluskum kontagiosum akan sembuh dengan sendirinya tanpa pengobatan dalam 6–12 bulan, terutama jika penderita memiliki sistem imun yang baik. Pada beberapa kasus, penyakit ini bisa berlangsung selama lebih dari 5 tahun. Namun, orang yang sudah pernah menderita molluscum contagiosum tidak akan tertular lagi.</p><br /><p style='text-indent: 30px;'>Pada pasien dewasa, ada beberapa metode yang bisa dilakukan oleh dokter kulit untuk mengobati moluskum kontagiosum, antara lain:</p><br />1. Mengolesi bintil dengan asam trikloroasetat, asam salisilat, atau tretinoin, baik dalam bentuk krim maupun salep<br />2. Kuret atau scraping, yaitu mengikis bintil menggunakan alat medis khusus<br />3. Terapi sinar laser, yaitu membakar bintil menggunakan sinar laser<br />4. Diathermy, yakni menghancurkan bintil menggunakan energi panas, dengan terlebih dahulu diberikan bius lokal<br />5. Krioterapi, yaitu membekukan bintil menggunakan nitrogen cair<br />"
51
+ },
52
+ {
53
+ "name": "Basal cell carcinoma",
54
+ "link": "https://www.alodokter.com/karsinoma-sel-basal",
55
+ "step": "<p style='text-indent: 30px;'>Beberapa metode yang dapat dilakukan untuk menangani karsinoma sel basal adalah:<br />1. Pemotongan dengan jarum elektrik<br />Dokter akan mengikis sel kanker di permukaan kulit, kemudian membakar sel kanker yang tersisa dengan jarum elektrik. Prosedur ini umum dilakukan pada kanker yang berukuran kecil.<br />2. Pemotongan dengan pisau bedah<br />Dokter akan memotong area kulit yang terkena kanker dan jaringan kulit yang sehat di sekitarnya. Setelah itu, dokter akan memeriksa kulit dengan mikroskop guna memastikan tidak ada sel kanker yang tersisa. Prosedur ini dilakukan bila ukuran kanker cukup besar.<br />3. Krioterapi<br />Dokter akan menggunakan cairan khusus yang mengandung nitrogen untuk membekukan dan membunuh sel kanker. Krioterapi atau cryosurgery biasa digunakan untuk mengatasi kanker yang tipis dan tidak terlalu dalam ke kulit.<br />4. Operasi Mohs<br />Dokter akan mengangkat lapisan kulit yang bermasalah sedikit demi sedikit, sambil memeriksanya di bawah mikroskop untuk memastikan tidak ada sel kanker yang tertinggal. Metode ini digunakan untuk mengatasi karsinoma sel basal yang sering kambuh, berukuran cukup besar, atau terdapat di wajah.<br />5. Terapi fotodinamik<br />Prosedur ini dilakukan dengan mengoleskan obat ke permukaan kulit yang terkena karsinoma sel basal. Setelah itu, dokter akan menyinari bagian kulit tersebut dengan sinar khusus untuk menghancurkan sel kanker.<br />6. Terapi radiasi (radioterapi)<br />Prosedur ini biasanya digunakan pada pasien yang tidak dapat menjalani operasi. Radioterapi juga bisa dilakukan setelah operasi untuk mencegah kekambuhan.<br />7. Kemoterapi<br />Kemoterapi dilakukan jika kanker telah menyebar ke organ lain.</p><br />"
56
+ },
57
+ {
58
+ "name": "Squamous cell carcinoma",
59
+ "link": "https://www.alodokter.com/karsinoma-sel-skuamosa",
60
+ "step": "<p style='text-indent: 30px;'>Beberapa metode yang dapat dilakukan adalah:</p><br />1. Electrodessiccation and curettage<br />Electrodessiccation and curettage adalah prosedur pengangkatan tumor dengan cara dikuret. Setelah diangkat, lapisan bawah kanker dibakar dengan menggunakan jarum elektrik.<br />2. Cryosurgery<br />Cryosurgery atau krioterapi adalah prosedur untuk membunuh sel kanker dengan menggunakan nitrogen cair. Metode ini juga dapat dilakukan setelah kuret.<br />3. Terapi laser<br />Terapi laser adalah prosedur untuk mematikan sel kanker dengan menggunakan sinar laser. Metode ini digunakan pada KSS di kulit yang tidak terlalu dalam.<br />4. Terapi fotodinamik<br />Prosedur ini dilakukan dengan pemberian obat oles berupa aminolevulinic acid ke kulit yang terserang KSS. Kulit yang telah diolesi obat tadi kemudian disinari dengan sinar khusus untuk menghancurkan sel kanker.<br />5. Eksisi sederhana<br />Eksisi sederhana adalah prosedur pemotongan area kulit yang terkena kanker dan jaringan kulit yang sehat di sekitarnya.<br />6. Bedah Mohs<br />Bedah Mohs adalah prosedur pengangkatan kulit yang terkena kanker, selapis demi selapis, untuk kemudian diteliti di bawah mikroskop. Metode ini biasanya dilakukan untuk mengangkat kanker di wajah, hidung dan telinga.<br />7. Kemoterapi<br />Kemoterapi adalah metode untuk membunuh kanker yang sudah menyebar ke organ lain dengan menggunakan obat.<br />"
61
+ },
62
+ {
63
+ "name": "Melanocytic nevus",
64
+ "link": "https://www.klikdokter.com/penyakit/masalah-kulit/nevus",
65
+ "step": "<p style='text-indent: 30px;'>Umumnya nevus tidak memerlukan terapi, kecuali bila pasien ingin bercak berwarna itu diangkat, atau dokter mencurigai perubahan ke arah keganasan.Terapi yang dapat dipilih pada kondisi tersebut untuk adalah eksisi sederhana nevus yang dicurigai ganas.</p><br /><p style='text-indent: 30px;'>Eksisi adalah operasi kecil dengan melakukan anastesi setempat. Prosedur ini dapat dilakukan oleh dokter umum tanpa masuk ke kamar operasi. Tindakan ini cukup aman dengan standar operasional dan tingkat kesterilan yang baik, sehingga tidak terjadi efek samping yang mengkhawatirkan pascaoperasi.</p><br />"
66
+ }
67
+ ]
tools/label_decode.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ 0:Benign keratosis
2
+ 1:Actinic keratosis
3
+ 2:Dermatofibroma
4
+ 3:Vascular lesion
5
+ 4:Melanocytic nevus
6
+ 5:Squamous cell carcinoma
7
+ 6:Basal cell carcinoma
8
+ 7:Melanoma
tools/model_disease.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a320a4fe0a35fe5f08d8ca042299b5cff72a67706461cf2169724a98fb7b87f9
3
+ size 107716237
tools/model_ishealthy.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6fc9f8d8cb3c830975eaa06970bb7f13e4d8e4be6fede18c1657a792e54d6d97
3
+ size 105040009
tools/model_isskin.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:97a5299aebf45454c1ef5fcf4750e139190fa74ebbeb61a7abacdc9e562f7b24
3
+ size 104537831
utils.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import torch
3
+ from skinmodels import IsSkinResnet, IsHealthySkinResnet, SkinDiseaseModelResnet
4
+ from config import read_disease_step, read_label_decode, transform_img
5
+ import openai
6
+ from config_path import SKINMODEL1_PATH, SKINMODEL2_PATH, SKINMODEL3_PATH, SKINDISEASE_STEP_PATH, SKINLABEL_DECODE_PATH
7
+
8
+ def diagnosis(img):
9
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
10
+
11
+ img = transform_img(img).to(device=device)
12
+
13
+ # Setup disease step
14
+ disease_to_link, disease_to_step = read_disease_step(SKINDISEASE_STEP_PATH)
15
+
16
+ # Setup label decode
17
+ label_decode, num_class = read_label_decode(SKINLABEL_DECODE_PATH)
18
+
19
+ # Setup model1
20
+ assert os.path.isfile(
21
+ SKINMODEL1_PATH), f"Can't find model state_dict path : {SKINMODEL1_PATH}"
22
+ model1 = IsSkinResnet().to(device)
23
+ model1.load_state_dict(torch.load(
24
+ SKINMODEL1_PATH, map_location=torch.device(device)))
25
+
26
+ # Setup model2
27
+ model2 = IsHealthySkinResnet().to(device)
28
+ assert os.path.isfile(
29
+ SKINMODEL2_PATH), f"Can't find model state_dict path : {SKINMODEL2_PATH}"
30
+ model2.load_state_dict(torch.load(
31
+ SKINMODEL2_PATH, map_location=torch.device(device)))
32
+
33
+ # Setup model3
34
+ model3 = SkinDiseaseModelResnet(num_class).to(device)
35
+ assert os.path.isfile(
36
+ SKINMODEL3_PATH), f"Can't find model state_dict path : {SKINMODEL3_PATH}"
37
+ model3.load_state_dict(torch.load(
38
+ SKINMODEL3_PATH, map_location=torch.device(device)))
39
+
40
+ # Diagnosis
41
+ isskin = model1(img).argmax().item()
42
+ if isskin == 1:
43
+ return 'notskin', 'Kosong', 'Kosong'
44
+ ishealthy = model2(img).argmax().item()
45
+ if ishealthy == 0:
46
+ return 'healthy', 'Kosong', 'Kosong'
47
+ disease = model3(img).argmax().item()
48
+
49
+ return label_decode[disease], disease_to_link[label_decode[disease]], disease_to_step[label_decode[disease]]
50
+
51
+ def getMessage(msg):
52
+ openRespon = openai.ChatCompletion.create(
53
+ model="gpt-3.5-turbo",
54
+ messages=msg,
55
+ temperature=0.6
56
+ )
57
+ reply = openRespon.choices[0].message.content
58
+ return reply
59
+