内容简介:Read more about internals and extendability in theThere are two general ways of searching for patients with specific properties. The first one is to search by coding system:The second one is by text. The searched tags are CodeableConcept.text, Coding.displ
ml-on-fhir
A work in progress library that fuses the HL7 FHIR standard with scikit-learn
Read more about internals and extendability in the readthedocs .
Usage (taken from our demo notebook )
First: Register the base URL of your database with a FHIRCient object:
from fhir_client import FHIRClient import logging import pandas as pd logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) client = FHIRClient(service_base_url='https://r3.smarthealthit.org', logger=logger)
Querying Patients
There are two general ways of searching for patients with specific properties. The first one is to search by coding system:
# To receive a list of available procedures: procedures = client.get_all_procedures() pd.DataFrame([prod.code['coding'][0] for prod in procedures]).drop_duplicates().sort_values(by=['display']).head() # Now retrieve patients patients_by_procedure_code = client.get_patients_by_procedure_code("http://snomed.info/sct","73761001")
The second one is by text. The searched tags are CodeableConcept.text, Coding.display, or Identifier.type.text:
conditions = client.get_all_conditions() pd.DataFrame([cond.code['coding'][0] for cond in conditions]).drop_duplicates(subset=['display']).sort_values(by='display', ascending=True).head() patients_by_condition_text = client.get_patients_by_condition_text("Abdominal pain")
One can also load a control group for a specific cohort of patients. The control group is of equal size of the case cohort (min size: 10) and is composed of randomly sampled patients that do not match the original query. Their class is contained in the .case property of the Patient object.
patients_by_condition_text_with_controls = client.get_patients_by_condition_text("Abdominal pain", controls=True) print("{} are cases and {} are controls".format(len([d for d in patients_by_condition_text_with_controls if d.case]), len([d for d in patients_by_condition_text_with_controls if not d.case])))
Machine Learning
To train a classifier, we need to first tell the MLOnFHIRClassifier
the type of object which we would like to classify. We can then define features ( feature_attrs
) and labels ( label_attrs
) for our classification task and pass the preprocessor of our current client, so it is clear how to preprocess the features/labels of a patient. We can then simply call .fit
on the MLOnFHIRClassifier
instance together with our classifier of choice.
from ml_on_fhir import MLOnFHIRClassifier from fhir_objects.patient import Patient from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score, roc_curve, auc ml_fhir = MLOnFHIRClassifier(Patient, feature_attrs=['birthDate', 'gender'], label_attrs=['case'], preprocessor=client.preprocessor) X, y, trained_clf = ml_fhir.fit(patients_by_condition_text_with_controls, DecisionTreeClassifier()) from sklearn.metrics import accuracy_score, roc_curve, auc fpr, tpr, _ = roc_curve(y, trained_clf.predict(X)) print("Prediction accuracy {}".format( auc(fpr, tpr) ) )
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
响应式Web设计实践
[美] Tim Kadlec / 侯鸿儒 / 人民邮电出版社 / 2013-3-1 / 55.00元
随着各种各样的移动设备不断地涌现到使用者面前,Web设计的适应性已经成为设计师们所面临的最为艰巨的挑战。你设计出的网站不仅要在桌面计算机的大尺寸屏幕上可以为用户提供友好的UI和用户体验,同时在小尺寸屏幕上也应该可以提供一致的用户体验,并可以让用户能够在桌面大屏幕上和移动小屏幕上平滑切换,同时没有任何的不适应感觉。 本书作者是一位出色的开发者,在本书中,他将诸多技术和设计理念杂糅在一起,再辅以......一起来看看 《响应式Web设计实践》 这本书的介绍吧!