Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDES2ENTERLETTER

SDES2ENTERLETTER.m

Go to the documentation of this file.
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