Revamping-Health-Insurance-Using-Quantum-Cryptography-Based-Blockchain / docx_pdf.py
docx_pdf.py
Raw
import docx
from docx import Document
from docx.shared import Cm, Mm, RGBColor, Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
from docx2pdf import convert



def pharmacy_reciept(pat_name, acc_addr, email_id, meds, med_price):
    doc = docx.Document()
    sections = doc.sections[0]
    sections.page_height = Cm(17)
    sections.page_width = Cm(20)
    sections.top_margin = Cm(1.27)
    sections.bottom_margin = Cm(1.27)
    sections.left_margin = Cm(1.27)
    sections.right_margin = Cm(1.27)
    P = doc.add_paragraph()
    run = P.add_run('Pharmacy Bill Receipt')
    run.font.color.rgb = RGBColor(0, 0, 51)
    run.font.size = Pt(21)
    run.bold = True
    P.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    P.paragraph_format.space_after = Pt(16)
    p = doc.add_paragraph()
    name = 'Patient Name : '+str(pat_name)
    run1 = p.add_run(name)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    addr = 'Account Address : '+str(acc_addr)
    run1 = p.add_run(addr)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    email = 'Email Id : '+str(email_id)
    run1 = p.add_run(email)
    run1.font.size = Pt(12)

    p1 = doc.add_paragraph()
    run2 = p1.add_run('Medicine Details : ')
    run2.font.size = Pt(12)

    #meds = [[1,'Asprin',6,3],[2,'Cobiflame',5,2]]
    table = doc.add_table(rows=1, cols=4)
    row = table.rows[0].cells
    row[0].text = 'S.No'
    row[1].text = 'Med Name'
    row[2].text = 'Qty'
    row[3].text = 'Price(ETH)'
    for sno, name, qty, price in meds:
        row = table.add_row().cells
        row[0].text = str(sno)
        row[1].text = name
        row[2].text = str(qty)
        row[3].text = str(price)
    #table.style = 'Colorful List'
    table.style = 'Table Grid'

    p3 = doc.add_paragraph()
    p3.paragraph_format.space_before = Pt(12)
    totprice = 'Total Amount : '+str(med_price)+' ETH '
    run2 = p3.add_run(totprice)
    run2.font.size = Pt(12)
    run2.add_break()
    run2.add_break()

    amtpaid = 'Pharmacy Bill Amount : '+'Paid '
    run2 = p3.add_run(amtpaid)
    run2 = p3.add_run('')
    run2.font.size = Pt(12)
    run2.add_break()
    run2.add_break()

    #doc.add_heading('Image with Defined Size:', 3)
    p4 = doc.add_paragraph()
    run3 = p4.add_run('Pharmacist Sign')
    run3.font.color.rgb = RGBColor(97, 6, 6)
    run3.font.size = Pt(10)
    run3.bold = True
    p4.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

    doc.add_picture('phar-sign.png', width=Cm(3), height=Cm(2))
    last_paragraph = doc.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    doc.save('phar.docx')
    convert('phar.docx')
    


def basicpay_reciept(pat_name, acc_addr, email_id, insr_plan, insr_availdate, insr_pay):
    doc = docx.Document()
    sections = doc.sections[0]
    sections.page_height = Cm(17)
    sections.page_width = Cm(20)
    sections.top_margin = Cm(1.27)
    sections.bottom_margin = Cm(1.27)
    sections.left_margin = Cm(1.27)
    sections.right_margin = Cm(1.27)
    P = doc.add_paragraph()
    run = P.add_run('Insurance Plan Avail Reciept')
    run.font.color.rgb = RGBColor(0, 0, 51)
    run.font.size = Pt(21)
    run.bold = True
    P.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    P.paragraph_format.space_after = Pt(16)
    p = doc.add_paragraph()
    name = 'Patient Name : '+str(pat_name)
    run1 = p.add_run(name)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    addr = 'Account Address : '+str(acc_addr)
    run1 = p.add_run(addr)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    email = 'Email Id : '+str(email_id)
    run1 = p.add_run(email)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    plan = 'Insurance Plan : '+str(insr_plan)
    run1 = p.add_run(plan)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    insrdate = 'Insurance Avail Date : '+str(insr_availdate)
    run1 = p.add_run(insrdate)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    amtpaid = 'Insurance Plan Avail Amount : '+str(insr_pay)+' ETH '
    run1 = p.add_run(amtpaid)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    #doc.add_heading('Image with Defined Size:', 3)
    p1 = doc.add_paragraph()
    run2 = p1.add_run('Insurance Company Sign')
    run2.font.color.rgb = RGBColor(97, 6, 6)
    run2.font.size = Pt(10)
    run2.bold = True
    p1.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

    doc.add_picture('ins-sign.png', width=Cm(3), height=Cm(2))
    last_paragraph = doc.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    doc.save('insrbasicpay.docx')
    convert('insrbasicpay.docx')
    


