| 1 | PXRMPDR ;SLC/AGP,PKR - Patient List Demographic report main routine ;11/16/2007
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN(PLIEN) ; -- main entry point for PXRM PATIENT LIST DEMOGRAPHIC
 | 
|---|
| 5 |  N ARRAY,DC,DDATA,DELIM,DTOUT,DUOUT
 | 
|---|
| 6 |  W @IOF
 | 
|---|
| 7 |  K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J)
 | 
|---|
| 8 |  S DELIM=0
 | 
|---|
| 9 | OPTION ;
 | 
|---|
| 10 |  W !,"Select the items to include on the report."
 | 
|---|
| 11 | ADDSEL D ADDSEL^PXRMPDRS(.DDATA,"ADD")
 | 
|---|
| 12 |  I $D(DTOUT)!$D(DUOUT) Q
 | 
|---|
| 13 | APPSEL D APPSEL^PXRMPDRS(.DDATA,"APP")
 | 
|---|
| 14 |  I $D(DTOUT)!$D(DUOUT) G ADDSEL
 | 
|---|
| 15 | DEMSEL D DEMSEL^PXRMPDRS(.DDATA,"DEM")
 | 
|---|
| 16 |  I $D(DTOUT)!$D(DUOUT) G APPSEL
 | 
|---|
| 17 | PFACSEL S DDATA("PFAC",0)=$$ASKYN^PXRMEUT("N","Include the patient's preferred facility")
 | 
|---|
| 18 |  I $D(DTOUT)!$D(DUOUT) G DEMSEL
 | 
|---|
| 19 |  S DDATA("PFAC","LEN")=$S(DDATA("PFAC",0)=1:1,1:0)
 | 
|---|
| 20 | ELIGSEL D ELIGSEL^PXRMPDRS(.DDATA,"ELIG")
 | 
|---|
| 21 |  I $D(DTOUT)!$D(DUOUT) G PFACSEL
 | 
|---|
| 22 | DATASEL D DATASEL^PXRMPDRS(PLIEN,.DDATA,"FIND")
 | 
|---|
| 23 |  I $D(DTOUT)!$D(DUOUT) G ELIGSEL
 | 
|---|
| 24 | INPSEL D INPSEL^PXRMPDRS(.DDATA,"INP")
 | 
|---|
| 25 |  I $D(DTOUT)!$D(DUOUT) G DATASEL
 | 
|---|
| 26 | REMDATA D REMSEL^PXRMPDRS(PLIEN,.DDATA,"REM")
 | 
|---|
| 27 |  I $D(DTOUT)!$D(DUOUT) G INPSEL
 | 
|---|
| 28 |  S DELIM=$$ASKYN^PXRMEUT("Y","Delimited Report:")
 | 
|---|
| 29 |  I $D(DTOUT)!$D(DUOUT) G REMDATA
 | 
|---|
| 30 |  S DC=$S(DELIM:$$DELIMSEL^PXRMXSD,1:U)
 | 
|---|
| 31 |  I $D(DTOUT)!$D(DUOUT) G OPTION
 | 
|---|
| 32 | DEVICE ;
 | 
|---|
| 33 |  N DESC,DIR,PXRMQUE,RTN,SAVE,%ZIS
 | 
|---|
| 34 |  S %ZIS="M"
 | 
|---|
| 35 |  S DESC="Patient List Demographic Report"
 | 
|---|
| 36 |  S RTN="GETPDATA^PXRMPDR(DELIM,DC,PLIEN,.DDATA)"
 | 
|---|
| 37 |  S SAVE("DELIM")="",SAVE("DC")="",SAVE("PLIEN")=""
 | 
|---|
| 38 |  S SAVE("DDATA(")=""
 | 
|---|
| 39 |  S PXRMQUE=$$DEVICE^PXRMXQUE(RTN,DESC,.SAVE,.%ZIS,1)
 | 
|---|
| 40 |  I PXRMQUE'="" G EXIT
 | 
|---|
| 41 |  I $D(DTOUT)!$D(DUOUT) G EXIT
 | 
|---|
| 42 |  S DIR(0)="E" D ^DIR
 | 
|---|
| 43 | EXIT D KVA^VADPT
 | 
|---|
| 44 |  K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J)
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | GETPDATA(DELIM,DC,PLIEN,DDATA) ;
 | 
|---|
| 48 |  N DATA,DATE,DCREAT,DFN,DTYPE,ERRMSG
 | 
