57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
|
|
#! /usr/bin/env python3
|
|||
|
|
|
|||
|
|
import argparse
|
|||
|
|
import json
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
import requests
|
|||
|
|
|
|||
|
|
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) " \
|
|||
|
|
"Chrome/74.0.3729.169 Safari/537.36"
|
|||
|
|
|
|||
|
|
header = {"User-Agent": user_agent}
|
|||
|
|
|
|||
|
|
|
|||
|
|
def lims_login():
|
|||
|
|
postUrl = "https://dna.jmdna.com/user/login/auth"
|
|||
|
|
postData = {"userName": "zlseq2", "password": "seq345@JM"}
|
|||
|
|
try:
|
|||
|
|
response = requests.post(postUrl, params=postData, headers=header)
|
|||
|
|
token = json.loads(response.text)["data"]["accessToken"]
|
|||
|
|
except Exception as e:
|
|||
|
|
raise UserWarning('lims连接失败!请查看', e)
|
|||
|
|
return token
|
|||
|
|
|
|||
|
|
|
|||
|
|
def lims_search(barcode):
|
|||
|
|
token = lims_login()
|
|||
|
|
payload = {'search[barcode][value]': barcode, "accessToken": token, 'search[report][value]': 0,
|
|||
|
|
'format': '2', 'size': '1000', 'search[barcode][query]:': "eq"}
|
|||
|
|
try:
|
|||
|
|
sample_msg = requests.get("https://dna.jmdna.com/sample/sample/search?", params=payload,
|
|||
|
|
timeout=20, headers=header).text
|
|||
|
|
except Exception as e:
|
|||
|
|
raise UserWarning(f'获取lims系统请求失败 {e}')
|
|||
|
|
|
|||
|
|
lims_infos = json.loads(sample_msg)
|
|||
|
|
code = lims_infos['code']
|
|||
|
|
if code != '-1':
|
|||
|
|
msg = lims_infos['message']
|
|||
|
|
raise UserWarning(f'获取lims系统请求失败 {msg}')
|
|||
|
|
return lims_infos
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
parser = argparse.ArgumentParser(description="JM get sampleinfo from lims ")
|
|||
|
|
|
|||
|
|
parser.add_argument('-s', '--barcode', help="sample's barcode", required=True)
|
|||
|
|
parser.add_argument('-o', '--output_dir', help="Output directory, default ./", default='')
|
|||
|
|
args = parser.parse_args()
|
|||
|
|
|
|||
|
|
barcorde = args.barcode
|
|||
|
|
sample_data = lims_search(barcorde)
|
|||
|
|
|
|||
|
|
json_out = os.path.join(args.output_dir, 'qc', f'{barcorde}_post.json')
|
|||
|
|
with open(json_out, 'w', encoding='utf8') as ff:
|
|||
|
|
json.dump(sample_data, ff, ensure_ascii=False, indent=4)
|