Fehler Einlesen GKV Karte Cherry  [GELÖST]

Fehler im Programm, Fehlermeldung, Absturz oder fehlende Funktionen? Hier hinein!

Moderator: Forum Moderatoren

Antworten
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

Liebe Kollegen , seit ca. 2 Tagen habe ich an der Anmeldung ein Fehler an unserem Cherry KT in dem der SMC-B steckt. Die GKV-Karten können nicht mehr eingelesen werden es folgt die Fehlermeldung " Fehler bei der Abfrage Ereignis-Abos: Es sind nicht alle Pflichtparameter gesetzt"
TM Support sagt Fehler beim Konnektor RED , Red hat alles überprüft Routen neu gesetzt alles ok. Die anderen KTS´ohne Probleme, einlesen geht, eAU , e RP alles ok, , TM mit aktuellem Update seit letztem Wochenende . Das betroffene KT alles grün, anpingen ok, gepairt, in TM aktiviert alles wurde überprüft
Hat noch jemand eine Idee, vor allem was die Fehlermeldung bedeutet ???

LG ein hilfloser :roll:
Benutzeravatar
FortiSecond
Beiträge: 885
Registriert: Dienstag 2. August 2022, 21:30
2
Hat sich bedankt: 384 mal
Hat Dank erhalten: 286 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von FortiSecond »

Ist die Firmware des Cherry aktuell?
--
Hinweis: Die Kraft kehrt zurück...
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

ja , von Red alles aktualisiert
Gruß
Benutzeravatar
FortiSecond
Beiträge: 885
Registriert: Dienstag 2. August 2022, 21:30
2
Hat sich bedankt: 384 mal
Hat Dank erhalten: 286 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von FortiSecond »

Ist automatisches Einlesen aktiv? Vielleicht hakt es bei den genannten "Ereignis-Abos".
--
Hinweis: Die Kraft kehrt zurück...
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

checke ich am Mittag nochmal
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

automatisches Einlesen nicht aktiv
Gruß
CGM-FTW
Beiträge: 59
Registriert: Mittwoch 15. November 2023, 08:10
1
PVS: CGMMANAGEDTI
Konnektortyp: Kocobox
Hat Dank erhalten: 37 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von CGM-FTW »

Die Subscription, die das KT versucht zu setzen besteht aus einer SOAP Anfrage mit Mandant, Clientsystem und Arbeitsplatz.

Das System sagt, dass sie übermittelten Parameter ungültig sind.

Woran kann das liegen? Ins blaue geraten: Vermutlich ein Problem mit dem Infomodell. Es besteht ggf. keine Verknüpfung mehr zwischen Arbeitsplatz und dem KT, oder es fehlt der CSAPS Eintrag für den Arbeitsplatz im Infomodell.
Da sollte Red Medical mal schauen, ob alles da ist.

Turbomed hat seine eigenarten mit der Groß- und Kleinschreibung, d.h. im Konnektor müssen soweit ich weiß alle Arbeitsplätze in "Capslock" geschrieben sein.

Es gibt zumindest bei Koco-Boxen auch Slot-Parameter, an denen definiert ist, wo Karten stecken dürfen. Wenn es das bei Rise auch gibt, sind ggf. dort nicht alle Slots angehakt?

Ich hatte mal ein Tool geschrieben, um die aktiven Subscriptions via SOAP auf dem Konnektor abzufragen. Hilft vermutlich hier nicht so ganz. Könnte dir aber z.B. dabei helfen zu prüfen, ob Mandant, Clientsystem und Arbeitsplatz korrekt im Infomodell angelegt sind.

Du kannst natürlich auch mal ein Wireshark laufen lassen und versuchen die SOAP Nachricht mitzuschneiden. Wenn du die entschlüsselt bekommst, würdest du ja sehen, welche Parameter in der Anfrage gesetzt sind.

Code: Alles auswählen

#!/usr/bin/env python3
#2024-11-11 by Christian Krause
import requests, xml.dom.minidom, ssl, sys, re, argparse, urllib3, threading
from socket import timeout
from datetime import datetime
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