|---|
| 49 |  N GETADD,GETAPP,GETDEM,GETELIG,GETFIND,GETINP,GETREM
 | 
|---|
| 50 |  N IEN,IND,JND,KND,LND
 | 
|---|
| 51 |  N LISTNAME,PIECE
 | 
|---|
| 52 |  N PDATA,PNAME,RIEN,TDATA
 | 
|---|
| 53 |  K ^TMP("PXRMPD",$J)
 | 
|---|
| 54 |  S LISTNAME=$P(^PXRMXP(810.5,PLIEN,0),U,1)
 | 
|---|
| 55 |  S DCREAT=$P(^PXRMXP(810.5,PLIEN,0),U,4)
 | 
|---|
| 56 |  S GETDEM=$S(DDATA("DEM","LEN")>0:1,1:0)
 | 
|---|
| 57 |  S GETADD=$S(DDATA("ADD","LEN")>0:1,1:0)
 | 
|---|
| 58 |  S GETINP=$S(DDATA("INP","LEN")>0:1,1:0)
 | 
|---|
| 59 |  S GETELIG=$S(DDATA("ELIG","LEN")>0:1,1:0)
 | 
|---|
| 60 |  S GETAPP=$S(DDATA("APP","LEN")>0:1,1:0)
 | 
|---|
| 61 |  S GETFIND=$S(DDATA("FIND","LEN")>0:1,1:0)
 | 
|---|
| 62 |  S GETREM=$S(DDATA("REM","LEN")>0:1,1:0)
 | 
|---|
| 63 |  S IEN=0
 | 
|---|
| 64 |  F  S IEN=+$O(^PXRMXP(810.5,PLIEN,30,IEN)) Q:IEN=0  D
 | 
|---|
| 65 |  . S DFN=$P(^PXRMXP(810.5,PLIEN,30,IEN,0),U,1) I DFN="" Q
 | 
|---|
| 66 |  .;#DBIA 10035
 | 
|---|
| 67 |  . S PNAME=$P($G(^DPT(DFN,0)),U,1)
 | 
|---|
| 68 |  . I PNAME="" S PNAME="UNDEFINED"_DFN
 | 
|---|
| 69 |  . S ^TMP("PXRMPLN",$J,PNAME,DFN)=""
 | 
|---|
| 70 |  . S PDATA=""
 | 
|---|
| 71 |  . I GETDEM D
 | 
|---|
| 72 |  .. N VADM
 | 
|---|
| 73 |  .. D DEM^VADPT
 | 
|---|
| 74 |  .. F IND=1:1:DDATA("DEM","LEN") D
 | 
|---|
| 75 |  ... S JND=$P(DDATA("DEM"),",",IND)
 | 
|---|
| 76 |  ... S KND=0
 | 
|---|
| 77 |  ... F  S KND=$O(DDATA("DEM",JND,KND)) Q:KND=""  D
 | 
|---|
| 78 |  .... S PIECE=$P(DDATA("DEM",JND,KND),U,2)
 | 
|---|
| 79 |  .... S TDATA=$P(VADM(KND),U,PIECE)
 | 
|---|
| 80 |  .... S LND=""
 | 
|---|
| 81 |  .... F  S LND=$O(VADM(KND,LND)) Q:LND=""  D
 | 
|---|
| 82 |  ..... I TDATA'="" S TDATA=TDATA_"~"
 | 
|---|
| 83 |  ..... S TDATA=TDATA_$P(VADM(KND,LND),U,PIECE)
 | 
|---|
| 84 |  .... I KND=2,'DDATA("DEM","FULLSSN") S TDATA=$E(TDATA,8,11)
 | 
|---|
| 85 |  .... S $P(PDATA,U,KND)=TDATA
 | 
|---|
| 86 |  .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"DEM")=PDATA,PDATA=""
 | 
|---|
| 87 |  . I DDATA("PFAC",0)=1 D
 | 
|---|
| 88 |  ..;DBIA #1850
 | 
|---|
| 89 |  .. S TDATA=$$GET1^DIQ(2,DFN,27.02,"E","","ERRMSG")
 | 
|---|
| 90 |  .. I TDATA="" S TDATA="NONE"
 | 
|---|
| 91 |  .. S ^TMP("PXRMPLD",$J,DFN,"PFAC")=TDATA
 | 
|---|
| 92 |  . I GETADD D
 | 
|---|
| 93 |  .. N VAPA
 | 
|---|
| 94 |  .. D ADD^VADPT
 | 
