Spaces:
Sleeping
Sleeping
import cohere | |
import streamlit as st | |
from serpapi import GoogleSearch | |
import requests | |
from geopy.geocoders import Nominatim | |
from PIL import Image | |
from io import BytesIO | |
st.title("Hi there!👨⚕️🩺") | |
st.title("Welcome to *Virtual Diagnosis*") | |
st.write("> **This app is meant to assist medical professionals ONLY**") | |
co = cohere.Client(st.secrets["COHERE_API"]) | |
prompt = st.text_input('What are the symptoms of your patient? (*Try to keep the symptoms meaningful*)') | |
prompt_med = st.text_input('Search a medicine here: (*Enter the correct spelling of the medicine*)') | |
geolocator = Nominatim(user_agent="geoapiExercises") | |
def get_coordinates(location): | |
try: | |
location = geolocator.geocode(location) | |
return (location.latitude, location.longitude) | |
except: | |
return None | |
with open('symptoms_1.txt', 'r') as file: | |
symptoms = [line.strip().lower() for line in file] | |
if prompt: | |
if any(symptom in prompt.lower() for symptom in symptoms): | |
response = co.generate( | |
model = 'command-xlarge-nightly', #xlarge #medium #small | |
prompt = f"user: Suggest prescription medications for these symptoms: {prompt}\nTLDR:", # | |
max_tokens=300, | |
temperature=0.9, | |
k=0, | |
p=0.75, | |
frequency_penalty=0, | |
presence_penalty=0, | |
stop_sequences=[], | |
return_likelihoods='NONE' | |
) | |
text = format(response.generations[0].text) | |
st.write('Prescription medications: %s' %text) | |
st.download_button('Download example prescriptions', text) | |
print("done!") | |
params = { | |
"engine": "google_shopping", | |
"google_domain": "google.com", | |
"q": text, | |
"api_key": st.secrets["GOOGLE_API"] | |
} | |
search = GoogleSearch(params) | |
items = search.get_dict() | |
for key, result in items.items(): | |
if "google_shopping_url" in result: | |
st.caption(f'<a href="{result["google_shopping_url"]}">Click here for Google search page', unsafe_allow_html=True) | |
else: | |
pass | |
for i in range(10): | |
item = items['shopping_results'][i] | |
response = requests.get(item['thumbnail']) | |
st.image(Image.open(BytesIO(response.content)), | |
caption=item['title'], width=400) | |
st.text(item['source']) | |
st.text(item['price']) | |
st.caption(f'<a href="{item["link"]}">Click to buy</a>', unsafe_allow_html=True) | |
address = st.text_input("Enter your location to search pharmacies near you: ( For best results, enter location in this *format: Area, City, Country*.)") | |
if address: | |
coordinates = get_coordinates(address) | |
params = { | |
"engine": "google_maps", | |
"q": "Pharmacies", | |
"ll": "@" + str(coordinates[0]) + "," + str(coordinates[1]) + ",15.1z", | |
"type": "search", | |
"api_key": st.secrets["GOOGLE_API"] | |
} | |
search = GoogleSearch(params) | |
results = search.get_dict() | |
local_results = results["local_results"] | |
for x in range(5): | |
st.write("Name of pharmacy: ", local_results[x]["title"]) | |
st.write("address of pharmacy: ", local_results[x]["address"]) | |
else: | |
st.write("Kindly pertain your inputs to possible medical symptoms only. Or try rephrasing.") | |
if prompt_med: | |
params = { | |
"engine": "google_shopping", | |
"google_domain": "google.com", | |
"q": f"{prompt_med} medicine", | |
"hl": "en", | |
# "gl": "in", | |
"api_key": st.secrets["GOOGLE_API"] | |
} | |
search = GoogleSearch(params) | |
items = search.get_dict() | |
for key, result in items.items(): | |
if "google_shopping_url" in result: | |
st.caption(f'<a href="{result["google_shopping_url"]}">Click here for Google search page', unsafe_allow_html=True) | |
else: | |
pass | |
for i in range(10): | |
item = items['shopping_results'][i] | |
response = requests.get(item['thumbnail']) | |
st.image(Image.open(BytesIO(response.content)), | |
caption=item['title'], width=400) | |
st.text(item['source']) | |
st.text(item['price']) | |
st.caption(f'<a href="{item["link"]}">Click to buy</a>', unsafe_allow_html=True) |