Пример #1
0
    def getBadResults(result, idList=None):
        packrespinf = result._p10_packrespinf
        errorList = packrespinf._r12_orerl._f10_orflker
        attachResultsMap = dict(
            (attachResult.attachId, attachResult) for attachResult in map(
                CR23AttachService.getAttachResult, errorList))
        if -1 in attachResultsMap:
            commonErrors = attachResultsMap[-1].errors
            del attachResultsMap[-1]
            if idList:
                for attachId in idList:
                    attachResultsMap.setdefault(
                        attachId,
                        AttachResult(attachId=attachId,
                                     errors=[])).errors.extend(commonErrors)

        if packrespinf._r10_packinf._p13_zerrpkg != 0 or packrespinf._r11_rsinf._r10_responcecode == AttachError.CriticalErrorPackageRejected:
            err = packrespinf._r11_rsinf
            packageError = AttachError(err._r10_responcecode,
                                       forceUnicode(err._responceMessage))
            if idList:
                for attachId in idList:
                    attachResultsMap.setdefault(
                        attachId,
                        AttachResult(attachId=attachId,
                                     errors=[])).errors.append(packageError)

        return attachResultsMap.values()
Пример #2
0
 def getAttachResult(node):
     return AttachResult(attachId=node._f10_nzap,
                         errors=[
                             AttachError(err._e10_ecd,
                                         forceUnicode(err._e11_ems))
                             for err in node._f11_flkerrorList._f10_flkerror
                         ])
Пример #3
0
    def getResponsePackageErrors(responceInfo):
        if hasattr(responceInfo, '_p10_packinf'
                   ) and responceInfo._p10_packinf._p13_zerrpkg != 0:
            return [
                AttachError(
                    responceInfo._p10_packinf._p13_zerrpkg,
                    forceUnicode(responceInfo._p10_packinf._p14_errmsg))
            ]

        if hasattr(responceInfo, '_r10_packinf'
                   ) and responceInfo._r10_packinf._p13_zerrpkg != 0:
            return [
                AttachError(
                    responceInfo._r10_packinf._p13_zerrpkg,
                    forceUnicode(responceInfo._r10_packinf._p14_errmsg))
            ]

        return []
Пример #4
0
 def getAttachInfoList(node):
     return [
         AttachInfo(orgCode=node._p11_mocd,
                    sectionCode=item._a12_sect,
                    begDate=forceDate(fromDateTimeTuple(item._a10_aad)),
                    attachType=forceInt(item._a13_attp),
                    attachReason=forceInt(item._a14_pr),
                    doctorSNILS=forceUnicode(item._a11_snisl))
         for item in node._p13_orcl
     ]
Пример #5
0
    def getAttachInformation(self, clientInfo):
        u""" Проверка факта прикрепления пациента """
        try:
            port = self.getPort()

            req = srv.GetAttachInformation()
            req._username = self.username
            req._password = self.password
            req._sendercode = self.senderCode
            self.insertPackageInformation(
                req, self.senderCode, srv.ns0.cAttachInformationPackage_Def)

            req._orderpack._p11_pr = self.getPersonDef(clientInfo, '_p11_pr')

            resp = port.GetAttachInformation(req)
            responcepack = resp._responcepack
            responceInfo = responcepack._p10_packrespinf

            responceErrors = self.getResponsePackageErrors(responceInfo)
            if responceErrors:
                raise CSynchronizeAttachException(u','.join(
                    map(unicode, responceErrors)))

            attachList = responcepack._p11_atachlist._l10_orcl
            if not attachList:
                errorList = [
                    AttachError(e._e10_ecd, forceUnicode(e._e11_ems))
                    for e in responceInfo._r12_orerl._f10_orflker[0].
                    _f11_flkerrorList._f10_flkerror
                ]
                if AttachError.AttachesNotFound in [e.code for e in errorList]:
                    return AttachResult(result=AttachedClientInfo())
                else:
                    return AttachResult(errors=errorList)

            node = attachList[0]  # len > 1 ?
            client = self.getClientInfo(node._p12_pr)
            client.attaches = self.getAttachInfoList(node)

            return AttachResult(result=client)

        except SocketError as e:
            raise CSynchronizeAttachException(
                CR23AttachService.getNoConnectMessage(e))

        except Exception:
            raise

        finally:
            if self.tracefile:
                self.tracefile.flush()