|---|
| 95 |  .. F IND=1:1:DDATA("ADD","LEN") D
 | 
|---|
| 96 |  ... S JND=$P(DDATA("ADD"),",",IND)
 | 
|---|
| 97 |  ... S KND=0
 | 
|---|
| 98 |  ... F  S KND=$O(DDATA("ADD",JND,KND)) Q:KND=""  D
 | 
|---|
| 99 |  .... S PIECE=$P(DDATA("ADD",JND,KND),U,2)
 | 
|---|
| 100 |  .... S TDATA=$P(VAPA(KND),U,PIECE)
 | 
|---|
| 101 |  .... S $P(PDATA,U,KND)=TDATA
 | 
|---|
| 102 |  .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ADD")=PDATA,PDATA=""
 | 
|---|
| 103 |  . I GETINP D
 | 
|---|
| 104 |  .. N VAIP
 | 
|---|
| 105 |  .. D INP^VADPT
 | 
|---|
| 106 |  .. F IND=1:1:DDATA("INP","LEN") D
 | 
|---|
| 107 |  ... S JND=$P(DDATA("INP"),",",IND)
 | 
|---|
| 108 |  ... S KND=0
 | 
|---|
| 109 |  ... F  S KND=$O(DDATA("INP",JND,KND)) Q:KND=""  D
 | 
|---|
| 110 |  .... S PIECE=$P(DDATA("INP",JND,KND),U,2)
 | 
|---|
| 111 |  .... S TDATA=$P(VAIN(KND),U,PIECE)
 | 
|---|
| 112 |  .... S $P(PDATA,U,KND)=TDATA
 | 
|---|
| 113 |  .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"INP")=PDATA,PDATA=""
 | 
|---|
| 114 |  . I GETELIG D
 | 
|---|
| 115 |  .. N VAEL
 | 
|---|
| 116 |  .. D ELIG^VADPT
 | 
|---|
| 117 |  .. F IND=1:1:DDATA("ELIG","LEN") D
 | 
|---|
| 118 |  ... S JND=$P(DDATA("ELIG"),",",IND)
 | 
|---|
| 119 |  ... S KND=0
 | 
|---|
| 120 |  ... F  S KND=$O(DDATA("ELIG",JND,KND)) Q:KND=""  D
 | 
|---|
| 121 |  .... S PIECE=$P(DDATA("ELIG",JND,KND),U,2)
 | 
|---|
| 122 |  .... S TDATA=$P(VAEL(KND),U,PIECE)
 | 
|---|
| 123 |  .... I KND=4 S TDATA=$S(TDATA=1:"YES",1:"NO")
 | 
|---|
| 124 |  .... S $P(PDATA,U,KND)=TDATA
 | 
|---|
| 125 |  .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ELIG")=PDATA,PDATA=""
 | 
|---|
| 126 |  . D KVA^VADPT
 | 
|---|
| 127 |  . I GETREM D
 | 
|---|
| 128 |  .. S IND=0
 | 
|---|
| 129 |  .. F  S IND=$O(DDATA("REM","IEN",IND)) Q:IND=""  D
 | 
|---|
| 130 |  ... S PDATA=$G(^PXRMXP(810.5,PLIEN,30,IEN,"REM",IND,0))
 | 
|---|
| 131 |  ... I PDATA="" Q
 | 
|---|
| 132 |  ... S RIEN=$P(PDATA,U,1)
 | 
|---|
| 133 |  ... S ^TMP("PXRMPLD",$J,DFN,"REM",RIEN)=PDATA,PDATA=""
 | 
|---|
| 134 |  . I GETFIND D
 | 
|---|
| 135 |  .. N DL
 | 
|---|
| 136 |  .. F IND=1:1:DDATA("FIND","LEN") D
 | 
|---|
| 137 |  ... S JND=$P(DDATA("FIND"),",",IND)
 | 
|---|
| 138 |  ... S DTYPE=DDATA("FIND",JND,JND)
 | 
|---|
| 139 |  ... S KND=$O(^PXRMXP(810.5,PLIEN,30,IEN,"DATA","B",DTYPE,""))
 | 
|---|
| 140 |  ... S DL=$S(KND="":0,1:$L(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U))
 | 
|---|
| 141 |  ... S DATA=$S(KND="":"",1:$P(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U,2,DL))
 | 
|---|
| 142 |  ... S ^TMP("PXRMPLD",$J,DFN,"FIND",JND)=DATA
 | 
|---|
| 143 |  ;Get appointment data for all patients on the list.
 | 