################## Base Functions #########################
def main(host, a):
   K = Kon(host, a.mandant, a.clientsystem, a.arbeitsplatz, a.authMethod, a.proxy, a.mandantwide)
   K.getSubscription(a.filter, a.write)

def parseArgs():
   p = argparse.ArgumentParser(description='Konnektor2CheckMK')
   p.add_argument('-v', '--version', action='version', version='%(prog)s 1.0 mit API-Version: 1.1')
   p.add_argument('-d', '--debug', action='store_true', help='No Sanity-Check. Just do it!')
   p.add_argument('-p', '--proxy', action='store_true', help='Do not ignore system Proxy')
   p.add_argument('-i', '--ip', dest='ipArray', nargs='+', metavar=("<IP/IP-Range/IP-Ranges>"), required=True, help='IP or IP-Range of Konnektor: 10.1.1.17 or 10.1.1.20-35')
   p.add_argument('-m', '--mandant', required=True, metavar=("<Mandant>"))
   p.add_argument('-c', '--clientsystem', required=True, metavar=("<Clientsystem>"))
   p.add_argument('-a', '--arbeitsplatz', required=True, metavar=("<Arbeitsplatz>"))
   p.add_argument('-w', '--mandantwide', action='store_true', help='Set Mandantwide Option')
   p.add_argument('-s', '--authmethod', dest='authMethod', default="https", nargs='+', metavar=("<Auth Mechanism> [FileName] or <Auth Mechanism [<User> <Pass>]"), help='Auth-Mechanism: http, https, auth, cert')
   p.add_argument('-f', '--filter', metavar=("<String>"), help='Filter for special String')
   p.add_argument('-o', '--write', action='store_true', help='Write output to disk <ip>.log')
   return p.parse_args()

def initializeDicts():
   # {"inputVar": ["Fehlermeldung", "Prüf-Regex"]}
   global sanitizingDict
   sanitizingDict = {
      "ipArray": ["Ungültige IP-Adresse/IPRange! Range z.B. 192.168.0.17-24", "^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(-25[0-5]|-2[0-4][0-9]|-1[0-9][0-9]|-[1-9]?[0-9])?$"],
      "mandant": ["Mandant: Ungültige Zeichen oder Zeichenkette länger als 64 Zeichen! Gültige Zeichen: A-Z a-z 0-9 öÖäÄüÜß @#_-§%+:=.", "^[a-zA-Z0-9öÖäÄüÜß@#_\-§%+:=\.]{1,64}$"],
      "clientsystem": ["ClientSystem: Ungültige Zeichen oder Zeichenkette länger als 64 Zeichen! Gültige Zeichen: A-Z a-z 0-9 öÖäÄüÜß @#_-§%+:=.", "^[a-zA-Z0-9öÖäÄüÜß@#_\-§%+:=\.]{1,64}$"],
      "arbeitsplatz": ["Arbeitsplatz: Ungültige Zeichen oder Zeichenkette länger als 64 Zeichen! Gültige Zeichen: A-Z a-z 0-9 öÖäÄüÜß @#_-§%+:=.", "^[a-zA-Z0-9öÖäÄüÜß@#_\-§%+:=\.]{1,64}$"],
      "authMethod": ["", "^(http|https|cert|auth)"],
    }

   global soapBody
   soapBody =  """
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v7="http://ws.gematik.de/conn/EventService/v7.2" xmlns:v2="http://ws.gematik.de/conn/ConnectorContext/v2.0" xmlns:v5="http://ws.gematik.de/conn/ConnectorCommon/v5.0">
        <soapenv:Header/>
        <soapenv:Body>
            <v7:GetSubscription mandant-wide="%s">
            <v2:Context>
                <v5:MandantId>%s</v5:MandantId>
                <v5:ClientSystemId>%s</v5:ClientSystemId>
                <v5:WorkplaceId>%s</v5:WorkplaceId>
            </v2:Context>
            </v7:GetSubscription>
        </soapenv:Body>
        </soapenv:Envelope>
    """ 

