10-Minute Tutorial: Patient-Level Prediction or "PLP" (Jenna Reps)

OHDSI
21 Jun 202214:07

Summary

TLDRThe video script introduces the 'Odyssey' GitHub repository for the Patient Prediction package, a tool for developing and validating predictive models in healthcare. It covers the basics of prediction, focusing on disease onset, progression, and treatment response. The script offers a demo using the 'nomia' package, showcasing how to design models, select features, and perform internal validation. It also highlights customization options and a new Shiny app for model result visualization.

Takeaways

  • 📚 The script introduces the 'Odyssey' GitHub repository, which is a patient prediction package for developing and validating prediction models.
  • 🔮 It explains the purpose of the package, which is to predict the risk of future outcomes based on current data, focusing on modern prognostic models and diagnostic models.
  • 🏥 The 'index' concept is discussed, which is a point in time such as a doctor's visit, the start of pregnancy, or the end of pregnancy, where predictions can be made about future health outcomes.
  • 📈 The script highlights the ability to learn patterns from medical records to predict future risks, such as the likelihood of a stroke within a certain timeframe.
  • 🚫 It clarifies that the package is not for causal inference but for personalizing risk predictions for future or current outcomes.
  • 🎯 The main categories for prediction include disease onset, progression, treatment choice, treatment response, safety, and treatment adherence.
  • 🛠️ The process of creating a model design is outlined, which involves specifying the target population, outcome, and time span for predictions.
  • 🔧 The script discusses the customization options available for feature engineering, sampling, pre-processing, and model fitting within the package.
  • 📊 The importance of data splitting for model development and performance estimation is emphasized, with options for customizing the data split process.
  • 💾 The demonstration includes using the 'nomia' package, which contains data for testing and running the patient prediction package without needing external data.
  • 📱 The script concludes with an overview of a new shiny app interface for viewing model results, diagnostics, and performance metrics like the ROC and calibration plots.

Q & A

  • What is the main purpose of the 'patient prediction' package discussed in the script?

    -The 'patient prediction' package is designed for developing and validating prediction models that can estimate the risk of future outcomes based on baseline features extracted from medical records.

  • What types of prediction models does the package support?

    -The package supports both classification and survival models, focusing on personalized risk prediction for outcomes such as disease onset, progression, treatment choice, treatment response, and safety.

  • What is the significance of the 'index' in the context of the script?

    -The 'index' refers to a specific point in time, such as a patient's visit to a doctor or the start of a condition, from which baseline features are considered for predicting future outcomes.

  • How does the package handle the prediction of disease onset or progression?

    -For disease onset or progression, the package considers the target population, the outcome to be predicted, and the time at risk. It uses data from medical records up to the index to predict the risk of a future event within a specified time frame.

  • What customization options does the package offer for model development?

    -The package allows for customization in various stages, including feature engineering, sampling, pre-processing, model fitting, and data splitting for internal validation. Users can write custom code to tailor these processes to their specific needs.

  • What is the role of the 'model design' in the package?

    -The 'model design' specifies the components necessary for prediction, including the target population, the outcome, and the time at risk. It guides the package in creating a prediction model tailored to the user's specific requirements.

  • How does the package handle feature extraction from medical records?

    -Users can specify what features or covariates they want to extract from the data, such as demographics, gender, age groups, recent drug usage, and conditions. The package also supports the use of vocabulary hierarchies for grouping these features.

  • What is the 'nomia' package mentioned in the script, and how is it used?

    -The 'nomia' package is a dataset provided for testing and demonstration purposes. It allows users to run the 'patient prediction' package without their own data, helping them understand how the package functions.

  • What is the purpose of the shiny app interface mentioned in the script?

    -The shiny app interface is a new feature that provides an interactive way to view and analyze the results of the prediction models. It allows users to explore model diagnostics, performance summaries, and various plots for a deeper understanding of the model outcomes.

  • How does the package handle the storage and retrieval of model results?

    -The package uses an SQLite database to store all the models and their results. This allows for easy retrieval and comparison of different models and their performances.

  • What kind of diagnostics does the package provide to assess the model design and data?

    -The package provides diagnostics to check for any issues in the model design and the data being used. This helps ensure that the models are developed correctly and that the data is suitable for the intended predictions.

Outlines

00:00

📚 Introduction to Patient Prediction Package

