Esempio n. 1
0
    def __init__(self, parent, id=-1, title=None, ptID=None):
	wx.Panel.__init__(self, parent, id, title)

	self.ptID = ptID	
	self.textctrl = {}
	font1 = wx.Font(12, wx.SWISS, wx.NORMAL, wx.LIGHT)
	Font2 = wx.Font(7, wx.SWISS, wx.NORMAL, wx.LIGHT)
	self.labels = (('First Name', 50, 'firstname'), ('Last Name', 75, 'lastname'), ('Mid Initial', 20, 'mid_init'),
		('Address', 100, 'address'), ('City', 75, 'city'), ('State', 30, 'state'), ('Zip', 40, 'zipcode'), 
		('Phone', 40, 'phonenumber'), ('Sex', 20, 'sex'), ('DOB', 50, 'dob'), 
		('Insured', 30,  'relation_to_insured'), ('SSN', 30, 'SSN'), ('Email', 125, 'email'), 
		('Signature on File', 40, 'sof'),

		('Insurance Co', 0, 'insurance_company'), ('Policy ID', 50, 'policy_ID'), 
		('Sec Insurance', 100, 'secondary_ins'), ('Sec Policy ID', 50, 'secondary_ins_ID'), 
		('Sec Policy #', 50, 'sec_PolicyGroupOrFecaNumber'), 
		('Plan Name', 75, 'InsuredInsurancePlanNameOrProgramName'), 
		('Ins Policy/Group/FECA Number', 50, 'InsuredPolicyGroupOrFecaNumber'), 

		('Ins Last', 75, 'InsuredLast'),  ('Ins First', 50, 'InsuredFirst'), 
		('Ins Mid Initial', 20, 'InsuredMidInit'), ('Ins Address', 100, 'InsuredStreetAddress'), 
		('Ins City', 75, 'InsuredCity'), ('Ins State', 30, 'InsuredState'), ('Ins Zip', 40, 'InsuredZip'), 
		('Ins Phone', 40, 'InsuredPhone'), 

		#These were removed to make space for other demographics fields; they were not being used; still in the db though
		#('Ins DOB', 40, 'InsuredDOB'),
		#('Ins Gender', 20, 'InsuredGender'), ('Ins Employer', 100, 'InsuredEmployerNameOrSchoolName'),
		 
		('Guarantor Last', 75, 'guarantor_last'), ('Guarantor First', 50, 'guarantor_first'), 
		('Guarantor Address', 100, 'guarantor_address'), ('Guarantor City', 75, 'guarantor_city'),
		('Guarantor State', 30, 'guarantor_state'), ('Guarantor Zip', 40, 'guarantor_zip'), 
		('Guarantor Phone', 40, 'guarantor_phone'),

		('Race', 100, 'race'), ('Primary Language', 50, 'language'), ('PCP', 50, 'pcp'))
		
	for label, size, field in self.labels:
	    EMR_utilities.buildOneTextCtrl(self, label, size)

	demosizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
	demo2sizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
	demo3sizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
	demo4sizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
	demo5sizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
	demosizer.AddGrowableCol(1)
	demo2sizer.AddGrowableCol(1)
	demo3sizer.AddGrowableCol(1)
	demo4sizer.AddGrowableCol(1)
	demo5sizer.AddGrowableCol(1)

	#Patient Info
	nameLabel = wx.StaticText(self, -1, 'First, Middle, Last')
	nameLabel.SetFont(Font2)
	demosizer.Add(nameLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	namesizer = wx.BoxSizer(wx.HORIZONTAL)
	namesizer.Add(self.textctrl['First Name'], 2)
	namesizer.Add(self.textctrl['Mid Initial'], 1, wx.RIGHT|wx.LEFT, 5)
	namesizer.Add(self.textctrl['Last Name'], 3, wx.EXPAND)
	demosizer.Add(namesizer, 0, wx.EXPAND)
	addrLabel = wx.StaticText(self, -1, 'Address')
	addrLabel.SetFont(Font2)
	demosizer.Add(addrLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demosizer.Add(self.textctrl['Address'], 1, wx.EXPAND)
	cityLabel = wx.StaticText(self, -1, ' City State Zip Phone')
	cityLabel.SetFont(Font2)
	demosizer.Add(cityLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	cstsizer = wx.BoxSizer(wx.HORIZONTAL)
	cstsizer.Add(self.textctrl['City'], 3)
	cstsizer.Add(self.textctrl['State'], 1, wx.LEFT|wx.RIGHT, 5)
	cstsizer.Add(self.textctrl['Zip'], 2, wx.RIGHT, 5)
	cstsizer.Add(self.textctrl['Phone'], 4, wx.EXPAND)
	demosizer.Add(cstsizer, 0, wx.EXPAND)
	dobLabel = wx.StaticText(self, -1, 'DOB Sex email')
	dobLabel.SetFont(Font2)
	demosizer.Add(dobLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	sexsizer = wx.BoxSizer(wx.HORIZONTAL)
	sexsizer.Add(self.textctrl['DOB'], 3)
	sexsizer.Add(self.textctrl['Sex'], 2, wx.LEFT|wx.RIGHT, 5)
	sexsizer.Add(self.textctrl['Email'], 5, wx.EXPAND)
	demosizer.Add(sexsizer, 0, wx.EXPAND)
	InsLabel = wx.StaticText(self, -1, 'Insured  SSN SOF')
	InsLabel.SetFont(Font2)
	demosizer.Add(InsLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	insuredsizer = wx.BoxSizer(wx.HORIZONTAL)
	insuredsizer.Add(self.textctrl['Insured'], 2, wx.RIGHT, 5)
	insuredsizer.Add(self.textctrl['SSN'], 4, wx.RIGHT, 5)
	insuredsizer.Add(self.textctrl['Signature on File'], 3, wx.EXPAND)
	demosizer.Add(insuredsizer, 0, wx.EXPAND)
	
	#Insurance Info
	insTuple = EMR_utilities.getAllData('SELECT InsurancePlanName FROM ins_companies;')
	insList = []	#this control forces me to choose from one of the insurance policies I accept or 'self'
	for item in insTuple:
	    insList.append(item[0])
	self.insChoice = wx.Choice(self, -1, choices=insList)

	InsCoLabel = wx.StaticText(self, -1, 'Primary Insurance Co')
	InsCoLabel.SetFont(Font2)
	demo3sizer.Add(InsCoLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demo3sizer.Add(self.insChoice, 1, wx.EXPAND)
	IDLabel = wx.StaticText(self, -1, 'ID  Group#  Plan')
	IDLabel.SetFont(Font2)
	demo3sizer.Add(IDLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	pgrpsizer = wx.BoxSizer(wx.HORIZONTAL)
	pgrpsizer.Add(self.textctrl['Policy ID'], 1)
	pgrpsizer.Add(self.textctrl['Ins Policy/Group/FECA Number'], 1, wx.LEFT|wx.RIGHT, 5)
	pgrpsizer.Add(self.textctrl['Plan Name'], 1, wx.EXPAND)
	demo3sizer.Add(pgrpsizer, 0, wx.EXPAND)
	SecInsLabel = wx.StaticText(self, -1, 'Secondary Ins Co')
	SecInsLabel.SetFont(Font2)
	demo3sizer.Add(SecInsLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demo3sizer.Add(self.textctrl['Sec Insurance'], 1, wx.EXPAND)
	SecIDLabel = wx.StaticText(self, -1, 'Sec ID  Policy#')
	SecIDLabel.SetFont(Font2)
	demo3sizer.Add(SecIDLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	sgrpsizer = wx.BoxSizer(wx.HORIZONTAL)
	sgrpsizer.Add(self.textctrl['Sec Policy ID'], 1, wx.RIGHT, 5)
	sgrpsizer.Add(self.textctrl['Sec Policy #'], 1, wx.EXPAND)
	demo3sizer.Add(sgrpsizer, 0, wx.EXPAND)
	
	#Insured Info (if not the patient)
	InsNameLabel = wx.StaticText(self, -1, 'First, Middle, Last')
	InsNameLabel.SetFont(Font2)
	demo2sizer.Add(InsNameLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	insnamesizer = wx.BoxSizer(wx.HORIZONTAL)
	insnamesizer.Add(self.textctrl['Ins First'], 2)
	insnamesizer.Add(self.textctrl['Ins Mid Initial'], 1, wx.LEFT|wx.RIGHT, 5)
	insnamesizer.Add(self.textctrl['Ins Last'], 3, wx.EXPAND)
	self.textctrl['Ins Last'].Bind(wx.EVT_KILL_FOCUS, self.OnInsKillFocus)
	demo2sizer.Add(insnamesizer, 0, wx.EXPAND)
	InsAddrLabel = wx.StaticText(self, -1, 'Address')
	InsAddrLabel.SetFont(Font2)
	demo2sizer.Add(InsAddrLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demo2sizer.Add(self.textctrl['Ins Address'], 1, wx.EXPAND)
	InsCityLabel = wx.StaticText(self, -1, 'City State Zip Phone')
	InsCityLabel.SetFont(Font2)
	demo2sizer.Add(InsCityLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	inscstsizer = wx.BoxSizer(wx.HORIZONTAL)
	inscstsizer.Add(self.textctrl['Ins City'], 3)
	inscstsizer.Add(self.textctrl['Ins State'], 1, wx.LEFT|wx.RIGHT, 5)
	inscstsizer.Add(self.textctrl['Ins Zip'], 2, wx.RIGHT, 5)
	inscstsizer.Add(self.textctrl['Ins Phone'], 4, wx.EXPAND)
	demo2sizer.Add(inscstsizer, 0, wx.EXPAND)
	#InsDOBLabel = wx.StaticText(self, -1, 'DOB  Sex')
	#InsDOBLabel.SetFont(Font2)
	#demo2sizer.Add(InsDOBLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	#inssexsizer = wx.BoxSizer(wx.HORIZONTAL)
	#inssexsizer.Add(self.textctrl['Ins DOB'], 1, wx.RIGHT, 5)
	#inssexsizer.Add(self.textctrl['Ins Gender'], 1, wx.EXPAND)
	#demo2sizer.Add(inssexsizer, 0, wx.EXPAND)
	#emplLabel = wx.StaticText(self, -1, 'Employer')
	#emplLabel.SetFont(Font2)
	#demo2sizer.Add(emplLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	#demo2sizer.Add(self.textctrl['Ins Employer'], 1, wx.EXPAND)
	
	#Contact Info
	relationshipLabel = wx.StaticText(self, -1, 'Advanced Directive?') 
	relationshipLabel.SetFont(Font2)
	demo4sizer.Add(relationshipLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	relationshipSizer = wx.BoxSizer(wx.HORIZONTAL)
	self.adv_dirYesRB = wx.RadioButton(self, -1, 'Yes', style=wx.RB_GROUP)
        self.adv_dirNoRB = wx.RadioButton(self, -1, 'No')
	self.adv_dirUnknownRB = wx.RadioButton(self, -1, 'Unknown')
	self.adv_dirYesRB.SetFont(Font2)
	relationshipSizer.Add(self.adv_dirYesRB)
	self.adv_dirNoRB.SetFont(Font2)
	relationshipSizer.Add(self.adv_dirNoRB)
	self.adv_dirUnknownRB.SetFont(Font2)
	relationshipSizer.Add(self.adv_dirUnknownRB)
	self.proxyBox = wx.CheckBox(self, -1, "Contact is healthcare proxy.")
	self.proxyBox.SetFont(Font2)
	relationshipSizer.Add((35, -1))
	relationshipSizer.Add(self.proxyBox)
	demo4sizer.Add(relationshipSizer, 0, wx.EXPAND)
	guarNameLabel = wx.StaticText(self, -1, 'First, Last Name')
	guarNameLabel.SetFont(Font2)
	demo4sizer.Add(guarNameLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	guarnamesizer = wx.BoxSizer(wx.HORIZONTAL)
	guarnamesizer.Add(self.textctrl['Guarantor First'], 1, wx.RIGHT, 5)
	guarnamesizer.Add(self.textctrl['Guarantor Last'], 1, wx.EXPAND)
	self.textctrl['Guarantor Last'].Bind(wx.EVT_KILL_FOCUS, self.OnGuarKillFocus)
	demo4sizer.Add(guarnamesizer, 0, wx.EXPAND)
	gAddrLabel = wx.StaticText(self, -1, 'Address')
	gAddrLabel.SetFont(Font2)
	demo4sizer.Add(gAddrLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demo4sizer.Add(self.textctrl['Guarantor Address'], 0, wx.EXPAND)
	gCityLabel = wx.StaticText(self, -1, 'City State Zip Phone')
	gCityLabel.SetFont(Font2)
	demo4sizer.Add(gCityLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	guarcstsizer = wx.BoxSizer(wx.HORIZONTAL)
	guarcstsizer.Add(self.textctrl['Guarantor City'], 3)
	guarcstsizer.Add(self.textctrl['Guarantor State'], 1, wx.LEFT|wx.RIGHT, 5)
	guarcstsizer.Add(self.textctrl['Guarantor Zip'], 2, wx.RIGHT, 5)
	guarcstsizer.Add(self.textctrl['Guarantor Phone'], 4, wx.EXPAND)
	demo4sizer.Add(guarcstsizer, 0, wx.EXPAND)

	#Other Info (mainly added for NCQA purposes)
	demo5sizer.Add(wx.StaticText(self, -1, '                        ')) #no label needed, spacing only
	marriedSizer = wx.BoxSizer(wx.HORIZONTAL)
	self.marriedBox = wx.CheckBox(self, -1, "Married?")
	self.marriedBox.SetFont(Font2)
	marriedSizer.Add(self.marriedBox)
	self.inactiveBox = wx.CheckBox(self, -1, "Inactive Patient")
	self.inactiveBox.SetFont(Font2)
	marriedSizer.Add(self.inactiveBox)
	demo5sizer.Add(marriedSizer, 0, wx.EXPAND)
	languageLabel = wx.StaticText(self, -1, 'Language, PCP')
	languageLabel.SetFont(Font2)
	demo5sizer.Add(languageLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	languageSizer = wx.BoxSizer(wx.HORIZONTAL)
	languageSizer.Add(self.textctrl['Primary Language'], 1, wx.RIGHT, 5)
	languageSizer.Add(self.textctrl['PCP'], 1, wx.EXPAND)
	demo5sizer.Add(languageSizer, 0, wx.EXPAND)
	raceLabel = wx.StaticText(self, -1, 'Race')
	raceLabel.SetFont(Font2)
	demo5sizer.Add(raceLabel, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
	demo5sizer.Add(self.textctrl['Race'], 0, wx.EXPAND)


	
	box = wx.StaticBox(self, -1, 'Patient')
	box2 = wx.StaticBox(self, -1, 'Insured')		
	box3 = wx.StaticBox(self, -1, 'Insurance Information')		
	box4 = wx.StaticBox(self, -1, 'Contact')
	box5 = wx.StaticBox(self, -1, 'Other Info')	
	box.SetFont(font1)
	box2.SetFont(font1)
	box3.SetFont(font1)
	box4.SetFont(font1)
	box5.SetFont(font1)
	boxsizer = wx.StaticBoxSizer(box, wx.HORIZONTAL)
	box2sizer = wx.StaticBoxSizer(box2, wx.HORIZONTAL)
	box3sizer = wx.StaticBoxSizer(box3, wx.HORIZONTAL)
	box4sizer = wx.StaticBoxSizer(box4, wx.HORIZONTAL)
	box5sizer = wx.StaticBoxSizer(box5, wx.HORIZONTAL)
	boxsizer.Add(demosizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM, 25)
	box2sizer.Add(demo2sizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM, 25)
	box3sizer.Add(demo3sizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM, 25)
	box4sizer.Add(demo4sizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM, 25)
	box5sizer.Add(demo5sizer, 1, wx.EXPAND|wx.TOP|wx.BOTTOM, 25)

	leftsizer = wx.BoxSizer(wx.VERTICAL)
	leftsizer.Add(boxsizer, 0, wx.EXPAND|wx.BOTTOM, 10)
	leftsizer.Add(box3sizer, 0, wx.EXPAND)
	addPtBtn = EMR_utilities.buildOneButton(self, self, "Add New Patient", self.OnAddPt)
	buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
	leftsizer.Add((-1, 25))
	buttonSizer.Add(addPtBtn, 0)
	rightsizer = wx.BoxSizer(wx.VERTICAL)
	rightsizer.Add(box2sizer, 0, wx.EXPAND|wx.BOTTOM, 10)
	rightsizer.Add(box4sizer, 0, wx.EXPAND|wx.BOTTOM, 10)
	rightsizer.Add(box5sizer, 0, wx.EXPAND)

	if ptID == None:
	    pass
	else:
	    results = EMR_utilities.getDictData('SELECT * FROM demographics WHERE patient_ID = %s;' % (ptID))
	    for label, size, field in self.labels:
		self.textctrl[label].SetValue(str(results[field]))
	    self.textctrl['Phone'].SetValue(EMR_formats.phone_format(self.textctrl['Phone'].GetValue()))
	    self.textctrl['Ins Phone'].SetValue(EMR_formats.phone_format(self.textctrl['Ins Phone'].GetValue()))
	    self.textctrl['Guarantor Phone'].SetValue(EMR_formats.phone_format(self.textctrl['Guarantor Phone'].GetValue()))
	    self.insChoice.SetStringSelection(self.textctrl['Insurance Co'].GetValue())
	    if results['adv_dir'] == '1':
		self.adv_dirYesRB.SetValue(True)
	    elif results['adv_dir'] == '2':
		self.adv_dirNoRB.SetValue(True)
	    else: 
		self.adv_dirUnknownRB.SetValue(True)
	    if results['proxy'] == '1':
		self.proxyBox.SetValue(1)
	    if results['marital_status'] == '1':
		self.marriedBox.SetValue(1)
	    if results['inactive'] == '1':
		self.inactiveBox.SetValue(1)
	    editPtBtn = EMR_utilities.buildOneButton(self, self, "Update Demographics", self.OnEditPt)
	    scanBtn = EMR_utilities.buildOneButton(self, self, "Scan", self.OnScan)
	    buttonSizer.Add(scanBtn, wx.ALL, 10)
	    buttonSizer.Add(editPtBtn, 0)

	leftsizer.Add(buttonSizer, 0)
	mainsizer = wx.BoxSizer(wx.HORIZONTAL)
	mainsizer.Add(leftsizer, 0, wx.RIGHT, 10)
	mainsizer.Add(rightsizer, 0, wx.EXPAND)
	self.SetSizer(mainsizer)
Esempio n. 2
0
    def __init__(self, parent, ptID):
        lt = "%s/EMR_outputs/%s/Orders/%s.pdf" % (
            settings.LINUXPATH, ptID, EMR_utilities.dateToday('file format'))
        at = "%s/EMR_outputs/%s/Orders/%s.pdf" % (
            settings.APPLEPATH, ptID, EMR_utilities.dateToday('file format'))
        wt = "%s\EMR_outputs\%s\Orders\%s.pdf" % (
            settings.WINPATH, ptID, EMR_utilities.dateToday('file format'))
        filename = EMR_utilities.platformText(lt, at, wt)
        doc = SimpleDocTemplate(filename, pagesize=letter, topMargin=60)
        # container for the 'Flowable' objects
        elements = []
        styleSheet = getSampleStyleSheet()
        styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
        styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

        dem_data = EMR_utilities.getDictData(
            'SELECT * FROM demographics WHERE patient_ID = %s;' % ptID)
        dem_data['phonenumber'] = EMR_formats.phone_format(
            dem_data['phonenumber'])
        test_dlg = wx.TextEntryDialog(None,
                                      "What studies would you like to order?",
                                      "Studies",
                                      style=wx.TE_MULTILINE | wx.OK
                                      | wx.CANCEL)
        if test_dlg.ShowModal() == wx.ID_OK:
            dem_data['tests'] = test_dlg.GetValue()
            dem_data['date'] = EMR_utilities.dateToday()
        else:
            pass
        dx_dlg = wx.TextEntryDialog(None,
                                    "What is the diagnosis?",
                                    "Diagnosis",
                                    style=wx.TE_MULTILINE | wx.OK | wx.CANCEL)
        if dx_dlg.ShowModal() == wx.ID_OK:
            dem_data['dx'] = dx_dlg.GetValue()
        else:
            pass
        results_dlg = wx.TextEntryDialog(None,
                                         "Due Date?",
                                         style=wx.OK | wx.CANCEL)
        if results_dlg.ShowModal() == wx.ID_OK:
            dem_data['results_date'] = results_dlg.GetValue()
        else:
            pass
        qry = "INSERT INTO todo SET patient_ID = %s, date = '%s', description = '%s', priority = 3, \
		category = 'Test', due_date = '%s', complete = 0;"                                                            % (ptID, EMR_utilities.dateToday(), \
         dem_data['tests'], dem_data['results_date'])
        EMR_utilities.updateData(qry)

        styleSheet = getSampleStyleSheet()
        styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
        styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

        elements.append(
            Paragraph('<para align=CENTER>Barron Family Medicine</para>',
                      styleSheet['Address']))
        elements.append(
            Paragraph('<para align=CENTER>8515 Delmar Blvd #217</para>',
                      styleSheet['Address']))
        elements.append(
            Paragraph('<para align=CENTER>University City, MO 63124</para>',
                      styleSheet['Address']))
        elements.append(
            Paragraph(
                '<para align=CENTER>(314)667-5276   fax:(314)677-3838</para>',
                styleSheet['Address']))
        elements.append(
            Paragraph(
                '<para align=CENTER>Quest #33007741, Labcorp #24864540</para>',
                styleSheet['Address']))
        elements.append(Spacer(1, 48))
        elements.append(
            Paragraph(
                '<para align=RIGHT>%s</para>' %
                EMR_utilities.dateToday(t='display'), styleSheet['Body']))
        elements.append(Spacer(1, 48))

        elements.append(
            Paragraph('%(firstname)s %(lastname)s' % dem_data,
                      styleSheet['Body']))
        elements.append(Paragraph('%(address)s' % dem_data,
                                  styleSheet['Body']))
        elements.append(
            Paragraph('%(city)s, %(state)s  %(zipcode)s' % dem_data,
                      styleSheet['Body']))
        elements.append(
            Paragraph('%(phonenumber)s' % dem_data, styleSheet['Body']))
        elements.append(
            Paragraph('DOB: %(dob)s' % dem_data, styleSheet['Body']))
        elements.append(Spacer(1, 36))
        elements.append(Paragraph('<U>Tests:</U>', styleSheet['Address']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph(dem_data['tests'], styleSheet['Body']))
        elements.append(Spacer(1, 24))
        elements.append(Paragraph('<U>Diagnosis:</U>', styleSheet['Address']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph(dem_data['dx'], styleSheet['Body']))
        elements.append(Spacer(1, 96))
        #elements.append(Spacer(1, 48))
        #If you want the signature automatically then can un-comment these lines.  For now I will sign all.
        #logo = "/home/mb/Dropbox/Office/Signature.png"
        #im = Image(logo, 2*inch, 0.75*inch)
        #im.hAlign = "LEFT"
        #elements.append(im)
        chooseSig(elements)

        elements.append(Paragraph(settings.NAME, styleSheet['Body']))

        # write the document to disk
        doc.build(elements)
        choosePrinter(filename)
Esempio n. 3
0
    def __init__(self, parent, ptID):
	lt = "%s/EMR_outputs/%s/Orders/%s.pdf" % (settings.LINUXPATH, ptID, EMR_utilities.dateToday('file format'))
	at = "%s/EMR_outputs/%s/Orders/%s.pdf" % (settings.APPLEPATH, ptID, EMR_utilities.dateToday('file format'))
	wt = "%s\EMR_outputs\%s\Orders\%s.pdf" % (settings.WINPATH, ptID, EMR_utilities.dateToday('file format'))
	filename = EMR_utilities.platformText(lt, at, wt)
	doc = SimpleDocTemplate(filename, pagesize=letter, topMargin=60)
	# container for the 'Flowable' objects
	elements = []
	styleSheet = getSampleStyleSheet()
	styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
	styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

	dem_data = EMR_utilities.getDictData('SELECT * FROM demographics WHERE patient_ID = %s;' % ptID)
	dem_data['phonenumber'] = EMR_formats.phone_format(dem_data['phonenumber'])
	test_dlg = wx.TextEntryDialog(None, "What studies would you like to order?", "Studies",style=wx.TE_MULTILINE|wx.OK|wx.CANCEL)
	if test_dlg.ShowModal() == wx.ID_OK:
	    dem_data['tests'] = test_dlg.GetValue()
	    dem_data['date'] = EMR_utilities.dateToday()
	else: pass
	dx_dlg = wx.TextEntryDialog(None, "What is the diagnosis?", "Diagnosis", style=wx.TE_MULTILINE|wx.OK|wx.CANCEL)
	if dx_dlg.ShowModal() == wx.ID_OK:
	    dem_data['dx'] = dx_dlg.GetValue()
	else: pass
	results_dlg = wx.TextEntryDialog(None, "Due Date?", style=wx.OK|wx.CANCEL)
	if results_dlg.ShowModal() == wx.ID_OK:
	    dem_data['results_date'] = results_dlg.GetValue()
	else: pass
	qry = "INSERT INTO todo SET patient_ID = %s, date = '%s', description = '%s', priority = 3, \
		category = 'Test', due_date = '%s', complete = 0;" % (ptID, EMR_utilities.dateToday(), \
		dem_data['tests'], dem_data['results_date'])
	EMR_utilities.updateData(qry)
	
	styleSheet = getSampleStyleSheet()
	styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
	styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

	elements.append(Paragraph('<para align=CENTER>Barron Family Medicine</para>', styleSheet['Address']))
	elements.append(Paragraph('<para align=CENTER>8515 Delmar Blvd #217</para>', styleSheet['Address']))
	elements.append(Paragraph('<para align=CENTER>University City, MO 63124</para>', styleSheet['Address']))
	elements.append(Paragraph('<para align=CENTER>(314)667-5276   fax:(314)677-3838</para>', styleSheet['Address']))
	elements.append(Paragraph('<para align=CENTER>Quest #33007741, Labcorp #24864540</para>', styleSheet['Address']))
	elements.append(Spacer(1,48))
	elements.append(Paragraph('<para align=RIGHT>%s</para>' % EMR_utilities.dateToday(t='display'), styleSheet['Body']))
	elements.append(Spacer(1,48))

	elements.append(Paragraph('%(firstname)s %(lastname)s' % dem_data, styleSheet['Body']))
	elements.append(Paragraph('%(address)s' % dem_data, styleSheet['Body']))
	elements.append(Paragraph('%(city)s, %(state)s  %(zipcode)s' % dem_data, styleSheet['Body']))
	elements.append(Paragraph('%(phonenumber)s' % dem_data, styleSheet['Body']))
	elements.append(Paragraph('DOB: %(dob)s' % dem_data, styleSheet['Body']))
	elements.append(Spacer(1, 36))
	elements.append(Paragraph('<U>Tests:</U>', styleSheet['Address']))
	elements.append(Spacer(1, 12))
	elements.append(Paragraph(dem_data['tests'], styleSheet['Body']))
	elements.append(Spacer(1, 24))
	elements.append(Paragraph('<U>Diagnosis:</U>', styleSheet['Address']))
	elements.append(Spacer(1,12))
	elements.append(Paragraph(dem_data['dx'], styleSheet['Body']))
	elements.append(Spacer(1,96))
	#elements.append(Spacer(1, 48))
	#If you want the signature automatically then can un-comment these lines.  For now I will sign all.
	#logo = "/home/mb/Dropbox/Office/Signature.png"
	#im = Image(logo, 2*inch, 0.75*inch)
	#im.hAlign = "LEFT"
	#elements.append(im)
	chooseSig(elements)

	elements.append(Paragraph(settings.NAME, styleSheet['Body']))
	
	# write the document to disk
	doc.build(elements)
	choosePrinter(filename)
Esempio n. 4
0
    def __init__(self, parent, ptID, reason, background, consultant, dueDate):
        lt = "%s/EMR_outputs/%s/Consults/%s.pdf" % (
            settings.LINUXPATH, ptID, EMR_utilities.dateToday('file format'))
        at = "%s/EMR_outputs/%s/Consults/%s.pdf" % (
            settings.APPLEPATH, ptID, EMR_utilities.dateToday('file format'))
        wt = "%s\EMR_outputs\%s\Consults\%s.pdf" % (
            settings.WINPATH, ptID, EMR_utilities.dateToday('file format'))
        filename = EMR_utilities.platformText(lt, at, wt)
        doc = SimpleDocTemplate(filename, pagesize=letter, topMargin=60)
        # container for the 'Flowable' objects
        elements = []
        styleSheet = getSampleStyleSheet()
        styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
        styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

        dem_data = EMR_utilities.getDictData(
            'SELECT * FROM demographics WHERE patient_ID = %s;' % ptID)
        consultDoc = EMR_utilities.name_fixer(consultant)
        if consultDoc.firstname == '':
            consult_data = EMR_utilities.getDictData('SELECT * FROM consultants WHERE lastname = "%s";' \
  % (consultDoc.lastname))
        else:
            consult_data = EMR_utilities.getDictData(
                'SELECT * FROM consultants WHERE lastname = "%s" \
		AND firstname = "%s";' % (consultDoc.lastname, consultDoc.firstname))

        dem_data['phonenumber'] = EMR_formats.phone_format(
            dem_data['phonenumber'])
        patient = 'RE: %(firstname)s %(lastname)s, DOB: %(dob)s, Phone: %(phonenumber)s' % dem_data
        salutation = 'Dear Dr. %(lastname)s:' % consult_data
        body = 'I am sending %s, a %s %s, to see you regarding %s. %s' % \
         (dem_data['firstname'], EMR_utilities.getAge(ptID), dem_data['sex'], reason, background)
        problems = EMR_formats.getProblems(ptID)
        meds = EMR_formats.getMeds(ptID, display='column')
        qry = "INSERT INTO todo SET patient_ID = %s, date = '%s', description = '%s- %s', priority = 3, \
		category = 'Consult', due_date = '%s', complete = 0;"                                                               % (ptID, EMR_utilities.dateToday(), \
         consult_data['lastname'], reason, dueDate)
        EMR_utilities.updateData(qry)

        styleSheet = getSampleStyleSheet()
        styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
        styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

        elements.append(
            Paragraph('Barron Family Medicine', styleSheet['Address']))
        elements.append(
            Paragraph('8515 Delmar Blvd #217', styleSheet['Address']))
        elements.append(
            Paragraph('University City, MO 63124', styleSheet['Address']))
        elements.append(
            Paragraph('(314)667-5276  fax:(314)677-3838',
                      styleSheet['Address']))
        elements.append(Spacer(1, 24))
        elements.append(
            Paragraph(
                '<para align=RIGHT>%s</para>' %
                EMR_utilities.dateToday(t='display'), styleSheet['Body']))
        elements.append(Spacer(1, 24))

        elements.append(
            Paragraph('Dr. %(lastname)s' % consult_data, styleSheet['Body']))
        elements.append(
            Paragraph('%(address)s' % consult_data, styleSheet['Body']))
        elements.append(
            Paragraph('%(city)s, %(state)s  %(zipcode)s' % consult_data,
                      styleSheet['Body']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph(patient, styleSheet['Body']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph(salutation, styleSheet['Body']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph(body, styleSheet['Body']))
        elements.append(Spacer(1, 12))
        elements.append(
            Paragraph(
                "I have attached current medications and problems.  \
		If you have any questions, don't hesitate to call me at (314) 667-5276.",
                styleSheet['Body']))
        elements.append(Spacer(1, 12))
        elements.append(Paragraph('Sincerely,', styleSheet['Body']))
        #If you want the signature automatically then can un-comment these lines.  For now I will sign all.
        #logo = "/home/%s/Dropbox/Office/%sSignature.png" % (settings.HOME_FOLDER, settings.HOME_FOLDER)
        #im = Image(logo, 2*inch, 0.75*inch)
        #im.hAlign = "LEFT"
        #elements.append(im)
        chooseSig(elements)

        elements.append(Paragraph(settings.NAME, styleSheet['Body']))
        elements.append(Spacer(1, 12))

        tableList = [[
            problems,
            meds,
        ]]
        table = Table(tableList,
                      colWidths=(3 * inch, 3 * inch),
                      style=[('VALIGN', (0, 0), (-1, -1), 'TOP'),
                             ('LEFTPADDING', (0, 0), (-1, -1), 0),
                             ('RIGHTPADDING', (0, 0), (-1, -1), 20)])
        table.hAlign = "LEFT"
        elements.append(table)

        # write the document to disk
        doc.build(elements)
        choosePrinter(filename)
Esempio n. 5
0
    def __init__(self, parent, ptID, reason, background, consultant, dueDate):
	lt = "%s/EMR_outputs/%s/Consults/%s.pdf" % (settings.LINUXPATH, ptID, EMR_utilities.dateToday('file format'))
	at = "%s/EMR_outputs/%s/Consults/%s.pdf" % (settings.APPLEPATH, ptID, EMR_utilities.dateToday('file format'))
	wt = "%s\EMR_outputs\%s\Consults\%s.pdf" % (settings.WINPATH, ptID, EMR_utilities.dateToday('file format'))
	filename = EMR_utilities.platformText(lt, at, wt)
	doc = SimpleDocTemplate(filename, pagesize=letter, topMargin=60)
	# container for the 'Flowable' objects
	elements = []
	styleSheet = getSampleStyleSheet()
	styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
	styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

	dem_data = EMR_utilities.getDictData('SELECT * FROM demographics WHERE patient_ID = %s;' % ptID)
	consultDoc = EMR_utilities.name_fixer(consultant)
	if consultDoc.firstname == '':
            consult_data = EMR_utilities.getDictData('SELECT * FROM consultants WHERE lastname = "%s";' \
		% (consultDoc.lastname))
        else:
            consult_data = EMR_utilities.getDictData('SELECT * FROM consultants WHERE lastname = "%s" \
		AND firstname = "%s";' % (consultDoc.lastname, consultDoc.firstname))
	
	dem_data['phonenumber'] = EMR_formats.phone_format(dem_data['phonenumber'])
	patient = 'RE: %(firstname)s %(lastname)s, DOB: %(dob)s, Phone: %(phonenumber)s' % dem_data
	salutation = 'Dear Dr. %(lastname)s:' % consult_data
	body = 'I am sending %s, a %s %s, to see you regarding %s. %s' % \
		(dem_data['firstname'], EMR_utilities.getAge(ptID), dem_data['sex'], reason, background)
	problems = EMR_formats.getProblems(ptID)
	meds = EMR_formats.getMeds(ptID, display='column')
	qry = "INSERT INTO todo SET patient_ID = %s, date = '%s', description = '%s- %s', priority = 3, \
		category = 'Consult', due_date = '%s', complete = 0;" % (ptID, EMR_utilities.dateToday(), \
		consult_data['lastname'], reason, dueDate)
	EMR_utilities.updateData(qry)
	
	styleSheet = getSampleStyleSheet()
	styleSheet.add(ParagraphStyle(name='Address', fontSize=13, leading=15))
	styleSheet.add(ParagraphStyle(name='Body', fontSize=12, leading=14))

	elements.append(Paragraph('Barron Family Medicine', styleSheet['Address']))
	elements.append(Paragraph('8515 Delmar Blvd #217', styleSheet['Address']))
	elements.append(Paragraph('University City, MO 63124', styleSheet['Address']))
	elements.append(Paragraph('(314)667-5276  fax:(314)677-3838', styleSheet['Address']))
	elements.append(Spacer(1,24))
	elements.append(Paragraph('<para align=RIGHT>%s</para>' % EMR_utilities.dateToday(t='display'), styleSheet['Body']))
	elements.append(Spacer(1,24))

	elements.append(Paragraph('Dr. %(lastname)s' % consult_data, styleSheet['Body']))
	elements.append(Paragraph('%(address)s' % consult_data, styleSheet['Body']))
	elements.append(Paragraph('%(city)s, %(state)s  %(zipcode)s' % consult_data, styleSheet['Body']))
	elements.append(Spacer(1, 12))
	elements.append(Paragraph(patient, styleSheet['Body']))
	elements.append(Spacer(1, 12))
	elements.append(Paragraph(salutation, styleSheet['Body']))
	elements.append(Spacer(1, 12))
	elements.append(Paragraph(body, styleSheet['Body']))
	elements.append(Spacer(1,12))
	elements.append(Paragraph("I have attached current medications and problems.  \
		If you have any questions, don't hesitate to call me at (314) 667-5276.", styleSheet['Body']))
	elements.append(Spacer(1,12))
	elements.append(Paragraph('Sincerely,', styleSheet['Body']))
	#If you want the signature automatically then can un-comment these lines.  For now I will sign all.
	#logo = "/home/%s/Dropbox/Office/%sSignature.png" % (settings.HOME_FOLDER, settings.HOME_FOLDER)
	#im = Image(logo, 2*inch, 0.75*inch)
	#im.hAlign = "LEFT"
	#elements.append(im)
	chooseSig(elements)

	elements.append(Paragraph(settings.NAME, styleSheet['Body']))
	elements.append(Spacer(1, 12))

	tableList = [[problems, meds,]]
	table = Table(tableList, colWidths=(3*inch, 3*inch), style=[('VALIGN', (0,0), (-1,-1), 'TOP'),
				     							('LEFTPADDING', (0,0), (-1,-1), 0),
			     	     							('RIGHTPADDING', (0,0), (-1,-1), 20)])
	table.hAlign = "LEFT"
	elements.append(table)
	
	# write the document to disk
	doc.build(elements)
	choosePrinter(filename)