首先介绍一下背景。我不是程序员。我是一名护士,碰巧也是个怪人,我很想成为一名程序员。我最近开始在我工作的医院的数字团队工作,我们有一份合同,并且使用InterSystems Trakcare。作为其中的一部分,我们创建调查表供临床医生使用,在这些调查问卷中,我们可以添加InterSystems所称的“表达式”,据我所知,它们是用缓存脚本编写的。我有一个问卷,我想要一个表达,检查一个问题是否已经被回答,然后写一封信,但我不知道如何做。
到目前为止,我编写的唯一表达式是根据分数值编写一条消息,为了做到这一点,我必须查看Intersystems创建的调查问卷,并基本上复制它们的代码。
有一个问卷有如下的表达方式,它似乎从问卷中的问题中检索数据,但是如果我能解决它或者在我的问卷中让它工作的话,我会觉得很困难。所以我希望有人能把这段代码告诉我,并解释每一行都做些什么。
Do ##Class(websys.Component).GetComponentMessages(.t,"questionnaire.QTC4AT.Edit")
set score=obj.QUESScore
set sr1=$get(t("Q48"),">= 4: Possible delirium +/- cognitive impairment")
set sr2=$get(t("Q49"),"1-3: Possible cognitive impairment")
set sr3=$get(t("Q50"),"0: Delirium or severe cognitive impairment unlikely (but delirium still possible if [4] information incomplete)")
set srx=""
if (score'="") set srx="No valid score"
if ((score'="") && (score>=4)) set srx=sr1
if ((score'="") && (score>=1) && (score<=3)) set srx=sr2
if ((score'="") && (score=0)) set srx=sr3
write srx我知道你可能有更好的方法来消磨时间,但是谢谢你:)
发布于 2022-03-22 02:49:06
我认为https://client.intersystems.com/的TrakCare专用门户网站可以更好地提出这样的问题,因为它更多的是关于配置您的系统,而不是一般的编程。对于TrakCare版本的T2020和更高版本,我们有一个新的代码表“问卷分数”,您可以使用它来代替自定义表达式,并且它将在TCUI和MEUI中工作。下面的代码不会在MEUI上工作,因为我们不支持那里的自定义表达式。
回到你的问题上,
; Load item captions for questionnaire QTC4AT
Do ##Class(websys.Component).GetComponentMessages(.t,"questionnaire.QTC4AT.Edit")
; Get current score
set score=obj.QUESScore
; Get caption of Q48 into variable sr1; if it's not defined use provided caption
set sr1=$get(t("Q48"),">= 4: Possible delirium +/- cognitive impairment")
; etc etc for sr2 and sr3
set sr2=$get(t("Q49"),"1-3: Possible cognitive impairment")
set sr3=$get(t("Q50"),"0: Delirium or severe cognitive impairment unlikely (but delirium still possible if [4] information incomplete)")
; set resulting variable srx to an empty string
set srx=""
; if we got a score, set resulting variable srx to "No valid score"
if (score'="") set srx="No valid score"
; set resulting variable srx to different captions we got above based on score value
if ((score'="") && (score>=4)) set srx=sr1
if ((score'="") && (score>=1) && (score<=3)) set srx=sr2
if ((score'="") && (score=0)) set srx=sr3
; output resulting caption
write srxhttps://stackoverflow.com/questions/71556184
复制相似问题