SDES2ENTERLETTER ;ALB/JAS,BLB - ENTER/EDIT CLINIC LETTER RPC ; DEC 11, 2024
;;5.3;Scheduling;**898,901**;Aug 13, 1993;Build 7
;;Per VHA Directive 6402, this routine should not be modified
;
Q
; RPC: SDES2 ENTER/EDIT LETTER
;
; SDCONTEXT INPUT
;
;S SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
;S SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
;S SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
;S SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
;S SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
;
; LETTER INPUT FORMAT
;
;S LETTER("LETTER TYPE")="" REQ
;S LETTER("LETTER NAME")="" REQ
;S LETTER("LETTER IEN")="" REQ (Required for EDIT and DELETE RPCs
; not valid for CREATE)
;S LETTER("INITIAL SECTION")="" OPT
;S LETTER("FINAL SECTION")="" OPT
;S LETTER("DEFAULT PROVIDER")="" OPT (Only values of 'Y', 'YES', or @ will be accepted)
;S LETTER("CLINIC LOCATION")="" OPT (Only values of 'Y', 'YES', or @ will be accepted)
;
; * For DELETE, the only input should be "LETTER IEN"
;
CREATELETTER(JSONRETURN,SDCONTEXT,LETTER) ;
N SAVETYPE
S SAVETYPE="CREATE"
D SAVELETTER(.JSONRETURN,.SDCONTEXT,.LETTER,SAVETYPE)
Q
;
EDITLETTER(JSONRETURN,SDCONTEXT,LETTER) ;
N SAVETYPE
S SAVETYPE="EDIT"
D SAVELETTER(.JSONRETURN,.SDCONTEXT,.LETTER,SAVETYPE)
Q
;
DELETELETTER(JSONRETURN,SDCONTEXT,LETTER) ;
N %,DA,DIK,ERRORS,RETURN,VALRETURN,X,Y
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("Letter",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
; Validate LETTER IEN - Only input field for DELETES
D VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,$G(LETTER("LETTER IEN")),1,,630,624)
I $D(ERRORS) S ERRORS("Letter",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
S DIK="^VA(407.5,"
S DA=LETTER("LETTER IEN")
D ^DIK
;
S RETURN("Letter","IEN")="LETTER IEN "_LETTER("LETTER IEN")_" has successfully been deleted."
D BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
Q
;
SAVELETTER(JSONRETURN,SDCONTEXT,LETTER,SAVETYPE) ;
N ERRORS,RETURN
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("Letter",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
D VALIDATE(.ERRORS,.LETTER,SAVETYPE)
I $D(ERRORS) S ERRORS("Letter",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
D BUILDER(.ERRORS,.LETTER)
I $D(ERRORS) S ERRORS("Letter",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
S RETURN("Letter","IEN")=LETTER("LETTER IEN")
D BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
Q
;
VALIDATE(ERRORS,LETTER,SAVETYPE) ; Validation for Input Parameter data
N MESSTYPIEN,VALRETURN
; Validate required fields
;
; LETTER NAME
D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,.01,$G(LETTER("LETTER NAME")),1,,620,621)
Q:$D(ERRORS)
S LETTER("LETTER NAME")=$$CTRL^XMXUTIL1(LETTER("LETTER NAME"))
;
; LETTER TYPE
I $G(LETTER("LETTER TYPE"))="" D ERRLOG^SDES2JSON(.ERRORS,622) Q
I '$D(^VA(407.6,"B",$G(LETTER("LETTER TYPE")))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
;I '$$FIND1^DIC(407.6,"","B",$G(LETTER("LETTER TYPE"))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
;
; Validate LETTER IEN - Required for EDITS, not used for CREATES
I SAVETYPE="EDIT" D
. D VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,$G(LETTER("LETTER IEN")),1,,630,624)
Q:$D(ERRORS)
;
; Validate optional fields
; INITIAL SECTION
S LETTER("INITIAL SECTION")=$$CTRL^XMXUTIL1($G(LETTER("INITIAL SECTION")))
;
; FINAL SECTION
S LETTER("FINAL SECTION")=$$CTRL^XMXUTIL1($G(LETTER("FINAL SECTION")))
;
; PRINT DEFAULT PROVIDER
I $D(LETTER("DEFAULT PROVIDER")) D
.D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,4,$G(LETTER("DEFAULT PROVIDER")),,1,,627)
Q:$D(ERRORS)
;
; PRINT CLINIC LOCATION
I $D(LETTER("CLINIC LOCATION")) D
.D VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,5,$G(LETTER("CLINIC LOCATION")),,1,,628)
;
Q
;
BUILDER(ERRORS,LETTER) ; Build FDA array and save LETTER
N EDITFINAL,EDITINITIAL,FDA,FDAERR,LETTIEN,NEWIEN
S LETTIEN=$S($G(LETTER("LETTER IEN")):LETTER("LETTER IEN")_",",1:"+1,")
;
S FDA(407.5,LETTIEN,.01)=LETTER("LETTER NAME")
S FDA(407.5,LETTIEN,1)=LETTER("LETTER TYPE")
I $D(LETTER("DEFAULT PROVIDER")) S FDA(407.5,LETTIEN,4)=$G(LETTER("DEFAULT PROVIDER"))
I $D(LETTER("CLINIC LOCATION")) S FDA(407.5,LETTIEN,5)=$G(LETTER("CLINIC LOCATION"))
;
I $G(LETTER("LETTER IEN")) D Q:$D(ERRORS)
. D FILE^DIE(,"FDA","FDAERR") K FDA
. I $D(FDAERR) D ERRLOG^SDES2JSON(.ERRORS,629) Q
;
I '$G(LETTER("LETTER IEN")) D Q:$D(ERRORS)
. D UPDATE^DIE(,"FDA","NEWIEN","FDAERR")
. I $D(FDAERR) D ERRLOG^SDES2JSON(.ERRORS,629) Q
. S LETTER("LETTER IEN")=NEWIEN(1)
. S LETTIEN=NEWIEN(1)_"," K FDA
;
I $G(LETTER("INITIAL SECTION"))'="" D
. S EDITINITIAL(1)=$G(LETTER("INITIAL SECTION")) D WP^DIE(407.5,LETTIEN,2,"","EDITINITIAL")
I $G(LETTER("FINAL SECTION"))'="" D
. S EDITFINAL(1)=$G(LETTER("FINAL SECTION")) D WP^DIE(407.5,LETTIEN,3,"","EDITFINAL")
;
Q
;
SEARCHLETTER(JSONRETURN,SDCONTEXT,SEARCH) ;
;
; SEARCH INPUT FORMAT
;
;S SEARCH("LETTER TYPE")="" REQ
;S SEARCH("SEARCH STRING")="" OPT
;
N ERRORS,RETURN
;
D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
I $D(ERRORS) S ERRORS("Search",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
D VALSEARCH(.ERRORS,.SEARCH)
I $D(ERRORS) S ERRORS("Search",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
D BUILDLIST(.RETURN,.ERRORS,.SEARCH)
I $D(ERRORS) S ERRORS("Search",1)="" D BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS) Q
;
D BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
Q
;
VALSEARCH(ERRORS,SEARCH) ;
;
; LETTER TYPE
I $G(SEARCH("LETTER TYPE"))="" D ERRLOG^SDES2JSON(.ERRORS,622) Q
I '$D(^VA(407.6,"B",$G(SEARCH("LETTER TYPE")))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
;I '$$FIND1^DIC(407.6,"","B",$G(SEARCH("LETTER TYPE"))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
;
; SEARCH STRING
Q:$G(SEARCH("SEARCH STRING"))=""
S SEARCH("SEARCH STRING")=$$CTRL^XMXUTIL1(SEARCH("SEARCH STRING"))
I ($L(SEARCH("SEARCH STRING"))<3)!($L(SEARCH("SEARCH STRING"))>35) D ERRLOG^SDES2JSON(.ERRORS,230) Q
;
Q
;
BUILDLIST(RETURN,ERRORS,SEARCH) ;
; Search for matches
N LETIEN,LETLIST,LETNAME,LETTYPE
S LETTYPE=$G(SEARCH("LETTER TYPE")) Q:LETTYPE=""
S LETIEN=0
F S LETIEN=$O(^VA(407.5,"C",LETTYPE,LETIEN)) Q:'LETIEN D
. S LETNAME=$$GET1^DIQ(407.5,LETIEN_",",.01,"E")
. S LETLIST(LETNAME,LETIEN)=""
I $G(SEARCH("SEARCH STRING"))'="" D
. S LETNAME=""
. F S LETNAME=$O(LETLIST(LETNAME)) Q:LETNAME="" D
. . I LETNAME'[(SEARCH("SEARCH STRING")) K LETLIST(LETNAME)
;
; Format return data
I '$D(LETLIST) D Q
. D ERRLOG^SDES2JSON(.RETURN,631) S RETURN("Search",1)="" Q
N LETCOUNT
S LETNAME="",LETCOUNT=0
F S LETNAME=$O(LETLIST(LETNAME)) Q:LETNAME="" D
. S LETIEN=0
. F S LETIEN=$O(LETLIST(LETNAME,LETIEN)) Q:'LETIEN D
. . S LETCOUNT=LETCOUNT+1
. . S RETURN("Search",LETCOUNT,"LetterIEN")=LETIEN
. . S RETURN("Search",LETCOUNT,"LetterName")=LETNAME
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HSDES2ENTERLETTER 7416 printed Jun 26, 2025@04:08:47 Page 2
SDES2ENTERLETTER ;ALB/JAS,BLB - ENTER/EDIT CLINIC LETTER RPC ; DEC 11, 2024
+1 ;;5.3;Scheduling;**898,901**;Aug 13, 1993;Build 7
+2 ;;Per VHA Directive 6402, this routine should not be modified
+3 ;
+4 QUIT
+5 ; RPC: SDES2 ENTER/EDIT LETTER
+6 ;
+7 ; SDCONTEXT INPUT
+8 ;
+9 ;S SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
+10 ;S SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
+11 ;S SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
+12 ;S SDCONTEXT("PATIENT DFN") = The DFN/IEN of the target patient from the calling application.
+13 ;S SDCONTEXT("PATIENT ICN") = The ICN of the target patient from the calling application.
+14 ;
+15 ; LETTER INPUT FORMAT
+16 ;
+17 ;S LETTER("LETTER TYPE")="" REQ
+18 ;S LETTER("LETTER NAME")="" REQ
+19 ;S LETTER("LETTER IEN")="" REQ (Required for EDIT and DELETE RPCs
+20 ; not valid for CREATE)
+21 ;S LETTER("INITIAL SECTION")="" OPT
+22 ;S LETTER("FINAL SECTION")="" OPT
+23 ;S LETTER("DEFAULT PROVIDER")="" OPT (Only values of 'Y', 'YES', or @ will be accepted)
+24 ;S LETTER("CLINIC LOCATION")="" OPT (Only values of 'Y', 'YES', or @ will be accepted)
+25 ;
+26 ; * For DELETE, the only input should be "LETTER IEN"
+27 ;
CREATELETTER(JSONRETURN,SDCONTEXT,LETTER) ;
+1 NEW SAVETYPE
+2 SET SAVETYPE="CREATE"
+3 DO SAVELETTER(.JSONRETURN,.SDCONTEXT,.LETTER,SAVETYPE)
+4 QUIT
+5 ;
EDITLETTER(JSONRETURN,SDCONTEXT,LETTER) ;
+1 NEW SAVETYPE
+2 SET SAVETYPE="EDIT"
+3 DO SAVELETTER(.JSONRETURN,.SDCONTEXT,.LETTER,SAVETYPE)
+4 QUIT
+5 ;
DELETELETTER(JSONRETURN,SDCONTEXT,LETTER) ;
+1 NEW %,DA,DIK,ERRORS,RETURN,VALRETURN,X,Y
+2 ;
+3 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+4 IF $DATA(ERRORS)
SET ERRORS("Letter",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+5 ;
+6 ; Validate LETTER IEN - Only input field for DELETES
+7 DO VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,$GET(LETTER("LETTER IEN")),1,,630,624)
+8 IF $DATA(ERRORS)
SET ERRORS("Letter",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+9 ;
+10 SET DIK="^VA(407.5,"
+11 SET DA=LETTER("LETTER IEN")
+12 DO ^DIK
+13 ;
+14 SET RETURN("Letter","IEN")="LETTER IEN "_LETTER("LETTER IEN")_" has successfully been deleted."
+15 DO BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
+16 QUIT
+17 ;
SAVELETTER(JSONRETURN,SDCONTEXT,LETTER,SAVETYPE) ;
+1 NEW ERRORS,RETURN
+2 ;
+3 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+4 IF $DATA(ERRORS)
SET ERRORS("Letter",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+5 ;
+6 DO VALIDATE(.ERRORS,.LETTER,SAVETYPE)
+7 IF $DATA(ERRORS)
SET ERRORS("Letter",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+8 ;
+9 DO BUILDER(.ERRORS,.LETTER)
+10 IF $DATA(ERRORS)
SET ERRORS("Letter",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+11 ;
+12 SET RETURN("Letter","IEN")=LETTER("LETTER IEN")
+13 DO BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
+14 QUIT
+15 ;
VALIDATE(ERRORS,LETTER,SAVETYPE) ; Validation for Input Parameter data
+1 NEW MESSTYPIEN,VALRETURN
+2 ; Validate required fields
+3 ;
+4 ; LETTER NAME
+5 DO VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,.01,$GET(LETTER("LETTER NAME")),1,,620,621)
+6 if $DATA(ERRORS)
QUIT
+7 SET LETTER("LETTER NAME")=$$CTRL^XMXUTIL1(LETTER("LETTER NAME"))
+8 ;
+9 ; LETTER TYPE
+10 IF $GET(LETTER("LETTER TYPE"))=""
DO ERRLOG^SDES2JSON(.ERRORS,622)
QUIT
+11 IF '$DATA(^VA(407.6,"B",$GET(LETTER("LETTER TYPE"))))
DO ERRLOG^SDES2JSON(.ERRORS,623)
QUIT
+12 ;I '$$FIND1^DIC(407.6,"","B",$G(LETTER("LETTER TYPE"))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
+13 ;
+14 ; Validate LETTER IEN - Required for EDITS, not used for CREATES
+15 IF SAVETYPE="EDIT"
Begin DoDot:1
+16 DO VALFILEIEN^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,$GET(LETTER("LETTER IEN")),1,,630,624)
End DoDot:1
+17 if $DATA(ERRORS)
QUIT
+18 ;
+19 ; Validate optional fields
+20 ; INITIAL SECTION
+21 SET LETTER("INITIAL SECTION")=$$CTRL^XMXUTIL1($GET(LETTER("INITIAL SECTION")))
+22 ;
+23 ; FINAL SECTION
+24 SET LETTER("FINAL SECTION")=$$CTRL^XMXUTIL1($GET(LETTER("FINAL SECTION")))
+25 ;
+26 ; PRINT DEFAULT PROVIDER
+27 IF $DATA(LETTER("DEFAULT PROVIDER"))
Begin DoDot:1
+28 DO VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,4,$GET(LETTER("DEFAULT PROVIDER")),,1,,627)
End DoDot:1
+29 if $DATA(ERRORS)
QUIT
+30 ;
+31 ; PRINT CLINIC LOCATION
+32 IF $DATA(LETTER("CLINIC LOCATION"))
Begin DoDot:1
+33 DO VALFIELD^SDES2VALUTIL(.VALRETURN,.ERRORS,407.5,5,$GET(LETTER("CLINIC LOCATION")),,1,,628)
End DoDot:1
+34 ;
+35 QUIT
+36 ;
BUILDER(ERRORS,LETTER) ; Build FDA array and save LETTER
+1 NEW EDITFINAL,EDITINITIAL,FDA,FDAERR,LETTIEN,NEWIEN
+2 SET LETTIEN=$SELECT($GET(LETTER("LETTER IEN")):LETTER("LETTER IEN")_",",1:"+1,")
+3 ;
+4 SET FDA(407.5,LETTIEN,.01)=LETTER("LETTER NAME")
+5 SET FDA(407.5,LETTIEN,1)=LETTER("LETTER TYPE")
+6 IF $DATA(LETTER("DEFAULT PROVIDER"))
SET FDA(407.5,LETTIEN,4)=$GET(LETTER("DEFAULT PROVIDER"))
+7 IF $DATA(LETTER("CLINIC LOCATION"))
SET FDA(407.5,LETTIEN,5)=$GET(LETTER("CLINIC LOCATION"))
+8 ;
+9 IF $GET(LETTER("LETTER IEN"))
Begin DoDot:1
+10 DO FILE^DIE(,"FDA","FDAERR")
KILL FDA
+11 IF $DATA(FDAERR)
DO ERRLOG^SDES2JSON(.ERRORS,629)
QUIT
End DoDot:1
if $DATA(ERRORS)
QUIT
+12 ;
+13 IF '$GET(LETTER("LETTER IEN"))
Begin DoDot:1
+14 DO UPDATE^DIE(,"FDA","NEWIEN","FDAERR")
+15 IF $DATA(FDAERR)
DO ERRLOG^SDES2JSON(.ERRORS,629)
QUIT
+16 SET LETTER("LETTER IEN")=NEWIEN(1)
+17 SET LETTIEN=NEWIEN(1)_","
KILL FDA
End DoDot:1
if $DATA(ERRORS)
QUIT
+18 ;
+19 IF $GET(LETTER("INITIAL SECTION"))'=""
Begin DoDot:1
+20 SET EDITINITIAL(1)=$GET(LETTER("INITIAL SECTION"))
DO WP^DIE(407.5,LETTIEN,2,"","EDITINITIAL")
End DoDot:1
+21 IF $GET(LETTER("FINAL SECTION"))'=""
Begin DoDot:1
+22 SET EDITFINAL(1)=$GET(LETTER("FINAL SECTION"))
DO WP^DIE(407.5,LETTIEN,3,"","EDITFINAL")
End DoDot:1
+23 ;
+24 QUIT
+25 ;
SEARCHLETTER(JSONRETURN,SDCONTEXT,SEARCH) ;
+1 ;
+2 ; SEARCH INPUT FORMAT
+3 ;
+4 ;S SEARCH("LETTER TYPE")="" REQ
+5 ;S SEARCH("SEARCH STRING")="" OPT
+6 ;
+7 NEW ERRORS,RETURN
+8 ;
+9 DO VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
+10 IF $DATA(ERRORS)
SET ERRORS("Search",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+11 ;
+12 DO VALSEARCH(.ERRORS,.SEARCH)
+13 IF $DATA(ERRORS)
SET ERRORS("Search",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+14 ;
+15 DO BUILDLIST(.RETURN,.ERRORS,.SEARCH)
+16 IF $DATA(ERRORS)
SET ERRORS("Search",1)=""
DO BUILDJSON^SDES2JSON(.JSONRETURN,.ERRORS)
QUIT
+17 ;
+18 DO BUILDJSON^SDES2JSON(.JSONRETURN,.RETURN)
+19 QUIT
+20 ;
VALSEARCH(ERRORS,SEARCH) ;
+1 ;
+2 ; LETTER TYPE
+3 IF $GET(SEARCH("LETTER TYPE"))=""
DO ERRLOG^SDES2JSON(.ERRORS,622)
QUIT
+4 IF '$DATA(^VA(407.6,"B",$GET(SEARCH("LETTER TYPE"))))
DO ERRLOG^SDES2JSON(.ERRORS,623)
QUIT
+5 ;I '$$FIND1^DIC(407.6,"","B",$G(SEARCH("LETTER TYPE"))) D ERRLOG^SDES2JSON(.ERRORS,623) Q
+6 ;
+7 ; SEARCH STRING
+8 if $GET(SEARCH("SEARCH STRING"))=""
QUIT
+9 SET SEARCH("SEARCH STRING")=$$CTRL^XMXUTIL1(SEARCH("SEARCH STRING"))
+10 IF ($LENGTH(SEARCH("SEARCH STRING"))<3)!($LENGTH(SEARCH("SEARCH STRING"))>35)
DO ERRLOG^SDES2JSON(.ERRORS,230)
QUIT
+11 ;
+12 QUIT
+13 ;
BUILDLIST(RETURN,ERRORS,SEARCH) ;
+1 ; Search for matches
+2 NEW LETIEN,LETLIST,LETNAME,LETTYPE
+3 SET LETTYPE=$GET(SEARCH("LETTER TYPE"))
if LETTYPE=""
QUIT
+4 SET LETIEN=0
+5 FOR
SET LETIEN=$ORDER(^VA(407.5,"C",LETTYPE,LETIEN))
if 'LETIEN
QUIT
Begin DoDot:1
+6 SET LETNAME=$$GET1^DIQ(407.5,LETIEN_",",.01,"E")
+7 SET LETLIST(LETNAME,LETIEN)=""
End DoDot:1
+8 IF $GET(SEARCH("SEARCH STRING"))'=""
Begin DoDot:1
+9 SET LETNAME=""
+10 FOR
SET LETNAME=$ORDER(LETLIST(LETNAME))
if LETNAME=""
QUIT
Begin DoDot:2
+11 IF LETNAME'[(SEARCH("SEARCH STRING"))
KILL LETLIST(LETNAME)
End DoDot:2
End DoDot:1
+12 ;
+13 ; Format return data
+14 IF '$DATA(LETLIST)
Begin DoDot:1
+15 DO ERRLOG^SDES2JSON(.RETURN,631)
SET RETURN("Search",1)=""
QUIT
End DoDot:1
QUIT
+16 NEW LETCOUNT
+17 SET LETNAME=""
SET LETCOUNT=0
+18 FOR
SET LETNAME=$ORDER(LETLIST(LETNAME))
if LETNAME=""
QUIT
Begin DoDot:1
+19 SET LETIEN=0
+20 FOR
SET LETIEN=$ORDER(LETLIST(LETNAME,LETIEN))
if 'LETIEN
QUIT
Begin DoDot:2
+21 SET LETCOUNT=LETCOUNT+1
+22 SET RETURN("Search",LETCOUNT,"LetterIEN")=LETIEN
+23 SET RETURN("Search",LETCOUNT,"LetterName")=LETNAME
End DoDot:2
End DoDot:1
+24 QUIT