Esempio n. 1
0
	def _on_list_item_activated(self, evt):
		data = self.get_selected_item_data(only_one = True)
		pk_pat_col = self.__get_patient_pk_data_key(data = data)

		if pk_pat_col is None:
			gmDispatcher.send(signal = 'statustext', msg = _('List not known to be patient-related.'))
			return

		pat_data = data[pk_pat_col]
		try:
			pat_pk = int(pat_data)
			pat = gmPerson.cPerson(aPK_obj = pat_pk)
		except (ValueError, TypeError):
			searcher = gmPersonSearch.cPatientSearcher_SQL()
			idents = searcher.get_identities(pat_data)
			if len(idents) == 0:
				gmDispatcher.send(signal = 'statustext', msg = _('No matching patient found.'))
				return
			if len(idents) == 1:
				pat = idents[0]
			else:
				from Gnumed.wxpython import gmPatSearchWidgets
				dlg = gmPatSearchWidgets.cSelectPersonFromListDlg(parent=wx.GetTopLevelParent(self), id=-1)
				dlg.set_persons(persons=idents)
				result = dlg.ShowModal()
				if result == wx.ID_CANCEL:
					dlg.Destroy()
					return
				pat = dlg.get_selected_person()
				dlg.Destroy()

		from Gnumed.wxpython import gmPatSearchWidgets
		gmPatSearchWidgets.set_active_patient(patient = pat)
Esempio n. 2
0
    def search_patient(self, search_term):

        self.__person_searcher = gmPersonSearch.cPatientSearcher_SQL()
        # get list of matching ids
        idents = self.__person_searcher.get_identities(search_term)

        if idents is None:
            idents = []

        _log.info("%s matching person(s) found", len(idents))

        # only one matching identity
        if len(idents) == 1:
            self.person = idents[0]
            return jsonclasshintify(self.person)

        # ambiguous - return available choices, to be able to choose from them.
        self.person = None
        return jsonclasshintify(idents)
Esempio n. 3
0
    def search_patient(self, search_term):
        
        self.__person_searcher = gmPersonSearch.cPatientSearcher_SQL()
        # get list of matching ids
        idents = self.__person_searcher.get_identities(search_term)

        if idents is None:
            idents = []

        _log.info("%s matching person(s) found", len(idents))

        # only one matching identity
        if len(idents) == 1:
            self.person = idents[0]
            return jsonclasshintify(self.person)

        # ambiguous - return available choices, to be able to choose from them.
        self.person = None
        return jsonclasshintify(idents)
Esempio n. 4
0
	def __init__(self, *args, **kwargs):

		try:
			kwargs['style'] = kwargs['style'] | wx.TE_PROCESS_ENTER
		except KeyError:
			kwargs['style'] = wx.TE_PROCESS_ENTER

		# need to explicitly process ENTER events to avoid
		# them being handed over to the next control
		wx.TextCtrl.__init__(self, *args, **kwargs)

		self.person = None

		self._tt_search_hints = _(
			'To search for a person, type any of:                   \n'
			'\n'
			' - fragment(s) of last and/or first name(s)\n'
			" - GNUmed ID of person (can start with '#')\n"
			' - any external ID of person\n'
			" - date of birth (can start with '$' or '*')\n"
			'\n'
			'and hit <ENTER>.\n'
			'\n'
			'Shortcuts:\n'
			' <F2>\n'
			'  - scan external sources for persons\n'
			' <CURSOR-UP>\n'
			'  - recall most recently used search term\n'
			' <CURSOR-DOWN>\n'
			'  - list 10 most recently found persons\n'
		)
		self.SetToolTip(self._tt_search_hints)

		# FIXME: set query generator
		self.__person_searcher = gmPersonSearch.cPatientSearcher_SQL()

		self._prev_search_term = None
		self.__prev_idents = []
		self._lclick_count = 0

		self.__register_events()
Esempio n. 5
0
	def __init__(self, *args, **kwargs):

		try:
			kwargs['style'] = kwargs['style'] | wx.TE_PROCESS_ENTER
		except KeyError:
			kwargs['style'] = wx.TE_PROCESS_ENTER

		# need to explicitly process ENTER events to avoid
		# them being handed over to the next control
		wx.TextCtrl.__init__(self, *args, **kwargs)

		self.person = None

		self._tt_search_hints = _(
			'To search for a person, type any of:                   \n'
			'\n'
			' - fragment(s) of last and/or first name(s)\n'
			" - GNUmed ID of person (can start with '#')\n"
			' - any external ID of person\n'
			" - date of birth (can start with '$' or '*')\n"
			'\n'
			'and hit <ENTER>.\n'
			'\n'
			'Shortcuts:\n'
			' <F2>\n'
			'  - scan external sources for persons\n'
			' <CURSOR-UP>\n'
			'  - recall most recently used search term\n'
			' <CURSOR-DOWN>\n'
			'  - list 10 most recently found persons\n'
		)
		self.SetToolTip(self._tt_search_hints)

		# FIXME: set query generator
		self.__person_searcher = gmPersonSearch.cPatientSearcher_SQL()

		self._prev_search_term = None
		self.__prev_idents = []
		self._lclick_count = 0

		self.__register_events()
