Пример #1
0
    ehr_records = kb.get_ehr_records()
    logging.info('Loaded %d EHR records' % len(ehr_records))

    ehr_lookup = {}
    for rec in ehr_records:
        key = get_ehr_key(rec)
        ehr_lookup.setdefault(rec['i_id'], {}).setdefault(key, []).append(rec)
    logger.debug('Loaded EHR lookup table, %d individuals involved' %
                 len(ehr_lookup.keys()))

    for ind, records in ehr_lookup.iteritems():
        for k, vals in records.iteritems():
            if len(vals) > 1:
                logger.info(
                    '##### Individual %s has %d duplicated EHR records #####' %
                    (ind, len(vals)))
                logger.debug(vals)
                for v in vals[1:]:
                    logger.info('Invalidating record %r' % v)
                    kb.invalidate_ehr_records(v['i_id'],
                                              timestamp=v['timestamp'],
                                              archetype=v['archetype'],
                                              grouper_id=v['g_id'],
                                              field=v['fields'].keys()[0],
                                              field_value=str(
                                                  v['fields'].values()[0]))


if __name__ == '__main__':
    main(sys.argv[1:])
    kb = KB(driver='omero')(host, user, passwd)

    logging.info('Loading EHR records')
    ehr_records = kb.get_ehr_records()
    logging.info('Loaded %d EHR records' % len(ehr_records))

    ehr_lookup = {}
    for rec in ehr_records:
        key = get_ehr_key(rec)
        ehr_lookup.setdefault(rec['i_id'], {}).setdefault(key,[]).append(rec)
    logger.debug('Loaded EHR lookup table, %d individuals involved' %
                 len(ehr_lookup.keys()))

    for ind, records in ehr_lookup.iteritems():
        for k, vals in records.iteritems():
            if len(vals) > 1:
                logger.info('##### Individual %s has %d duplicated EHR records #####' % (ind,
                                                                                         len(vals)))
                logger.debug(vals)
                for v in vals[1:]:
                    logger.info('Invalidating record %r' % v)
                    kb.invalidate_ehr_records(v['i_id'], timestamp = v['timestamp'],
                                              archetype = v['archetype'],
                                              grouper_id = v['g_id'],
                                              field = v['fields'].keys()[0],
                                              field_value = str(v['fields'].values()[0]))

if __name__ == '__main__':
    main(sys.argv[1:])