Отправка массовых данных на сервер Azure FHIR - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь обработать CSV-файлы, которые содержат более 20000 сведений о пациенте. Всего 50 столбцов, и каждый пациент будет иметь несколько строк в качестве почасовых данных Большинство столбцов относятся к типу ресурса Observation. Как частота сердечных сокращений, температура, кровяное давление.

Я успешно преобразовал данные в формат FHIR. однако, когда я пытаюсь извлечь данные * на сервере FHIR, сервер выдает ошибку, говорящую, что максимум 500 записей разрешены только для данных.

Даже если я жду до 500 записей и пу sh файла json, это займет довольно много времени, чтобы покрыть 20000 * 50. Есть ли эффективный способ массовой вставки данных на сервер azure fhir?

В настоящее время я использую следующий код. Но, похоже, это займет довольно много времени и ресурсов. Поскольку в моем файле CSV есть около 0,7 миллиона строк.

def export_template(self, template):
     if self.export_max_500 is None:
         self.export_max_500 = template
     else:
         export_max_500_entry = self.export_max_500["entry"]
         template_entry = template["entry"]
         self.export_max_500["entry"] = export_max_500_entry + template_entry
         if len(self.export_max_500["entry"]) > 500:
             template["entry"] = self.export_max_500["entry"][:495]
             self.export_max_500["entry"] = self.export_max_500["entry"][495:]
             self.send_to_server(template)

1 Ответ

1 голос
/ 29 апреля 2020

Самый эффективный способ - не отправлять несколько (пакетных) пакетов. Это на самом деле делать много отдельных запросов, работающих параллельно. Ваша проблема в том, что вы отправляете их последовательно и получаете огромное влияние на время прохождения туда-обратно. Вы можете взглянуть на что-то вроде этого загрузчика: https://github.com/hansenms/FhirLoader, который распараллеливает запросы. Вы также захотите обновить RU на вашем сервисе, чтобы убедиться, что у вас достаточно пропускной способности для ввода данных.

...