def ipRange(ipRanges):
   ipArray = []
   for ipRange in ipRanges:
      if re.search('-', ipRange):
         fromIP, toOctet = ipRange.rsplit("-", 1)
         ipBase, fromOctet = fromIP.rsplit(".", 1)
         if int(toOctet) <= int(fromOctet):
            print('"Bis"-Angabe im Konnektor-Range muss größer sein als "Von"-Angabe!')
            sys.exit()
         ipArray += [ipBase + "." + str(i) for i in range(int(fromOctet), int(toOctet) + 1, 1)]
      else:
         ipArray.append(ipRange)
   return ipArray

def Sanitizing():
   for inputVar in vars(args):
      if not (inputValue := getattr(args, inputVar)):
         continue
      elif not type(inputValue) == list:
         inputValue = [inputValue]
      # Prüfe Regex für authMethod Parameter
      if inputVar == "authMethod":
         message, regex = sanitizingDict.get(inputVar)
         if not (re.search(regex, inputValue[0])):
            print("Ungültige Authentifizierungsmethode: http, https, auth, cert")
            return False
         if inputValue[0] == "auth" and not len(inputValue) == 3:
            print("Bitte Benutzername und Kennwort als Parameter eingeben!")
            return False
         elif inputValue[0] == "cert" and not len(inputValue) == 2:
            print("Bitte Pfad der Zertifikatsdatei angeben (Dateiname: globalcert.pem und globalcert.txt)")
            return False
      # Prüfe Regex für alles andere
      elif inputVar in sanitizingDict.keys():
         message, regex = sanitizingDict.get(inputVar)
         for inputString in inputValue:
            if not (re.search(regex, inputString)):
               print(message)
               return False
   return True

################## Kon Class #########################
class Kon:
   def __init__(self, host, Mandant, ClientSystem, Arbeitsplatz, authMethod, Proxy, MandantWide):
      self.host = host
      self.Mandant = Mandant
      self.MandantWide = "true" if MandantWide else "false"
      self.ClientSystem = ClientSystem
      self.Arbeitsplatz = Arbeitsplatz
      self.headers = {}
      self.session = requests.session()
      self.session.trust_env = Proxy
      # Set Auth Parameter
      self.URL = f'https://{host}:443'
      self.cert = None
      self.Auth = None
      if authMethod[0] == 'http':
         self.URL = f'http://{host}:80'
      elif authMethod[0] == "cert":
         self.cert = authMethod[1]
      elif authMethod[0] == "auth":
         self.Auth = f'{authMethod[1]}:{authMethod[2]}'
         self.Auth = "'Basic ' + str(b64encode(self.Auth.encode()))"

   def konComm(self, Service, data=None):
      Message = ""
      try:
         if self.Auth: self.headers.update({"Authorization": self.Auth})
         self.response =\
            self.session.post(f'{self.URL}{Service}', timeout=6, headers=self.headers, verify=False, cert=self.cert, data=data) if data else\
            self.session.get(f'{self.URL}{Service}', timeout=6, headers=self.headers, verify=False, cert=self.cert)
         assert self.response.status_code == 200
         return True
      except requests.exceptions.Timeout:
         Message = "Konnektor Timeout"
      except IOError:
         Message = "Es ist ein Kommunikationsfehler mit dem Konnektor aufgetreten. Fehlendes Zertifikat oder TLS Verbindung fehlgeschlagen."
      except AssertionError:
         status_code = str(self.response.status_code)
         Message = f' HTTP Status Code: {status_code}'
      except:
         Message = "Ein undefinierter Fehler ist aufgetreten."
      if Message: print(Message)
      return False

   def getSubscription(self, filter, write):
      data = soapBody% (self.MandantWide, self.Mandant, self.ClientSystem, self.Arbeitsplatz)
      self.headers = {
         "Content-Type": "text/xml; charset=""utf-8""",
         "Content-Length": str(len(data)),
         "SOAPAction": "http://ws.gematik.de/conn/EventService/v7.2#GetSubscription"
         }
      if not self.konComm('/service/systeminformationservice', data):
         return False
      dom = xml.dom.minidom.parseString(self.response.text)
      if not filter:
         if write: self.writeFile(dom.toprettyxml())
         print(dom.toprettyxml())
         return True
      node = dom.childNodes[0].childNodes[0].childNodes[0].childNodes[1]
      self.Soap = ''
      for e in node.childNodes:
         Found = False
         # Find filter
         for n in e.childNodes:
            prefix, tag = xml.dom.minidom._nssplit(n.nodeName)
            if n.firstChild.data == filter:
               Found = True
         # Print if found
         if Found:
            msg = ""
            for n in e.childNodes:
               prefix, tag = xml.dom.minidom._nssplit(n.nodeName)
               if write: 
                  msg = '%s %s'%(msg, f'{tag}: {n.firstChild.data}\n')
               print(f'{tag}: {n.firstChild.data}')
            if write: self.writeFile(msg)
      return True
   
   def writeFile(self, Message):
      with open(f'{self.host}.log', "a") as f:
         Date = datetime.now()
         isodate = Date.isoformat().rsplit(':', 1)[0]
         f.write(f'==================== {isodate} ====================\n')
         f.write(f'{Message}\n')
   