|---|
| 144 |  I GETAPP D
 | 
|---|
| 145 |  . N ARRAY,COUNT
 | 
|---|
| 146 |  . S ARRAY(1)=DT,ARRAY(3)="I;R"
 | 
|---|
| 147 |  . S ARRAY(4)="^TMP($J,""PXRMPL""",ARRAY("FLDS")=""
 | 
|---|
| 148 |  . F IND=1:1:DDATA("APP","LEN") D
 | 
|---|
| 149 |  .. S JND=$P(DDATA("APP"),",",IND)
 | 
|---|
| 150 |  .. S KND=0
 | 
|---|
| 151 |  .. F  S KND=$O(DDATA("APP",JND,KND)) Q:KND=""  S ARRAY("FLDS")=ARRAY("FLDS")_KND_";"
 | 
|---|
| 152 |  . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
 | 
|---|
| 153 |  . S IND=0
 | 
|---|
| 154 |  . F  S IND=+$O(^PXRMXP(810.5,PLIEN,30,IND)) Q:IND=0  D
 | 
|---|
| 155 |  .. S DFN=$P(^PXRMXP(810.5,PLIEN,30,IND,0),U,1)
 | 
|---|
| 156 |  .. I DFN'="" S ^TMP($J,"PXRMPL",DFN)=""
 | 
|---|
| 157 |  . S COUNT=$$SDAPI^SDAMA301(.ARRAY)
 | 
|---|
| 158 |  . I COUNT=-1 D  Q
 | 
|---|
| 159 |  .. D APPERR^PXRMPDRS
 | 
|---|
| 160 |  .. S DDATA("APP","ERROR")=""
 | 
|---|
| 161 |  .. K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
 | 
|---|
| 162 |  . F IND=1:1:COUNT D
 | 
|---|
| 163 |  .. S DFN=""
 | 
|---|
| 164 |  .. F  S DFN=$O(^TMP($J,"SDAMA301",DFN)) Q:DFN=""  D
 | 
|---|
| 165 |  ... S (JND,KND)=0
 | 
|---|
| 166 |  ... F  S JND=$O(^TMP($J,"SDAMA301",DFN,JND)) Q:JND=""  D
 | 
|---|
| 167 |  .... S DATE=0
 | 
|---|
| 168 |  .... F  S DATE=$O(^TMP($J,"SDAMA301",DFN,JND,DATE)) Q:DATE=""  D
 | 
|---|
| 169 |  ..... S KND=KND+1
 | 
|---|
| 170 |  ..... S TDATA=^TMP($J,"SDAMA301",DFN,JND,DATE)
 | 
|---|
| 171 |  ..... S PDATA=$$FMTE^XLFDT($P(TDATA,U,1))
 | 
|---|
| 172 |  ..... S TDATA=$P(TDATA,U,2),TDATA=$P(TDATA,";",2)
 | 
|---|
| 173 |  ..... S PDATA=PDATA_U_TDATA
 | 
|---|
| 174 |  ..... S ^TMP("PXRMPLD",$J,DFN,"APP",KND)=PDATA
 | 
|---|
| 175 |  . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301")
 | 
|---|
| 176 |  I DELIM=1 D DELIMPR^PXRMPDRP(DC,PLIEN,.DDATA)
 | 
|---|
| 177 |  I DELIM=0 D REGPR^PXRMPDRP(PLIEN,.DDATA)
 | 
|---|
| 178 |  Q
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 | LENGTH(STR,STR1) ;
 | 
|---|
| 181 |  I ($L(STR)+$L(STR1))>245 W !,STR S STR=STR1
 | 
|---|
| 182 |  E  S STR=STR_U_STR1,STR1=""
 | 
|---|
| 183 |  Q
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 | PAGE ;
 | 
|---|
| 186 |  I ($E(IOST,1,2)="C-")&(IO=IO(0)) D
 | 
|---|
| 187 |  .S DIR(0)="E"
 | 
|---|
| 188 |  .W !
 | 
|---|
| 189 |  .D ^DIR K DIR
 | 
|---|
| 190 |  I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)) S DONE=1 Q
 | 
|---|
| 191 |  W:$D(IOF) @IOF
 | 
|---|
| 192 |  S PAGE=PAGE+1
 | 
|---|
| 193 |  I ($E(IOST,1,2)="C-")&(IO=IO(0)) W @IOF
 | 
|---|
| 194 |  Q
 | 
|---|
| 195 |  ;
 | 
|---|