The script introduces the 'Odyssey' GitHub repository for the 'Patient Prediction' package, a tool for developing and validating predictive models in healthcare. It explains the purpose of the package, which is to answer questions related to predicting future outcomes based on current data points. The speaker outlines the types of predictive models, such as disease onset, progression, treatment choice, treatment response, and safety, and emphasizes that the package is not for causal inference but for personalizing risk predictions. The script also mentions updates to the package and provides a brief overview of how the package can be used to predict risks like the chance of having a stroke within a year, given a patient's medical records.

05:00

🛠️ Customizing Prediction Models with Model Design

This paragraph delves into the technical aspects of creating a model design for predictions, which involves specifying the target population, outcome, and time at risk. It discusses how to define the target population using a cohort ID and how to set the outcome and time span for predictions. The script explains additional settings like restricting the data to certain time points or sampling a subset of the data for efficiency. It also covers how to specify features or covariates for the model, including demographic information, drug history, and conditions. The paragraph further explains the options for feature engineering, sampling techniques, pre-processing steps, model selection, and data splitting for model development and validation.

10:01

🔧 Fitting Models and Internal Validation Process

The final paragraph describes the process of fitting models and conducting internal validation using the 'Patient Prediction' package. It details the steps to run multiple prediction models by specifying database details, model designs, and cohort definitions. The script mentions the output of the process, which includes data objects, model fit results, diagnostics for model checking, and an SQLite database for storing all models. Additionally, it provides a quick overview of a new shiny app interface that allows users to explore the results of the models, including diagnostics, performance summaries, and various plots for model evaluation. The paragraph concludes with the speaker stopping the demonstration due to time constraints.

Mindmap

Keywords

💡Odyssey GitHub Repository

The Odyssey GitHub Repository is the central location where the source code for the 'patient prediction package' is stored and managed. This repository is essential for developers and users to access, contribute to, and download the package. In the script, it is mentioned as the starting point for discussing the functionalities of the prediction package.

💡Prediction Models

Prediction models are analytical tools used to forecast future outcomes based on existing data. In the context of the video, these models are developed for healthcare purposes, aiming to predict risks associated with certain conditions or treatments. The script discusses how these models are created and validated within the patient prediction package.

💡Prognostic Models

Prognostic models are a type of prediction model that estimates the probability of future events, such as disease progression or recovery. The script emphasizes that while the package can be used for diagnostic models, its primary focus is on prognostic models that predict outcomes over time.

💡Index

In the script, 'index' refers to a specific point in time, such as the start of a medical condition or treatment, which serves as a reference for making predictions. It is the baseline from which the model assesses the patient's risk of a future outcome based on their medical history up to that point.

💡Cohort

A cohort in this context is a group of individuals who share a common characteristic or experience, such as having a particular medical condition or undergoing a specific treatment. The script mentions creating cohorts for different target populations to analyze their risk of outcomes.

💡Outcome

Outcome refers to the event or result that the prediction model is trying to forecast. In healthcare, this could be the onset of a disease, treatment response, or occurrence of an adverse event. The script discusses how the package allows users to define the outcome they wish to predict.

💡Time at Risk

Time at risk is the period during which an individual is susceptible to the outcome being predicted. The script explains that this time frame is a critical component in setting up a prediction model, as it defines when the predicted outcome is expected to occur.

💡Feature Engineering

Feature engineering is the process of using domain knowledge to create new input variables or modify existing ones in the data, which can improve model accuracy. The script mentions that the package now supports feature engineering, allowing users to customize the model's inputs.

💡Model Design

Model design in the script refers to the structured setup for a prediction model, including defining the target population, outcome, and time at risk. It is a crucial step in the process, as it dictates the scope and focus of the prediction model being developed.

💡Internal Validation

Internal validation is the process of assessing the performance of a prediction model using the same data that was used to develop the model. The script describes how the package facilitates internal validation to ensure the model's reliability and accuracy.

💡Shiny App

The Shiny App mentioned in the script is a user-friendly interface that allows users to interact with the prediction models and results. It provides a visual and accessible way to explore model diagnostics, performance metrics, and individual predictions.

Highlights

Introduction to the Odyssey GitHub repository for the Patient Prediction package, a tool for developing and validating prediction models.

