| 1 | IVMLDEM2 ;ALB/KCL - IVM DEMOGRAPHIC UPLOADABLE FIELDS ; 15-APR-94 | 
|---|
| 2 | ;;Version 2.0 ; INCOME VERIFICATION MATCH ;; 21-OCT-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ; | 
|---|
| 6 | EN ; - main entry point for IVM DEMOGRAPHIC UPLOADABLE | 
|---|
| 7 | N IVMENT | 
|---|
| 8 | D EN^VALM("IVM DEMOGRAPHIC UPLOADABLE") | 
|---|
| 9 | Q | 
|---|
| 10 | ; | 
|---|
| 11 | ; | 
|---|
| 12 | HDR ; - header code for list manager display | 
|---|
| 13 | S IVMBLNK="",$P(IVMBLNK," ",45)="" | 
|---|
| 14 | ; | 
|---|
| 15 | ; - list manager header line 1 | 
|---|
| 16 | S VALMHDR(1)="Patient: "_$E($E($P(^DPT(DFN,0),"^"),1,20)_" "_"("_$E($P(^DPT(DFN,0),"^",9),6,9)_")"_IVMBLNK,1,39)_" "_"Uploadable Demographic Fields" | 
|---|
| 17 | ; | 
|---|
| 18 | ; - list manager header line 2 | 
|---|
| 19 | S VALMHDR(2)="  " | 
|---|
| 20 | Q | 
|---|
| 21 | ; | 
|---|
| 22 | ; | 
|---|
| 23 | INIT ; - init variables and list array | 
|---|
| 24 | ; | 
|---|
| 25 | ;  Input:  IVMDA2  --  Pointer to case record in file #301.5 | 
|---|
| 26 | ;          IVMDA1  --  Pointer to PID msg in sub-file #301.501 | 
|---|
| 27 | ;             DFN  --  Pointer to patient in file #2 | 
|---|
| 28 | ; | 
|---|
| 29 | ; | 
|---|
| 30 | ; - flag used for delete demographic field action (DF) | 
|---|
| 31 | S IVMWHERE="UP" | 
|---|
| 32 | ; | 
|---|
| 33 | K ^TMP("IVMUPLOAD",$J) | 
|---|
| 34 | S IVMBL="",$P(IVMBL," ",35)="",IVMCNTR=0 | 
|---|
| 35 | D DEM^VADPT,ADD^VADPT S IVMSTATE="",IVMSTPTR=$P(VAPA(5),"^") | 
|---|
| 36 | F IVMDA=0:0 S IVMDA=$O(^IVM(301.5,IVMDA2,"IN",IVMDA1,"DEM",IVMDA)) Q:'IVMDA  D | 
|---|
| 37 | .; | 
|---|
| 38 | .; - grab node with IVM-supplied data | 
|---|
| 39 | .S IVMDEMO=$G(^IVM(301.5,IVMDA2,"IN",IVMDA1,"DEM",IVMDA,0)) I IVMDEMO="" Q | 
|---|
| 40 | .; | 
|---|
| 41 | .; - quit if data element is non-uploadable | 
|---|
| 42 | .S IVMTABLE=$G(^IVM(301.92,+$P(IVMDEMO,"^"),0)) | 
|---|
| 43 | .Q:'$P(IVMTABLE,"^",3) | 
|---|
| 44 | .; | 
|---|
| 45 | .; - grab the IVM-supplied state | 
|---|
| 46 | .I $P(IVMTABLE,"^",2)["PID114" S IVMSTATE=$P(IVMDEMO,"^",2) | 
|---|
| 47 | .; | 
|---|
| 48 | .S IVMCNTR=IVMCNTR+1 | 
|---|
| 49 | .; | 
|---|
| 50 | .; - extract DHCP value in displayable format | 
|---|
| 51 | .S IVMDHCP="" X:$D(^IVM(301.92,+$P(IVMDEMO,"^"),2)) ^(2) S IVMDHCP=Y | 
|---|
| 52 | .; | 
|---|
| 53 | .; - build index record to use for processing as | 
|---|
| 54 | .;    ^tmp("ivmupload",$j,"idx",ctr,ctr)=dfn^da(2)^da(1)^da^ivm data^pointer to file (#1)^dhcp field number^dhcp field name | 
|---|
| 55 | .; | 
|---|
| 56 | .S ^TMP("IVMUPLOAD",$J,"IDX",IVMCNTR,IVMCNTR)=DFN_"^"_IVMDA2_"^"_IVMDA1_"^"_IVMDA_"^"_$P(IVMDEMO,"^",2)_"^"_$P(IVMTABLE,"^",4)_"^"_$P(IVMTABLE,"^",5)_"^"_$P(IVMTABLE,"^") | 
|---|
| 57 | .; | 
|---|
| 58 | .; - build list manager display line | 
|---|
| 59 | .D WRITLINE($P(IVMTABLE,"^")_"^"_IVMDHCP_"^"_$P(IVMDEMO,"^",2),IVMCNTR) | 
|---|
| 60 | ; | 
|---|
| 61 | ;I '$O(@VALMAR@(0)) S @VALMAR@(1,0)=" ",@VALMAR@(2,0)="There is no uploadable demographic information to view.",IVMCNTR=2,^TMP("IVMUPLOAD",$J,"IDX",1,1)=1,^TMP("IVMUPLOAD",$J,"IDX",2,2)=2 | 
|---|
| 62 | ; | 
|---|
| 63 | ; | 
|---|
| 64 | I '$O(@VALMAR@(0)) D | 
|---|
| 65 | .; | 
|---|
| 66 | .; - check for non-uploadable fields, if no fields do DELETE | 
|---|
| 67 | .I '$$DEMO^IVMLDEM5(IVMDA2,IVMDA1,0) D DELETE^IVMLDEM5(IVMDA2,IVMDA1,IVMNAME) | 
|---|
| 68 | .; | 
|---|
| 69 | .; - if non-uploadable fields set array field from 'YES' to 'NO' for list manager display | 
|---|
| 70 | .I $$DEMO^IVMLDEM5(IVMDA2,IVMDA1,0) S $P(^TMP("IVMDUPL",$J,IVMNAME,IVMDA2,IVMDA1),"^",4)="NO" | 
|---|
| 71 | .; | 
|---|
| 72 | .; - display msg to user that no uploadable data to view | 
|---|
| 73 | .S @VALMAR@(1,0)=" " | 
|---|
| 74 | .S @VALMAR@(2,0)="There is no uploadable demographic information to view." | 
|---|
| 75 | .S IVMCNTR=2 | 
|---|
| 76 | ; | 
|---|
| 77 | ; - list manager variable as number of lines in the list | 
|---|
| 78 | S VALMCNT=IVMCNTR | 
|---|
| 79 | ; | 
|---|
| 80 | INITQ ; - clean up variables | 
|---|
| 81 | D KVA^VADPT ; kill all variables defined by VADPT routine | 
|---|
| 82 | K IVMBL,IVMBLNK,IVMCNTR,IVMDA,IVMDEMO,IVMDHCP,IVMFIELD,IVMSTATE,IVMSTPTR,IVMTABLE | 
|---|
| 83 | Q | 
|---|
| 84 | ; | 
|---|
| 85 | ; | 
|---|
| 86 | WRITLINE(IVMLINE,IVMNUM) ; - write line out for list manager display | 
|---|
| 87 | ; | 
|---|
| 88 | ;  Input:  IVMLINE  --  as the line for display: | 
|---|
| 89 | ;                       dhcp field name^dhcp field value^ivm field value | 
|---|
| 90 | ;           IVMNUM  --  as the line number | 
|---|
| 91 | ; Output:  None | 
|---|
| 92 | ; | 
|---|
| 93 | N IVMLN,IVMOUT1,IVMOUT2 | 
|---|
| 94 | S IVMOUT1=$P(IVMLINE,"^",2) | 
|---|
| 95 | I $P(IVMTABLE,"^",7) S IVMOUT1=$$OUTTR^IVMUFNC(IVMOUT1,IVMTABLE,IVMSTPTR) | 
|---|
| 96 | S:IVMOUT1="" IVMOUT1="(* NONE ON FILE *)" | 
|---|
| 97 | S IVMOUT2=$$OUTTR^IVMUFNC($P(IVMLINE,"^",3),IVMTABLE,IVMSTATE) | 
|---|
| 98 | S IVMLN=$E($P(IVMLINE,"^",1)_IVMBL,1,30)_"  "_$E(IVMOUT1_IVMBL,1,20)_"  "_$E(IVMOUT2_IVMBL,1,20) | 
|---|
| 99 | D CNTRL^VALM10(IVMNUM,58,22,IOINHI,IOINORM) ; highlight IVM field value | 
|---|
| 100 | S @VALMAR@(IVMNUM,0)=$E(IVMNUM_"   ",1,3)_IVMLN | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | ; | 
|---|
| 104 | HELP ; - help code | 
|---|
| 105 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 106 | Q | 
|---|
| 107 | ; | 
|---|
| 108 | EXIT ; - exit code | 
|---|
| 109 | K ^TMP("IVMUPLOAD",$J) | 
|---|
| 110 | Q | 
|---|