Esempio n. 6
0
    def _on_list_item_activated(self, evt):
        data = self.get_selected_item_data(only_one=True)
        pk_pat_col = self.__get_patient_pk_data_key(data=data)

        if pk_pat_col is None:
            gmDispatcher.send(signal='statustext',
                              msg=_('List not known to be patient-related.'))
            return

        pat_data = data[pk_pat_col]
        try:
            pat_pk = int(pat_data)
            pat = gmPerson.cPerson(aPK_obj=pat_pk)
        except (ValueError, TypeError):
            searcher = gmPersonSearch.cPatientSearcher_SQL()
            idents = searcher.get_identities(pat_data)
            if len(idents) == 0:
                gmDispatcher.send(signal='statustext',
                                  msg=_('No matching patient found.'))
                return
            if len(idents) == 1:
                pat = idents[0]
            else:
                from Gnumed.wxpython import gmPatSearchWidgets
                dlg = gmPatSearchWidgets.cSelectPersonFromListDlg(
                    parent=wx.GetTopLevelParent(self), id=-1)
                dlg.set_persons(persons=idents)
                result = dlg.ShowModal()
                if result == wx.ID_CANCEL:
                    dlg.Destroy()
                    return
                pat = dlg.get_selected_person()
                dlg.Destroy()
        except ConstructorError:
            gmDispatcher.send(signal='statustext',
                              msg=_('No matching patient found.'))
            return

        from Gnumed.wxpython import gmPatSearchWidgets
        gmPatSearchWidgets.set_active_patient(patient=pat)
Esempio n. 7
0
This will generate lab requests for all sample IDs found
in <ldt-datei>. All requests will belong to Laborata
Testwoman.
"""
    sys.exit()


print "accessing patient Laborata Testwoman"
# set encoding
gmPG.set_default_client_encoding("latin1")
# setup login defs
auth_data = gmLoginInfo.LoginInfo(user="******", passwd="any-doc", host="hherb.com", port=5432, database="gnumed")
backend = gmPG.ConnectionPool(login=auth_data)

pat_data = {"lastnames": "Testwoman", "firstnames": "Laborata", "gender": "f"}
searcher = gmPersonSearch.cPatientSearcher_SQL()
pat_ids = searcher.get_patient_ids(search_dict=pat_data)

if len(pat_ids) == 0:
    print "cannot find Laborata Testwoman"
    sys.exit()
if len(pat_ids) > 1:
    print "more than one patient for Laborata Testwoman"
    sys.exit()

patid = pat_ids[0]
print "Laborata Testwoman has ID [%s]" % patid
pat = gmPerson.gmCurrentPatient(aPKey=patid)
emr = pat.get_clinical_record()
enc = emr.get_active_encounter()
enc_id = enc["pk_encounter"]
Esempio n. 8
0
					    (pat_ldt['dob'] != pat_db[4].strftime('%Y-%m-%d'))):
						_log.Log(gmLog.lErr, 'patient mismatch LDT-Datei <-> Datenbank')
						_log.Log(gmLog.lData, 'Datei: %s' % pat_ldt)
						_log.Log(gmLog.lData, 'DB: %s' % pat_db)
						return None

		# or create one from name/dob
		# FIXME: we may have to use field 3100, too
		if request is None:
			# check essential fields
			if pat_ldt is None:
				_log.Log(gmLog.lErr, 'Satz vom Typ [8000:%s] enthaelt nicht alle Felder [3101, 3102, 3103]' % request_data['8000'][0])
				_log.Log(gmLog.lErr, 'Kann lab_request nicht automatisch erzeugen.')
				return None
			# find patient
			searcher = gmPersonSearch.cPatientSearcher_SQL()
			pat_ids = searcher.get_patient_ids(search_dict=pat_ldt)
			print "must use dto, not search_dict"
			if len(pat_ids) == 0:
				_log.Log(gmLog.lErr, 'Kann in der Datenbank keinen Patienten fuer %s finden.' % str(pat_ldt))
				return None
			if len(pat_ids) > 1:
				_log.Log(gmLog.lErr, 'Mehrere Patienten fuer %s gefunden: %s' % (str(pat_ldt), str(pat_ids)))
				return None
			# create lab request
			try:
				pat = gmPerson.gmPerson(aPKey=pat_ids[0])
			except gmExceptions.ConstructorError:
				_log.LogException('patient error', sys.exc_info())
				return None
			emr = pat.emr