Explanation of the purpose of the Patient Prediction package in creating models to predict the risk of future outcomes based on baseline features.

Differentiation between modern prognostic models and diagnostic models, and their respective use cases in predicting outcomes at a current point in time.

Description of the index point in healthcare, such as the start of a condition or treatment, as a reference for risk prediction.

The process of learning patterns from medical records to predict future outcomes, such as the risk of stroke.

Clarification that the package is not for causal inference but for personalizing risk predictions.

Introduction of the five main categories for prediction, including disease onset, progression, treatment choice, treatment response, safety, and adherence.

Demonstration of using the Nomia package for testing and running the Patient Prediction package without requiring personal data.

Explanation of creating a model design with target population, outcome, and time span for prediction within the package.

Details on how to specify features and covariates for patient prediction models, including demographic information and medical history.

Inclusion of feature engineering capabilities within the package, allowing for custom code integration.

Options for data sampling and pre-processing, such as normalization and removal of redundant features, within the model design.

Support for both classification and survival models in the Patient Prediction package.

Customization options for model fitting, including hyperparameter search and default settings.

Process for splitting data into development and validation sets for internal validation of models.

Overview of the Shiny app interface for viewing and exploring model results, diagnostics, and performance.

Final demonstration of the Patient Prediction package's output, including personalized risk predictions and model performance metrics.

Transcripts

play00:00

um this is the the

play00:02

odyssey github repository for the

play00:04

patient prediction package so this is

play00:06

the package that's available for

play00:09

developing prediction models and

play00:11

validating them

play00:12

um i'm just going to run through quickly

play00:14

what prediction is and the type of

play00:16

questions we can answer and then i'll

play00:17

actually give you a bit of a demo

play00:19

um on the package and the latest code

play00:21

that's in the package it's been getting

play00:23

updated quite a lot recently so some of

play00:25

it may look a little bit different even

play00:27

to people who've been using this code

play00:34

how to come up with models that can

play00:36

predict the risk of of some future

play00:38

outcome um modern prognostic which is

play00:40

what i tend to fix on it can also be

play00:41

useful for the diagnostic models when

play00:43

you're trying to predict at a current

play00:44

point in time but

play00:46

generally what happens is you've got

play00:48

some index

play00:49

and this is a point where maybe someone

play00:50

comes in to visit their doctor or maybe

play00:53

they start the pregnancy or they end

play00:55

pregnancy

play00:56

or they have some sort of condition so

play00:59

there's different points in the in in

play01:00

the um time time in over time when

play01:03

you're interacting with the healthcare

play01:04

system where

play01:06

you may want to try and predict

play01:08

someone's risk or some future outcome

play01:10

given some baseline features so um if we

play01:13

can look at their medical records at

play01:15

time zero and see what's being recorded

play01:17

in their records can we can we learn

play01:19

patterns in in these

play01:21

conditions drugs procedures observations

play01:23

devices that they've had

play01:25

any time up to index to predict the the

play01:28

risk of some future outcome so this is

play01:31

trying to

play01:32

come up with a rare

play01:37

i see my my condition at a certain point

play01:39

in time they can look at my records and

play01:40

say you've got a risk of two percent in

play01:43

half of having a stroke in the next year

play01:44

so this is the type of questions that

play01:46

predictions are answering if you're

play01:47

trying to do causal inference then

play01:49

you're on in the wrong package but if

play01:51

you want to try and personalize a risk

play01:53

or some future outcome or some current

play01:55

outcome then patient prediction is is

play01:57

the thing for you

play01:59

there's five main categories for

play02:01

prediction that we tend to focus on the

play02:04

the most common one is is what i

play02:06

mentioned earlier was the disease onset

play02:08

progression

play02:09

so what it is is that for every single

play02:11

prediction you're going to have three

play02:12

different components you've got the

play02:14

things in green which is

play02:16

the tiger population you've got the

play02:18

things in red that is the outcome that

play02:20

you want to predict and things in in

play02:22

purple that is the time span when you're

play02:24

trying to predict the the outcome

play02:26

occurring

play02:27

so the target population who you want to

play02:29

do the prediction for for disease onset

play02:31

it may be people who have some new

play02:33

disease

play02:34

the outcome what it is you're trying to

play02:37

predict

play02:39

the

play02:40

implication and the time at risk when

play02:41

you want to predict it

play02:43

