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

DGADDLST.m

Go to the documentation of this file.
  1. DGADDLST ;ALB/JAM - List Manager Screen for Address Validation ;Jun 12, 2020@12:34
  1. ;;5.3;Registration;**1014,1040**;AUG 13, 1993;Build 15
  1. ;
  1. EN(DFN,DGFLDS,DGADDR,DGSELADD,DGTMOT) ;Main entry point to invoke the "DGEN ADDR VALID" list - called by DGADDVAL
  1. ; Input: DFN - Patient IEN
  1. ; DGFLDS - String of address field numbers
  1. ; DGADDR (Pass by reference) - Array containing the addresses to list
  1. ; Output: DGSELADD (Pass by reference) - Array containing selected address
  1. ; DGTMOT (Pass by reference) - DG*5.3*1040 - If "1", a timeout occurred
  1. ;
  1. ; DGFLDS - Field numbers are in the following format:
  1. ; "AddressLine1,AddressLine2,AddressLine3,City,State,County,Zip,Province,PostalCode^Country"
  1. ;
  1. ; DGADDR Format:
  1. ; DGADDR = Total number of records
  1. ; DGADDR(Counter,field#)=VALUE ForState: VALUE = "STATENAME^STATECODE"
  1. ; For Country: VALUE = "COUNTRY^COUNTRYCODE"
  1. ;
  1. ; DGSELADD Format:
  1. ; DGSELADD(field#)=VALUE ForState: VALUE = "STATENAME^STATECODE"
  1. ; For Country: VALUE = "COUNTRY^COUNTRYCODE"
  1. ;
  1. D WAIT^DICD
  1. D EN^VALM("DGEN ADDR VALID")
  1. N VALMHDR,VALMBCK,VALMCNT,VALMSG,XQORM
  1. Q
  1. ;
  1. HDR ;Header code
  1. N X,DGSSNSTR,DGPTYPE,DGSSN,DGDOB
  1. S DGSSNSTR=$$SSNNM^DGRPU(DFN) ; add member id (edipi) and preferred name to banner
  1. S DGSSN=$P($P(DGSSNSTR,";",2)," ",3)
  1. S DGDOB=$$GET1^DIQ(2,DFN,.03,"I")
  1. S DGDOB=$$UP^XLFSTR($$FMTE^XLFDT($E(DGDOB,1,12),1))
  1. S DGPTYPE=$$GET1^DIQ(391,$$GET1^DIQ(2,DFN_",",391,"I")_",",.01)
  1. S:DGPTYPE="" DGPTYPE="PATIENT TYPE UNKNOWN"
  1. ; If coming from screen 1.1, change the screen title to specify this as screen 1.2
  1. ; - DGPRS is a system-wide variable containing the screen number
  1. ; - VALM array is used by ListMan (do not NEW this variable)
  1. ; It contains data for the screen and is used to maintain the call stack when a Listman screen flows to another ListMan screen.
  1. ; Changes to VALM entries are unwound after exit - Listman restores the entries of the previous stack level.
  1. I $G(DGRPS)=1.1 S VALM("TITLE")="Address Validation <1.2>"
  1. S VALMHDR(1)=$P(DGSSNSTR,";",1)_$S($$GET1^DIQ(2,DFN,.2405)'="":" ("_$$GET1^DIQ(2,DFN,.2405)_")",1:"")_" "_DGDOB
  1. S VALMHDR(2)=$S($P($P(DGSSNSTR,";",2)," ",2)'="":$E($P($P(DGSSNSTR,";",2)," ",2),1,40)_" ",1:"")_DGSSN_" "_DGPTYPE
  1. S XQORM("B")="SEL"
  1. Q
  1. ;
  1. INIT ;Build address screen
  1. D CLEAN^VALM10
  1. K ^TMP("DGADDVAL",$J)
  1. N DGGLBL,DGCNT,DGZ,DGCTRYCD,DGFORGN,DGZIP
  1. S DGGLBL=$NA(^TMP("DGADDVAL",$J))
  1. S VALMCNT=0,DGCNT=0
  1. F S DGCNT=$O(DGADDR(DGCNT)) Q:'DGCNT D
  1. . ; Get Country code and determine if this is domestic/foreign address
  1. . S DGCTRYCD=$P(DGADDR(DGCNT,$P(DGFLDS,",",10)),"^",2)
  1. . S DGFORGN=0
  1. . S DGFORGN=$$FORIEN^DGADDUTL(DGCTRYCD)
  1. . ; Save to List Manager array for display
  1. . ; Address line 1
  1. . S VALMCNT=VALMCNT+1
  1. . S DGZ=DGADDR(DGCNT,$P(DGFLDS,",",1))
  1. . S DGZ="["_DGCNT_"] "_DGZ
  1. . S @DGGLBL@(VALMCNT,0)=DGZ
  1. . ; Address line 2
  1. . I $G(DGADDR(DGCNT,$P(DGFLDS,",",2)))'="" D
  1. . . S VALMCNT=VALMCNT+1
  1. . . S DGZ=DGADDR(DGCNT,$P(DGFLDS,",",2))
  1. . . S @DGGLBL@(VALMCNT,0)=" "_DGZ
  1. . ; Address line 3
  1. . I $G(DGADDR(DGCNT,$P(DGFLDS,",",3)))'="" D
  1. . . S VALMCNT=VALMCNT+1
  1. . . S DGZ=DGADDR(DGCNT,$P(DGFLDS,",",3))
  1. . . S @DGGLBL@(VALMCNT,0)=" "_DGZ
  1. . ; Put together line for city, state zip or city Province Postal Code
  1. . S DGZ=""
  1. . ; City
  1. . I $G(DGADDR(DGCNT,$P(DGFLDS,",",4)))'="" D
  1. . . S DGZ=DGADDR(DGCNT,$P(DGFLDS,",",4))
  1. . ; For domestic address, add State and Zip
  1. . I 'DGFORGN D
  1. . . I $G(DGADDR(DGCNT,$P(DGFLDS,",",5)))'="" D
  1. . . . ; State
  1. . . . S DGZ=DGZ_","_$P(DGADDR(DGCNT,$P(DGFLDS,",",5)),"^",1)
  1. . . I $G(DGADDR(DGCNT,$P(DGFLDS,",",7)))'="" D
  1. . . . ; Zip
  1. . . . S DGZIP=DGADDR(DGCNT,$P(DGFLDS,",",7))
  1. . . . S:$L(DGZIP)>5 DGZIP=$E(DGZIP,1,5)_"-"_$E(DGZIP,6,9)
  1. . . . S DGZ=DGZ_" "_DGZIP
  1. . ; For foreign address, add Province and Postal Code
  1. . I DGFORGN D
  1. . . I $G(DGADDR(DGCNT,$P(DGFLDS,",",8)))'="" D
  1. . . . ; Province
  1. . . . S DGZ=DGZ_" "_DGADDR(DGCNT,$P(DGFLDS,",",8))
  1. . . I $G(DGADDR(DGCNT,$P(DGFLDS,",",9)))'="" D
  1. . . . ; Postal Code
  1. . . . S DGZ=DGZ_" "_DGADDR(DGCNT,$P(DGFLDS,",",9))
  1. . ; Add the City string to list
  1. . S VALMCNT=VALMCNT+1
  1. . S @DGGLBL@(VALMCNT,0)=" "_DGZ
  1. . ; Country
  1. . S DGZ=$$CNTRYI^DGADDUTL(DGCTRYCD)
  1. . S DGZ=$S(DGZ="":"UNSPECIFIED COUNTRY",DGZ=-1:"UNKNOWN COUNTRY",1:DGZ)
  1. . S VALMCNT=VALMCNT+1
  1. . S @DGGLBL@(VALMCNT,0)=" "_DGZ
  1. . ;
  1. . I DGCNT=1 S VALMCNT=VALMCNT+1,@DGGLBL@(VALMCNT,0)=" (User Entered Address)"
  1. . I DGCNT>1 D
  1. . . S DGZ=" "
  1. . . S VALMCNT=VALMCNT+1
  1. . . I $G(DGADDR(DGCNT,"deliveryPoint"))'="" S DGZ=DGZ_"Delivery Point: "_DGADDR(DGCNT,"deliveryPoint")_" "
  1. . . S DGZ=DGZ_"Confidence Score: "_$G(DGADDR(DGCNT,"confidenceScore"))
  1. . . S @DGGLBL@(VALMCNT,0)=DGZ
  1. Q
  1. ;
  1. HELP ;Help code
  1. S X="?" D DISP^XQORM1 W !!
  1. S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
  1. Q
  1. ;
  1. EXIT ;Exit code
  1. D CLEAN^VALM10
  1. D CLEAR^VALM1
  1. K ^TMP("DGADDVAL",$J)
  1. Q
  1. ;
  1. PEXIT ;DGEN ADD VALID 1.2 MENU protocol exit code
  1. ; DG*5.3*1040; If timeout on the menu, set flag and quit
  1. I $D(DTOUT) S DGTMOT=1
  1. S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
  1. S XQORM("B")="SEL"
  1. Q
  1. ;
  1. ACT(DGACT) ; Entry point for menu action selection
  1. ; = "SEL" - Select an Address -
  1. ;
  1. N DGSEL
  1. ; SEL - user selects one address from the list - merge it into the return array
  1. I DGACT="SEL" S DGSEL=$$SEL()
  1. ; DG*5.3*1040; If timeout, set flag and quit
  1. I DGSEL=-1 S DGTMOT=1 Q
  1. I DGSEL M DGSELADD=DGADDR(DGSEL) Q
  1. ;
  1. S VALMBCK="R"
  1. S XQORM("B")="SEL"
  1. Q
  1. ;
  1. SEL() ; function, prompt to select address
  1. N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
  1. S DIR(0)="NA^1:"_DGADDR
  1. S DIR("A",1)="",DIR("A")="Select Address (1-"_DGADDR_"): " D ^DIR K DIR
  1. ; DG*5.3*1040; return -1 on a timeout
  1. I $D(DTOUT) Q -1
  1. Q X