52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
import requests
|
|
import json
|
|
import tabula
|
|
import re
|
|
import streamlit as st
|
|
|
|
def get_substance(x):
|
|
'Returns the substance of the drug.'
|
|
l = x.split('\r')
|
|
s = re.search(r'\w+', l[-1]).group()
|
|
return s.lower()
|
|
|
|
# Get the pdf with prescriptions from the user.
|
|
pdf = st.file_uploader(label='Ladda upp din läkemedelslista', type='pdf')
|
|
|
|
if pdf:
|
|
|
|
# Extract table from prescription pdf.
|
|
area = [111, 20, 528, 822]
|
|
df = tabula.read_pdf(pdf, pages='all', area=area, lattice=True)[0]
|
|
df.columns = ['Uthämtat datum', 'Uthämtat läkemedel', 'Användning', 'Förskrivet av', 'Uthämtad mängd', 'Läkemedelsgrupp']
|
|
df.dropna(axis=0, inplace=True)
|
|
df['substance'] = df['Uthämtat läkemedel'].apply(lambda x: get_substance(x))
|
|
|
|
# Make list of precripted substances.
|
|
substances = df.substance.tolist()
|
|
|
|
substances_id_list = []
|
|
for substance in substances:
|
|
# Get data for the substance.
|
|
data = requests.get(f'https://janusmed.se/api/search/input/{substance}').json()
|
|
data = data[0] # Only first is interesting(?) when searching on substances.
|
|
|
|
# Add the substance ID to the list of substances.
|
|
substance_id = data['nslId'] #TODO Kan finnas flera!?
|
|
substances_id_list.append(substance_id)
|
|
|
|
# Create URL for janusmed.se
|
|
substances_id_url_list = '&nslIds='.join(substances_id_list)
|
|
url = 'https://janusmed.se/interaktioner?nplIds=' + substances_id_url_list
|
|
|
|
# Show text with URL to janusmed.
|
|
st.markdown(f'''
|
|
:grey[*Följ [den här länken]({url}) för att se om dina
|
|
läkemedel går bra ihop eller om det kan finnas något
|
|
du skulle kunna prata med din läkare om. Nedan kan du se en förhandsvisning.*]
|
|
''')
|
|
|
|
# View janusmed.se in an iframe.
|
|
st.components.v1.iframe(url, height=600, scrolling=True)
|
|
|