it it may be uh while you're well maybe

play02:45

within a year for example or the next

play02:47

three years of having some illness

play02:49

treatment choice is another prediction

play02:51

we see this pretty often uh used when we

play02:53

do propensity school modelling

play02:55

and this is saying if you target

play02:57

population of drug one or drug two which

play03:00

people have drug one

play03:02

um on day zero so this is the target

play03:04

population is the union of the the drug

play03:06

users and the outcome is just one of the

play03:09

drugs and the time time zero time risk

play03:12

is time zero treatment response this is

play03:15

um basically people who have some

play03:17

chronically used drug can we predict

play03:19

some some desired outcome in some future

play03:22

time period

play03:23

so basically are people going to respond

play03:24

well to the drug treatment safety so

play03:27

women people who have a drug can we

play03:29

predict some known adverse event within

play03:31

some time period for example while

play03:33

they're taking the drug

play03:34

and then we can also look at treatment

play03:36

adherence so within people who are given

play03:40

huge drug

play03:43

kind of it stays on the drug um and

play03:45

takes it as kind of

play03:47

recommended um during some time period

play03:50

so these are the different prediction

play03:51

questions that we can answer kind of

play03:52

describe what prediction is let's now

play03:54

let's get into what it looks like in in

play03:57

the code so

play03:58

i'm going to be demonstrating this with

play04:00

the nomia package so this is a package

play04:02

that has some some data in it that you

play04:04

can use to

play04:06

basically test and see how things work

play04:08

so even if you don't have data available

play04:10

to you you can still use the you know to

play04:12

actually test

play04:13

and run the package and see how it is if

play04:15

you have data the good thing would be

play04:17

you could actually put this pointless

play04:19

towards your data and actually run some

play04:21

some models using the real data but if i

play04:23

load the anomia it's basically going to

play04:25

create some four different target

play04:28

four different cohorts three of which

play04:30

are target kills i believe one is an

play04:32

outcome so it's created

play04:35

a

play04:36

new drug user cohort a new drug user

play04:38

cohort

play04:40

people who have a bleed and another drug

play04:42

so we've got free free

play04:47

um i'm going to be running this

play04:49

demonstration for predicting

play04:50

gastrointestinal bleed for new users of

play04:53

these various

play04:54

drugs and then

play04:56

patient prediction the way we've done it

play04:58

now is we've made it so that you need to

play05:00

create a model uh design for your

play05:02

prediction so the model design it has

play05:04

the three components i mentioned the

play05:06

target population who you want to

play05:07

predict um this is an id for a cohort

play05:10

and generally your code will be

play05:12

generated in atlas

play05:14

but there's basically a table somewhere

play05:15

that says here's a set of people who

play05:17

have this cohort definition id and they

play05:19

give you a time and then we have an

play05:21

outcome

play05:23

id so you can see here the outcome idea

play05:25

is is corresponding to three which is

play05:27

the the bleed and the target id is four

play05:29

which is the nsaids

play05:31

so this is the the target population

play05:34

outcome and then although i mentioned

play05:36

that you need time at risk when you're

play05:37

trying to predict it this is actually

play05:39

specified in this population settings so

play05:42

in the population settings we're saying

play05:44

that we're basically going to be doing

play05:45

the prediction

play05:50

that they had the nsaid and then to 365

play05:54

days after that so within a year of that

play05:56

of the nsaid

play05:58

then we also have a few extra things i

play05:59

kind of didn't really mention but

play06:00

there's a few things one is to restrict

play06:02

plb data settings so this lets you for

play06:05

example you can sample patients here so

play06:07

if you've got a big cohort so if if in

play06:10

your data set you had 10 million people

play06:12

that had the nsaids you may not want to

play06:14

extract that at all because it's going

play06:15

to take some time so here you could

play06:17

actually pick a number here and you can

play06:18

say i only want to sample a million

play06:20

people and that will then just randomly

play06:22

sample a million people from that 10

play06:24

million people and it'll make it a bit

play06:25

quicker to download you can also specify

play06:28

time points of when you're trying to do

play06:29

the study so you mainly want to look at

play06:31

within 2020 or you may want to look at

play06:34

within 2019 to 2021 so you can specify

play06:37

start and end dates here to restrict

play06:38

that and then we've also got things

play06:40

where you can say and you want to look

play06:41