################# Main Function ####################
if __name__ == "__main__":
   initializeDicts()
   args = parseArgs()
   # Create RandomValue for this Programinstance
   if args.debug or Sanitizing():
      for host in ipRange(args.ipArray):
         threading.Thread(target=main, args=(host, args)).start()
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

red hat schon 2 x draufgeschaut , angeblich alle Einträge korrekt, bald die dritte Sitzung, ich werde aber die Infos weiterleiten, in den log steht irgendwas vin Kommunikationsproblem, erstaunlich ist aber das sonst alles funktioniert, eAU e Rezept , kim usw. nur das Einlesen der eGk nicht.
Gruß
Benutzeravatar
FortiSecond
Beiträge: 885
Registriert: Dienstag 2. August 2022, 21:30
2
Hat sich bedankt: 384 mal
Hat Dank erhalten: 286 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von FortiSecond »

Irgendwas doppel? IP-Adresse, Hostname etc.?
Netzwerkanbindung "durch" ein Telefon hindurch (Grandstream, Fanvil und Co.)? Deren Switche sind manchmal etwas fishy.
--
Hinweis: Die Kraft kehrt zurück...
ivenae
Beiträge: 23
Registriert: Dienstag 16. August 2022, 21:42
2
Hat Dank erhalten: 17 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von ivenae »

Es gab im TI-Forum wohl tatsächlich das Problem, dass Medistar die SOAP Nachricht falsch zusammengeschustert hat und das erneute Anlegen des KT hat geholfen. Betraf aber Medistar. Ist ziemlich weit weg.
Bin aber verwundert, dass sonst noch niemand den Fehler hatte.
Sniffing würde tatsächlich helfen, dann wüßte man, ob die SOAP Nachricht korrekt ist.
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

folgender Error in der log -Datei 1 14104 16344 ERROR 2025.03.23 14:39:40.673 connector.cpp 1615 183 Error: 4021 = Fehler beim (sic!) der Abfrage der Ereignis-Abos: Es sind nicht alle Pflichtparameter gesetzt.
Red sagt alle ok, Turbomed sagt liegt nicht an TM, Fehler Konnektor , als Kunde bin ich wieder mal völlig hilflos und genervt. vorallem das gegenseitige Schuldzuweisen zwischen TM und Red nervt. Ich habe mich mit einem mobilen KT geholfen und noch eine altes Orga 600 bei Ebay bestellt. Quartalwechsel naht
LG und Danke fürs helfen
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry  [GELÖST]

Beitrag von redwulf »

