PXRMPDR ;SLC/AGP,PKR - Patient List Demographic report main routine ;07/17/2006 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21 ; EN(PLIEN) ; -- main entry point for PXRM PATIENT LIST DEMOGRAPHIC N ADDDATA,APPDATA,ARRAY,BACK,CNT,DC,DEMDATA,DELIM,DIC,DIR,DTOUT,DUOUT N ELIGDATA,IEN,INPDATA N FINDDATA,NAME,NODE,PFACDATA,PTIEN N QUIT,REMDATA N X,Y,YESNO W @IOF K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J) S BACK=0,DELIM=0,QUIT=0 OPTION ; W !,"Select the items to include on the report." ADDSEL D ADDSEL^PXRMPDRS(.ADDDATA) I $D(DTOUT)!$D(DUOUT) Q APPSEL D APPSEL^PXRMPDRS(.APPDATA) I $D(DTOUT)!$D(DUOUT) G ADDSEL DEMSEL D DEMSEL^PXRMPDRS(.DEMDATA) I $D(DTOUT)!$D(DUOUT) G APPSEL PFACSEL S PFACDATA(0)=$$ASKYN^PXRMEUT("N","Include the patient's preferred facility") I $D(DTOUT)!$D(DUOUT) G DEMSEL S PFACDATA("LEN")=$S(PFACDATA(0)=1:1,1:0) ELIGSEL D ELIGSEL^PXRMPDRS(.ELIGDATA) I $D(DTOUT)!$D(DUOUT) G PFACSEL DATASEL D DATASEL^PXRMPDRS(PLIEN,.FINDDATA) I $D(DTOUT)!$D(DUOUT) G ELIGSEL INPSEL D INPSEL^PXRMPDRS(.INPDATA) I $D(DTOUT)!$D(DUOUT) G DATASEL REMDATA D REMSEL^PXRMPDRS(PLIEN,.REMDATA) I $D(DTOUT)!$D(DUOUT) G INPSEL S DELIM=$$ASKYN^PXRMEUT("Y","Delimited Report:") I $D(DTOUT)!$D(DUOUT) G REMDATA I DELIM S DC=$$DELIMSEL^PXRMXSD I $D(DTOUT)!$D(DUOUT) G OPTION DEVICE ; N DIR,PXRMQUE,%ZIS,ZTDESC,ZTRTN,ZTSAVE S %ZIS="M" S ZTDESC="Patient List Demographic" S ZTRTN="GETDATA^PXRMPDR(DELIM,PLIEN,.DEMDATA,.PFACDATA,.ADDDATA,.INPDATA,.APPDATA,.FINDDATA,.REMDATA)" S ZTSAVE("*")="" S PXRMQUE=0 S PXRMQUE=$$DEVICE^PXRMXQUE(ZTRTN,ZTDESC,.ZTSAVE,.%ZIS,.ZTSK) I PXRMQUE=1 G EXIT I $D(DTOUT)!$D(DUOUT) G EXIT ; S DIR(0)="E" D ^DIR EXIT D KVA^VADPT K ^TMP("PXRMPLD",$J),^TMP("PXRMPLN",$J) Q ; GETDATA(DELIM,PLIEN,DEMDATA,PFACDATA,ADDDATA,INPDATA,APPDATA,FINDDATA,REMDATA) ; N DATA,DATE,DCREAT,DFN,DTYPE,ERRMSG N GETADD,GETAPP,GETDEM,GETELIG,GETFIND,GETINP,GETREM N IEN,IND,JND,KND,LND N LISTNAME,PIECE N PDATA,PNAME,RIEN,TDATA K ^TMP("PXRMPD",$J) S LISTNAME=$P(^PXRMXP(810.5,PLIEN,0),U,1) S DCREAT=$P(^PXRMXP(810.5,PLIEN,0),U,4) S GETDEM=$S(DEMDATA("LEN")>0:1,1:0) S GETADD=$S(ADDDATA("LEN")>0:1,1:0) S GETINP=$S(INPDATA("LEN")>0:1,1:0) S GETELIG=$S(ELIGDATA("LEN")>0:1,1:0) S GETAPP=$S(APPDATA("LEN")>0:1,1:0) S GETFIND=$S(FINDDATA("LEN")>0:1,1:0) S GETREM=$S(REMDATA("LEN")>0:1,1:0) S IEN=0 F S IEN=+$O(^PXRMXP(810.5,PLIEN,30,IEN)) Q:IEN=0 D . S DFN=$P(^PXRMXP(810.5,PLIEN,30,IEN,0),U,1) I DFN="" Q .;#DBIA 10035 . S PNAME=$P($G(^DPT(DFN,0)),U,1) . I PNAME="" S PNAME="UNDEFINED"_DFN . S ^TMP("PXRMPLN",$J,PNAME,DFN)="" . S PDATA="" . I GETDEM D .. N VADM .. D DEM^VADPT .. F IND=1:1:DEMDATA("LEN") D ... S JND=$P(DEMDATA,",",IND) ... S KND=0 ... F S KND=$O(DEMDATA(JND,KND)) Q:KND="" D .... S PIECE=$P(DEMDATA(JND,KND),U,2) .... S TDATA=$P(VADM(KND),U,PIECE) .... S LND="" .... F S LND=$O(VADM(KND,LND)) Q:LND="" D ..... I TDATA'="" S TDATA=TDATA_"~" ..... S TDATA=TDATA_$P(VADM(KND,LND),U,PIECE) .... I KND=2,'DEMDATA("FULLSSN") S TDATA=$E(TDATA,8,11) .... S $P(PDATA,U,KND)=TDATA .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"DEMDATA")=PDATA,PDATA="" . I PFACDATA(0)=1 D ..;DBIA #1850 .. S TDATA=$$GET1^DIQ(2,DFN,27.02,"E","","ERRMSG") .. I TDATA="" S TDATA="NONE" .. S ^TMP("PXRMPLD",$J,DFN,"PFACDATA")=TDATA . I GETADD D .. N VAPA .. D ADD^VADPT .. F IND=1:1:ADDDATA("LEN") D ... S JND=$P(ADDDATA,",",IND) ... S KND=0 ... F S KND=$O(ADDDATA(JND,KND)) Q:KND="" D .... S PIECE=$P(ADDDATA(JND,KND),U,2) .... S TDATA=$P(VAPA(KND),U,PIECE) .... S $P(PDATA,U,KND)=TDATA .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ADDDATA")=PDATA,PDATA="" . I GETINP D .. N VAIP .. D INP^VADPT .. F IND=1:1:INPDATA("LEN") D ... S JND=$P(INPDATA,",",IND) ... S KND=0 ... F S KND=$O(INPDATA(JND,KND)) Q:KND="" D .... S PIECE=$P(INPDATA(JND,KND),U,2) .... S TDATA=$P(VAIN(KND),U,PIECE) .... S $P(PDATA,U,KND)=TDATA .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"INPDATA")=PDATA,PDATA="" . I GETELIG D .. N VAEL .. D ELIG^VADPT .. F IND=1:1:ELIGDATA("LEN") D ... S JND=$P(ELIGDATA,",",IND) ... S KND=0 ... F S KND=$O(ELIGDATA(JND,KND)) Q:KND="" D .... S PIECE=$P(ELIGDATA(JND,KND),U,2) .... S TDATA=$P(VAEL(KND),U,PIECE) .... I KND=4 S TDATA=$S(TDATA=1:"YES",1:"NO") .... S $P(PDATA,U,KND)=TDATA .. I PDATA'="" S ^TMP("PXRMPLD",$J,DFN,"ELIGDATA")=PDATA,PDATA="" . D KVA^VADPT . I GETREM D .. S IND=0 .. F S IND=$O(REMDATA("IEN",IND)) Q:IND="" D ... S PDATA=$G(^PXRMXP(810.5,PLIEN,30,IEN,"REM",IND,0)) ... I PDATA="" Q ... S RIEN=$P(PDATA,U,1) ... S ^TMP("PXRMPLD",$J,DFN,"REMDATA",RIEN)=PDATA,PDATA="" . I GETFIND D .. N DL .. F IND=1:1:FINDDATA("LEN") D ... S JND=$P(FINDDATA,",",IND) ... S DTYPE=FINDDATA(JND,JND) ... S KND=$O(^PXRMXP(810.5,PLIEN,30,IEN,"DATA","B",DTYPE,"")) ... S DL=$S(KND="":0,1:$L(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U)) ... S DATA=$S(KND="":"",1:$P(^PXRMXP(810.5,PLIEN,30,IEN,"DATA",KND,0),U,2,DL)) ... S ^TMP("PXRMPLD",$J,DFN,"FINDDATA",JND)=DATA ;Get appointment data for all patients on the list. I GETAPP D . N ARRAY,COUNT . S ARRAY(1)=DT,ARRAY(3)="I;R" . S ARRAY(4)="^TMP($J,""PXRMPL""",ARRAY("FLDS")="" . F IND=1:1:APPDATA("LEN") D .. S JND=$P(APPDATA,",",IND) .. S KND=0 .. F S KND=$O(APPDATA(JND,KND)) Q:KND="" S ARRAY("FLDS")=ARRAY("FLDS")_KND_";" . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301") . S IND=0 . F S IND=+$O(^PXRMXP(810.5,PLIEN,30,IND)) Q:IND=0 D .. S DFN=$P(^PXRMXP(810.5,PLIEN,30,IND,0),U,1) .. I DFN'="" S ^TMP($J,"PXRMPL",DFN)="" . S COUNT=$$SDAPI^SDAMA301(.ARRAY) . I COUNT=-1 D Q .. D APPERR^PXRMPDRS .. S APPDATA("ERROR")="" .. K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301") . F IND=1:1:COUNT D .. S DFN="" .. F S DFN=$O(^TMP($J,"SDAMA301",DFN)) Q:DFN="" D ... S (JND,KND)=0 ... F S JND=$O(^TMP($J,"SDAMA301",DFN,JND)) Q:JND="" D .... S DATE=0 .... F S DATE=$O(^TMP($J,"SDAMA301",DFN,JND,DATE)) Q:DATE="" D ..... S KND=KND+1 ..... S TDATA=^TMP($J,"SDAMA301",DFN,JND,DATE) ..... S PDATA=$$FMTE^XLFDT($P(TDATA,U,1)) ..... S TDATA=$P(TDATA,U,2),TDATA=$P(TDATA,";",2) ..... S PDATA=PDATA_U_TDATA ..... S ^TMP("PXRMPLD",$J,DFN,"APPDATA",KND)=PDATA . K ^TMP($J,"PXRMPL"),^TMP($J,"SDAMA301") I DELIM=1 D DELIMPR^PXRMPDRP(DC,PLIEN,.ADDDATA,.APPDATA,.DEMDATA,.FINDDATA,.INPDATA,.PFACDATA,.REMDATA) I DELIM=0 D REGPR^PXRMPDRP(PLIEN,.ADDDATA,.APPDATA,.DEMDATA,.FINDDATA,.INPDATA,.PFACDATA,.REMDATA) Q ; LENGTH(STR,STR1) ; I ($L(STR)+$L(STR1))>245 W !,STR S STR=STR1 E S STR=STR_U_STR1,STR1="" Q ; PAGE ; I ($E(IOST)="C")&(IO=IO(0)) D .S DIR(0)="E" .W ! .D ^DIR K DIR I $D(DUOUT)!($D(DTOUT))!($D(DIROUT)) S DONE=1 Q W:$D(IOF) @IOF S PAGE=PAGE+1 I $E(IOST)="C",IO=IO(0) W @IOF Q ;