at first exposure for the for the drug

play06:43

um or i want people to have at least 365

play06:46

days prior observation so you can

play06:47

specify that in this restricted

play06:49

settings here

play06:55

there's also the option of doing further

play06:57

restrictions so there's some redundancy

play06:58

but the same things of like first

play06:59

exposure only and some other inclusion

play07:02

criteria are specified in this

play07:04

population setting and you can look at

play07:05

the documentation to look at all the

play07:07

different settings you can have the next

play07:09

thing you need is to specify what

play07:11

features do you want to create for the

play07:12

patient so what covariates what

play07:14

descriptors

play07:15

so you know i mentioned i had that plot

play07:17

at the beginning where you had index and

play07:18

you were looking at anything that

play07:19

happened up to index here you specify

play07:22

what you're extracting from the data so

play07:24

i said i want dem i want the gender i

play07:26

want age groups this is five year age

play07:28

groups i want um to use any any drugs

play07:31

that they've had in the last one year

play07:33

and also any conditions they've had and

play07:34

i'm going to be using the the vocabulary

play07:36

hierarchies to look at groups for that

play07:40

we've made it so you can add future

play07:41

engineering now so this is like i'm

play07:43

basically not going to do any feature

play07:45

engineering but you can actually plug in

play07:47

so if you actually wanted to do some

play07:48

feature engineering you can write custom

play07:50

code and you can plug that in here to do

play07:53

whatever feature engineer

play07:56

you want to do downloaded them we've

play07:58

also got the option of doing sampling so

play08:00

you can over sample under sample and

play08:02

again we've made it so that you can add

play08:04

custom stuff here so you can look at the

play08:05

documentation to see how you can do that

play08:08

um we've also got a study so cynthia

play08:10

from erasmus is actually working on a

play08:11

study to investigate the sample setting

play08:13

so before you actually do that you may

play08:15

want to wait for her results

play08:17

because she's got some some interesting

play08:18

results happening there

play08:20

then we've also got um whether you want

play08:22

to pre-process so some of the models

play08:24

when you fit them you need to normalize

play08:26

your data

play08:27

and you may want to do some other

play08:28

pre-processing like removing ref

play08:31

features or removing things that are

play08:33

redundant here this you've got an option

play08:35

here of specifying so you can you can

play08:37

say if you want to normalize you can say

play08:39

if you want to remove rare things

play08:41

and you can remove covariates that are

play08:42

redundant so if there's two covariates

play08:44

that are completely correlated you can

play08:45

get rid of one of them

play08:47

then here you're basically specifying

play08:49

what model you want to fit so we support

play08:52

classification and survival models right

play08:53

now

play08:54

uh the main one we

play08:57

the one i got

play09:00

expression so i can specify here that

play09:02

i'm doing um setting the last religious

play09:04

aggression

play09:05

you can put in some information for like

play09:07

the hyper parameter search um or all the

play09:09

settings when you're fitting it or you

play09:10

can just use the the default i'm just

play09:12

going to put the default in here but

play09:13

again you can look at the documentation

play09:15

if you're interested in that and then

play09:16

the last thing is how you want to split

play09:18

your data into the data used to develop

play09:21

the model and the data used to uh

play09:24

estimate its performance for for

play09:25

internal validation so again i'm just

play09:28

going to do the default settings here

play09:29

but you can plug in

play09:31

you can actually write custom now to to

play09:33

customize this however you want a lot of

play09:35

these these options have been written in

play09:37

a way where you can add customization so

play09:39

you don't have to do the default

play09:40

settings you can write your own code for

play09:42

example for the coverage settings you

play09:44

can actually write custom code for this

play09:46

so we try to make it so it's more it's

play09:48

very adaptable and very customizable but

play09:51

if i actually run this now so this is

play09:53

for the nsaids model this is going to

play09:54

give me a model design and i've done

play09:57

exactly the same model design but

play09:58

instead of

play10:00

using the

play10:01

nsa

play10:04

sorry the first code for the target

play10:05

which is this drug so i use a different

play10:08

drug here but same design so i can run

play10:09

enter here and then i need to put in my

play10:11

database details for you nomia these are

play10:14

the settings but if you have your own

play10:15

database um with a common data model

play10:18

format you can actually put in your own

play10:19

settings here

play10:20

and now

play10:22