Пример #6
0
 def getClientInfo(node):
     doc = DocumentInfo(forceUnicode(node._a21_ps),
                        forceUnicode(node._a22_pn), forceInt(node._a23_dt))
     policy = PolicyInfo(forceUnicode(node._a11_dcs),
                         forceUnicode(node._a12_dcn),
                         forceInt(node._a10_dct))
     return AttachedClientInfo(nameCase(forceUnicode(node._a15_pfio)),
                               nameCase(forceUnicode(node._a16_pnm)),
                               nameCase(forceUnicode(node._a17_pln)),
                               forceDate(fromDateTimeTuple(node._a19_pbd)),
                               doc=doc,
                               policy=policy)
Пример #7
0
 def getDeAttachQueryInfo(node):
     return DeAttachQuery(id=forceRef(node._m01_nzap),
                          srcOrgCode=forceUnicode(node._m02_mosrc),
                          destOrgCode=forceUnicode(node._m03_modes),
                          client=CR23AttachService.getClientInfo(
                              node._m04_pep))
Пример #8
0
 def getDeAttachedClientInfo(node):
     p = node._p11_pr
     doc = DocumentInfo(forceUnicode(p._a21_ps), forceUnicode(p._a22_pn),
                        forceInt(p._a23_dt))
     policy = PolicyInfo(forceUnicode(p._a11_dcs),
                         forceUnicode(p._a12_dcn),
                         forceInt(p._a10_dct),
                         insurerCode=forceUnicode(p._a13_smcd),
                         insuranceArea=forceUnicode(p._a14_trcd))
     attach = AttachInfo(orgCode=forceUnicode(node._p15_mo),
                         sectionCode=forceUnicode(node._p12_sect),
                         endDate=forceDate(fromDateTimeTuple(
                             node._p13_add)),
                         deattachReason=forceInt(node._p14_adr),
                         id=forceRef(node._p10_nzap))
     return AttachedClientInfo(nameCase(forceUnicode(p._a15_pfio)),
                               nameCase(forceUnicode(p._a16_pnm)),
                               nameCase(forceUnicode(p._a17_pln)),
                               forceDate(fromDateTimeTuple(p._a19_pbd)),
                               forceInt(p._a18_ps),
                               doc=doc,
                               policy=policy,
                               attach=attach)
Пример #9
0
 def getAttachedClientInfo(node):
     doc = DocumentInfo(forceUnicode(node._a28), forceUnicode(node._a29),
                        forceInt(node._a30))
     policy = PolicyInfo(forceUnicode(node._a05),
                         forceUnicode(node._a06),
                         forceInt(node._a07),
                         enp=forceUnicode(node._a08),
                         insurerCode=forceUnicode(node._a32))
     attaches = [
         AttachInfo(begDate=fromDateTimeTuple(a._i1),
                    doctorSNILS=forceUnicode(a._i2),
                    sectionCode=forceUnicode(a._i3),
                    orgCode=forceUnicode(a._i4),
                    attachType=forceInt(a._i5)) for a in node._a09
     ]
     regAddress = AddressInfo(forceUnicode(node._a12_r),
                              forceUnicode(node._a13_c),
                              forceUnicode(node._a14_n),
                              forceUnicode(node._a15_u),
                              forceUnicode(node._a16_d),
                              forceUnicode(node._a17_k),
                              forceUnicode(node._a18_k))
     locAddress = AddressInfo(forceUnicode(node._a19_pr),
                              forceUnicode(node._a20_pc),
                              forceUnicode(node._a21_pn),
                              forceUnicode(node._a22_pu),
                              forceUnicode(node._a23_pd),
                              forceUnicode(node._a24_pk),
                              forceUnicode(node._a25_pk))
     return [
         AttachedClientInfo(nameCase(forceUnicode(node._a01)),
                            nameCase(forceUnicode(node._a02)),
                            nameCase(forceUnicode(node._a03)),
                            birthDate=forceDate(fromDateTimeTuple(
                                node._a04)),
                            sex=forceUnicode(node._a10),
                            SNILS=forceUnicode(node._a31),
                            doc=doc,
                            policy=policy,
                            attach=attach,
                            regAddress=regAddress,
                            locAddress=locAddress) for attach in attaches
     ]
Пример #10
0
 def cli(self):
     u"""
     :rtype: Client
     """
     if self._cli is None:
         try:
             self._cli = Client(self._wsdl, timeout=self._timeout)
             self._cli.set_options(cache=DocumentCache())
         except URLError as e:
             self._logger.exception(e)
             raise CServiceTFOMSException(u'Ошибка подключения к серверу ТФОМС: ({0})\n{1}'.format(self._wsdl,
                                                                                                   forceUnicode(e)))
     return self._cli