def premium_reciept(pat_name, acc_addr, email_id, insr_plan, premamt, insrval):
    doc = docx.Document()
    sections = doc.sections[0]
    sections.page_height = Cm(17)
    sections.page_width = Cm(20)
    sections.top_margin = Cm(1.27)
    sections.bottom_margin = Cm(1.27)
    sections.left_margin = Cm(1.27)
    sections.right_margin = Cm(1.27)
    P = doc.add_paragraph()
    run = P.add_run('Insurance Premium Reciept')
    run.font.color.rgb = RGBColor(0, 0, 51)
    run.font.size = Pt(21)
    run.bold = True
    P.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    P.paragraph_format.space_after = Pt(16)
    p = doc.add_paragraph()
    name = 'Patient Name : '+str(pat_name)
    run1 = p.add_run(name)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    addr = 'Account Address : '+str(acc_addr)
    run1 = p.add_run(addr)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    email = 'Email Id : '+str(email_id)
    run1 = p.add_run(email)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    plan = 'Insurance Plan : '+str(insr_plan)
    run1 = p.add_run(plan)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    premium = 'Premium : '+str(premamt)
    run1 = p.add_run(premium)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    premium_paid = 'Premium Bill Amount : '+'Paid '
    run1 = p.add_run(premium_paid)
    run1 = p.add_run('')
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    insr_val = 'Insurance Plan Validity : '+str(insrval)
    run1 = p.add_run(insr_val)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    #doc.add_heading('Image with Defined Size:', 3)
    p1 = doc.add_paragraph()
    run2 = p1.add_run('Insurance Company Sign')
    run2.font.color.rgb = RGBColor(97, 6, 6)
    run2.font.size = Pt(10)
    run2.bold = True
    p1.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

    doc.add_picture('ins-sign.png', width=Cm(3), height=Cm(2))
    last_paragraph = doc.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    doc.save('premiumpay.docx')
    convert('premiumpay.docx')


def fullamount_reciept(from_pat, pat_acc, acc, insr_plan, totcost, remamt):
    doc = docx.Document()
    sections = doc.sections[0]
    sections.page_height = Cm(17)
    sections.page_width = Cm(22)
    sections.top_margin = Cm(1.27)
    sections.bottom_margin = Cm(1.27)
    sections.left_margin = Cm(1.27)
    sections.right_margin = Cm(1.27)
    P = doc.add_paragraph()
    run = P.add_run('Insurance Full Amount Reciept')
    run.font.color.rgb = RGBColor(0, 0, 51)
    run.font.size = Pt(21)
    run.bold = True
    P.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    P.paragraph_format.space_after = Pt(16)
    p = doc.add_paragraph()
    insracc = 'Insurance Company Account : '+str(acc)
    run1 = p.add_run(insracc)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    name = 'Patient Name : '+str(from_pat)
    run1 = p.add_run(name)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    patacc = 'Patient Account: '+str(pat_acc)
    run1 = p.add_run(patacc)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    plan = 'Insurance Plan : '+str(insr_plan)
    run1 = p.add_run(plan)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    rem_amt = 'Remaining Amount : '+str(remamt)+' ETH '
    run1 = p.add_run(rem_amt)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    rem_amt_paid = 'Remaining Bill Amount : '+'Paid '
    run1 = p.add_run(rem_amt_paid)
    run1 = p.add_run('')
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    totalcost = 'Total Cost : '+str(totcost)+' ETH '
    run1 = p.add_run(totalcost)
    run1.font.size = Pt(12)
    run1.add_break()
    run1.add_break()

    #doc.add_heading('Image with Defined Size:', 3)
    p1 = doc.add_paragraph()
    run2 = p1.add_run('Hospital Admin Sign\t\t\t\t')
    run2.font.color.rgb = RGBColor(97, 6, 6)
    run2.font.size = Pt(11)
    run2.bold = True
    #p1.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT

    run2 = p1.add_run('Lab Admin Sign\t\t\t\t')
    run2.font.color.rgb = RGBColor(97, 6, 6)
    run2.font.size = Pt(11)
    run2.bold = True
    #p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    run2 = p1.add_run('Pharmacist Sign\t\t\t\t')
    run2.font.color.rgb = RGBColor(97, 6, 6)
    run2.font.size = Pt(11)
    run2.bold = True
    #p1.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

    p2 = doc.add_paragraph()
    #p2.paragraph_format.line_spacing_rule = WD_LINE_SPACING.SINGLE
    run3 = p2.add_run()
    run3.add_picture('hos-sign.png', width=Cm(3.5), height=Cm(2))
    run3 = p2.add_run('\t\t\t\t')
    run3.add_picture('lab-sign.png', width=Cm(3.5), height=Cm(2))
    run3 = p2.add_run('\t\t\t\t')
    run3.add_picture('phar-sign.png', width=Cm(3.5), height=Cm(2))
    '''
    last_paragraph = doc.paragraphs[-2] 
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    '''
    doc.save('fullpay.docx')
    convert('fullpay.docx')

# fullamount_reciept('Ben','0x90F4B9227EdBd11cC97C0DEB5D8Bc98385119Cf7','0x80C9715c92Fa6B377275777e7870627a1F1b0aA8','A','22','10')