to actually fit these models and do

play10:24

internal validation all i have to do is

play10:25

run this run multiple plp i put in the

play10:28

database details i put in my list of

play10:31

model designs and you could have as many

play10:33

model designs as you wanted so this you

play10:35

can fit a lot of models uh through this

play10:37

process and then i'm putting in cohort

play10:40

definitions here just so that for the um

play10:42

when i'm saving i know what the names

play10:44

were because i didn't actually specify

play10:46

anywhere here i just have ids and it's

play10:48

specific their names are so here's just

play10:50

a way of me putting the names in so i

play10:51

know when i've got my results uh what

play10:54

the code ids corresponded to

play10:56

and then i put the save directory so

play10:58

right now um i had a demo here which i'm

play11:01

gonna talk

play11:07

when i run enter this it

play11:09

i ran that's yeah so if i run this now

play11:11

it should start running and it's seeing

play11:13

it's basically running the whole process

play11:14

to fit two models um and we're gonna see

play11:17

things are popping up now in this folder

play11:18

here but i pre-did this with the plp

play11:21

demo one so you can see here what comes

play11:24

out is you get your data

play11:25

so i had two target cohorts two

play11:27

different drugs so i have two different

play11:29

data objects and then i had two

play11:31

different models so the model one for

play11:33

analysis one model two for analysis two

play11:36

and then in this you have your results

play11:38

for diagnostics to see did the are there

play11:40

any issues really in your model design

play11:42

and the data you're using and then you

play11:44

also have your model that was fit here

play11:45

so your plp result object is the actual

play11:48

model you fit and you also have a log to

play11:50

tell you how things progress and if

play11:51

there's errors that will show on the in

play11:52

the log

play11:54

and then the last thing which is kind of

play11:55

unique to what we've just added we've

play11:57

got an sqlite database here that lets

play11:59

you um basically it puts all the models

play12:02

into one database and then

play12:10

i'm just giving you a quick overview of

play12:11

the shiny app um

play12:14

hopefully this should be finishing soon

play12:16

see i might just stop this and this

play12:19

would be quicker if i just show you what

play12:20

i already did

play12:21

so

play12:22

this was what ran before so this is

play12:25

basically what's output you'll see what

play12:27

you get is for every person there's a

play12:29

row so uh well a row corresponds to a

play12:32

person you have like an id a date and

play12:35

then you have information about them

play12:37

like whether they had the outcome but

play12:39

what's added what you've done the model

play12:41

is this value and this is the predicted

play12:42

risk so this is saying this person had a

play12:44

37 risk of the outcome

play12:47

uh by the model and if we scroll down

play12:49

we're going to find people who have a 34

play12:51

risk of the outcome so you can see

play12:52

people are getting the personalized risk

play12:54

i just quickly want to show you the

play12:56

shiny app

play12:58

what is it too much time up

play13:00

no sorry i've got to change this to what

play13:02

you want so this is actually the new

play13:04

shiny app interface where now

play13:07

when

play13:08

you have a

play13:11

place it's loading all the results of

play13:13

the two models and it's going to tell

play13:14

you that there are two designs there was

play13:15

one outcome there's one time at risk but

play13:17

there's two target populations it's

play13:19

going to tell you the model design id

play13:21

the number of databases that we use for

play13:23

development you can look at the

play13:24

diagnostics to see whether it passes

play13:27

so here we can see there's passes

play13:29

you can view other characteristics of

play13:31

the diagnostics and you can also view

play13:33

the model

play13:34

so you can go through and you can have a

play13:35

look at how how well the model did like

play13:37

the settings go back to the summary you

play13:39

can just see a summary of the

play13:40

performance like discrimination how big

play13:42

the data were and such if you go to

play13:44

explorer you can actually look at plots

play13:46

so you can look at the auc plot

play13:49

sorry the rock plot and you can look at

play13:51

the calibration plot um for for each of

play13:53

these results so this is the new viewer

play13:55

that's going to be being put in soon

play13:58

and at that i believe i'm at time so

play14:00

i will stop sharing

Rate This

5.0 / 5 (0 votes)

相关标签
Predictive ModelingHealthcareRisk PredictionPrognostic ModelsDisease OnsetTreatment ChoiceData AnalysisModel ValidationMachine LearningPersonalized Risk
您是否需要英文摘要?