"" Turbomed hat seine eigenarten mit der Groß- und Kleinschreibung, d.h. im Konnektor müssen soweit ich weiß alle Arbeitsplätze in "Capslock" geschrieben sein"" -> die Info von CGM-FTM war der entscheidende Hinweis , der Name muss ! in Großbuchstaben sein, bei mir groß und klein , nach Umbenennung funktioniert es wieder (komisch, dass es einige Jahre lief, erst seit dem letzten Update Probleme)
vielen Dank für die Hilfe und Tipps
Gruß
Benutzeravatar
FortiSecond
Beiträge: 885
Registriert: Dienstag 2. August 2022, 21:30
2
Hat sich bedankt: 384 mal
Hat Dank erhalten: 286 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von FortiSecond »

redwulf hat geschrieben: Dienstag 25. März 2025, 11:04 Red sagt alle ok, Turbomed sagt liegt nicht an TM, Fehler Konnektor , als Kunde bin ich wieder mal völlig hilflos und genervt. vorallem das gegenseitige Schuldzuweisen zwischen TM und Red nervt.
Und BEIDE sollten die Eigenheiten, die @CGM-FTW angemerkt hat, kennen.
Das hat ja auch nichts mit dem Secunet-Konnektor zu tun, sondern ist allgemeines Wissen um das PVS. Das sollte CGM routinemäßig auffallen, und RED mit dem übergreifenden Angebot sowieso.

Aber wenn ich daran denke, dass ich mit RED mehrere Stunden an einer ALBIS-Anbindung gesessen habe und denen bekannt war, dass "Ini-Einträge zu ändern sind", das dann aber nicht mehr herpuzzlen konnten und letztlich ein ALBIS-Partner* mir den Trick für Secunet-Konnektoren erklärt hat, dann passt das mal wieder. Den ALBIS-Partner nenne ich nicht, weil das auf dem kurzen Weg lief - wobei alle ALBIS-Partner bei bisherigen Kontakten extrem kollegial unterwegs sind.

Ich warte seit drei Monaten auf eine Gutschrift bzw. Rechnungskorrektur. Das Geld ist da, die Papiere mal wieder nicht. Wäre nicht das erste Mal. Und wir reden hier von eHealth/TI-Betrieb, wo man gewisse Sorgfalt erwarten würde.
--
Hinweis: Die Kraft kehrt zurück...
pmortara
Beiträge: 191
Registriert: Donnerstag 12. April 2018, 09:09
7
Wohnort: Frankfurt am Main
Hat sich bedankt: 1 mal
Hat Dank erhalten: 38 mal
Kontaktdaten:

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von pmortara »

Wir hatten tatsächlich aber schon 2 Fälle mit Turbomed, wo der Rechnername im Infomodell NICHT in Großbuchstaben geschrieben werden durfte, sondern so wie er im Windows eingetragen wurde (In diesem Fall 'Anmeldung' anstelle von 'ANMELDUNG'). Weshalb ließ sich damals nicht klären und zumindest bei einem Rechner mussten wir es dann später auch wieder ändern, weil es da Plötzlich wieder nicht funktionierte. Erklären konnte uns das niemand.
Kurz gesagt: Auch wenn es eigentlich immer Großbuchstaben sein sollten, macht es bei unerklärlichen Fällen auch Sinn, es mal anders zu probieren ...
Patrick Mortara

Systemhaus Thomann GmbH
Benutzeravatar
redwulf
Beiträge: 430
Registriert: Montag 23. Oktober 2006, 19:30
18
Wohnort: München
PVS: TM
Konnektortyp: Red/Rise
Hat sich bedankt: 9 mal
Hat Dank erhalten: 21 mal

Re: Fehler Einlesen GKV Karte Cherry

Beitrag von redwulf »

Das irre ist, alles wurde vor Jahren von einem Servicepartner eingerichtet, ursprünglich Kokobox, jetzt Rise über Red. seit Jahren immer wieder TI Probleme, KT s die plötzlich nicht mehr gepairt waren, Komnektor nicht erreichbar, usw. aber auch Wochen ohne Probleme. Jetzt seit der Änderung alles stabil, so einfach kann es sein. Aber Wochen an Lebenszeit durch sinnlose Fernwartungen verloren
Gruß
Antworten

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 0 Gäste