使用部分名称在全局中搜索名称

Searching for a Name in a Global using a Partial Name

我创建了一个全局名称,我试图通过仅使用名称开头的相同字符来打印出匹配的名称。示例:输入 Sm 和 return 值 Smith, John A.

我创建了这个:

N prompt,val
S prompt="Enter a name (LAST,FIRST MI): "
F  W !,prompt R val Q:val=""  D
.   I val'?1.A1",".1" "1.A.1(1" "1A) W !,"Invalid name"
.   E  S ^ZNAME(val)=""
F  S val=$O(^ZNAME(val)) Q:val=""  D
.   W !,"You entered: ",val
Q

我输入了两个名字,得到了想要的结果。^ZNAME("MITCHELL, DAVID J")^ZNAME("SMITH, JOHN A").

我希望能够读取部分名称并搜索 ^ZNAME 和 return 它匹配的值。在这种情况下阅读 "Sm" 和 return "Smith, John A."

N partial,val
S partial="Enter a name or partial name: "
F  W !,partial R val Q:val=""  D
.   W !,$O(^ZNAME("val"))
Q

当我从读取命令输入 "Sm" 时,它会循环回输入名称或部分名称,而不是给我所需的 Smith, John A 的结果。我遗漏了一些我知道的东西,但是有点烧坏了。任何帮助都会非常感谢!

你在 val 周围加了双引号:

.   W !,$O(^ZNAME("val"))
Q

所以它试图在 ^ZNAME("val") 处写入值,但没有。删除双引号,它应该可以工作。