Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/CLINICAL_REMINDERS-PXRM/PXRMXSL1.m

    r613 r623  
    1 PXRMXSL1        ; SLC/PJH - Process Visits/Appts Reminder Due report;02/07/2007
    2         ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
    3         ;
    4         ; Called from PXRMXSE
    5         ;
    6 TMP(DFN,NAM,FACILITY,INP)       ;Update ^TMP("PXRMX"
    7         I PXRMFCMB="Y" S FACILITY="COMBINED FACILITIES"
    8         I PXRMLCMB="Y" S NAM="COMBINED LOCATIONS"
    9         S ^TMP("PXRMX",$J,FACILITY,NAM,DFN)=INP
    10         Q
    11         ;
    12         ;Mark location as found
    13 MARK(IC)        ;
    14         S ^XTMP(PXRMXTMP,"MARKED AS FOUND",IC)=""
    15         Q
    16         ;
    17         ;Check if facility is on list, PXMRFACN.
    18 HFAC(HLOCIEN)   ;
    19         N DIV,HFAC
    20         ;DBIA #2804
    21         S HFAC=$P(^SC(HLOCIEN,0),U,4)
    22         I HFAC="" S DIV=$P($G(^SC(HLOCIEN,0)),U,15) S:DIV'="" HFAC=$P($G(^DG(40.8,DIV,0)),U,7)
    23         I HFAC="" S HFAC=+$P($$SITE^VASITE,U,3)
    24         I HFAC="" Q ""
    25         I '$D(PXRMFACN(HFAC)) Q ""
    26         Q HFAC
    27         ;
    28 INACTCL(HLIEN,PXRMBDT)  ;
    29         ;Check to see if clinic is inactivated before the start of
    30         ;the reporting period
    31         N INACT,REACT
    32         S INACT=+$P($G(^SC(HLIEN,"I")),U) I INACT=0 Q 0
    33         S REACT=+$P($G(^SC(HLIEN,"I")),U,2)
    34         I REACT'<INACT Q 0
    35         I INACT<PXRMBDT Q 1
    36         Q 0
    37         ;
    38 INPADM  ;
    39         ;Build list of inpatients admissions and current patients on a ward
    40         N BD,DFN,ED,FACILITY,HIEN,NAM
    41         S NAM="All Locations"
    42         S HIEN=0
    43         F  S HIEN=$O(^XTMP(PXRMXTMP,"HLOC",HIEN)) Q:HIEN'>0  D
    44         .S FACILITY=$P(^XTMP(PXRMXTMP,"HLOC",HIEN),U,1)
    45         .;Get WARDIEN,WARDNAM and return DFN's in PATS
    46         .N PATS
    47         .I PXRMFD="C" D WARD^PXRMXAP(HIEN,.PATS)
    48         .I PXRMFD="A" D
    49         ..; Get admissions from patient movements and return DFN's in PATS
    50         ..S BD=PXRMBDT-.0001
    51         ..S ED=PXRMEDT+.2359
    52         ..D ADM^PXRMXAP(HIEN,.PATS,BD,ED)
    53         .;Split report by location
    54         .I PXRMLCMB="N" S NAM=$P(^XTMP(PXRMXTMP,"HLOC",HIEN),U,2)
    55         .;Build ^TMP for selected patients
    56         .S DFN="",FOUND=0
    57         .F  S DFN=$O(PATS(DFN)) Q:DFN=""  D
    58         ..S ^TMP($J,"PXRM PATIENT EVAL",DFN)=""
    59         ..D TMP(DFN,NAM,FACILITY,HIEN) D MARK(HIEN)
    60         Q
    61         ;
    62 BHLOC   ;
    63         N CLINIEN,END,FACILITY,NAM,HLIEN,I,START,TEXT
    64         N INACT,REACT
    65         I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
    66         ;All inpatient, outpatient all location credit stop and encounter
    67         S START=$H
    68         I $P(PXRMLCSC,U)["HA"!($P(PXRMLCSC,U)="CA") D
    69         .S HLIEN=0 F  S HLIEN=$O(^SC(HLIEN)) Q:HLIEN'>0  D
    70         ..S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
    71         ..I $$INACTCL(HLIEN,PXRMBDT)=1 Q
    72         ..S NAM=$P(^SC(HLIEN,0),U)
    73         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
    74         ..;All inpatient location
    75         ..I $P(PXRMLCSC,U)="HAI",$D(^SC(HLIEN,42)) S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
    76         ..;All outpatient locations
    77         ..I $P(PXRMLCSC,U)="HA",'$D(^SC(HLIEN,42)) S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
    78         ..;All encounters with a credit stop
    79         ..I $P(PXRMLCSC,U)="CA",$P($G(^SC(HLIEN,0)),U,7)>0 S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
    80         ;Select hosiptal locations
    81         I $P(PXRMLCSC,U,1)="HS" D
    82         .S HLIEN=0 F  S HLIEN=$O(PXRMLOCN(HLIEN)) Q:HLIEN'>0  D
    83         ..S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
    84         ..I $$INACTCL(HLIEN,PXRMBDT)=1 Q
    85         ..S NAM=$P(^SC(HLIEN,0),U)
    86         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
    87         ..S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM
    88         ;Select Credit Stops
    89         I PXRMSEL="L",$P(PXRMLCSC,U)="CS" D
    90         .S CLINIEN=0 F  S CLINIEN=$O(PXRMCSN(CLINIEN)) Q:CLINIEN'>0  D
    91         ..S HLIEN=0 F  S HLIEN=$O(^SC("AST",CLINIEN,HLIEN)) Q:HLIEN'>0  D
    92         ...S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
    93         ...I $$INACTCL(HLIEN,PXRMBDT)=1 Q
    94         ...S NAM=$P(^DIC(40.7,CLINIEN,0),U)_" "_$P(PXRMCS($G(PXRMCSN(CLINIEN))),U,3)
    95         ...I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
    96         ...S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM_U_$P(PXRMCS($G(PXRMCSN(CLINIEN))),U,3)
    97         ;Selected Clinic Groups
    98         I PXRMSEL="L",$E(PXRMLCSC)="G" D
    99         .S CGRPIEN=0 F  S CGRPIEN=$O(PXRMCGRN(CGRPIEN)) Q:CGRPIEN'>0  D
    100         ..S HLIEN=0 F  S HLIEN=$O(^SC("ASCRPW",CGRPIEN,HLIEN)) Q:HLIEN'>0  D
    101         ...S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
    102         ...I $$INACTCL(HLIEN,PXRMBDT)=1 Q
    103         ...I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
    104         ...S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_$P(^SC(HLIEN,0),U)_U_CGRPIEN
    105         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
    106         S END=$H
    107         S TEXT="Elapsed time for building hospital locations: "_$$DETIME^PXRMXSL1(START,END)
    108         S ^XTMP(PXRMXTMP,"TIMING","BUILDING HOSPITAL LOCATIONS")=TEXT
    109         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) W !,TEXT
    110         Q
    111         ;
    112 DETIME(START,END)       ;
    113         N ETIME,TEXT
    114         S ETIME=$$HDIFF^XLFDT(END,START,2)
    115         I ETIME>90 D
    116         . S ETIME=$$HDIFF^XLFDT(END,START,3)
    117         . S TEXT=ETIME
    118         E  S TEXT=ETIME_" secs"
    119         Q TEXT
    120         ;
    121 OERR    ;
    122         N CNT,II,NAM,OTM
    123         I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
    124         S II=""
    125         ;Get patient list for each team
    126         F  S II=$O(PXRMOTM(II)) Q:II=""  D
    127         .S OTM=$P(PXRMOTM(II),U),NAM=$P(PXRMOTM(II),U,2)
    128         .;Build list of patients for OE/RR team ; DBIA #2692
    129         .K ^TMP($J,"OTM")
    130         .D TEAMPTS^ORQPTQ1("^TMP($J,""OTM"",",OTM,1)
    131         .I $G(^TMP($J,"OTM",1))["No patients found" Q
    132         .I PXRMTCMB="Y" N OTM,NAM S OTM="COMBINED",NAM="COMBINED TEAMS"
    133         .S CNT=0 F  S CNT=$O(^TMP($J,"OTM",CNT)) Q:CNT'>0  D
    134         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from OE/RR List",.BUSY)
    135         ..S DFN=$P(^TMP($J,"OTM",CNT),U)
    136         ..D UPD1(DFN,NAM,"FACILITY",II)
    137         .D MARK(OTM)
    138         K ^TMP($J,"OTM")
    139         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
    140         I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
    141         Q
    142         ;
    143         ;PCMM provider selected
    144 PCMMP   ;
    145         I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
    146         N CNT,SCDT,LIST,SCERR,SCLIST,II,PCM,NAM,PNAM,PXRM,OK
    147         N FACILITY,NAM
    148         S SCDT("BEGIN")=PXRMSDT,SCDT("END")=PXRMSDT
    149         ;Include patient if in team on any day in range
    150         S SCDT("INCL")=0
    151         S II=""
    152         ;Get patient list for each PROVIDER
    153         F  S II=$O(PXRMPRV(II)) Q:II=""  D
    154         .S PCM=$P(PXRMPRV(II),U),NAM=$P(PXRMPRV(II),U,2)
    155         .;Get patients for practs. roles - excluding assoc clinics
    156         .K ^TMP($J,"PCM")
    157         .N SCTEAM D PTPR^PXRMXAP(PCM,PXRMREP)
    158         .I $O(^TMP($J,"PCM",0))="" Q
    159         .;Save in ^TMP in alpha order within team number (internal)
    160         .S CNT=0 F  S CNT=$O(^TMP($J,"PCM",CNT)) Q:CNT'>0  D
    161         ..S DFN=$P(^TMP($J,"PCM",CNT),U)
    162         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from Primary Provider List",.BUSY)
    163         ..I PXRMPRIM="P",($$PCASSIGN^PXRMXAP(DFN)'=1) Q
    164         ..;For detailed provider report get assoc clinic
    165         ..I PXRMREP="D" S DCLN=$P(^TMP($J,"PCM",CNT),U,7) I +$G(DCLN)>0 D
    166         ...S FACILITY=$$HFAC(DCLN)
    167         ...S NAM=$P(^SC(DCLN,0),U)
    168         ...S ^XTMP(PXRMXTMP,"HLOC",DCLN)=FACILITY_U_NAM
    169         ..I $G(DCLN)'="" S PXRMDCLN(DCLN)=""
    170         ..D UPD1(DFN,NAM,"FACILITY",+$G(DCLN))
    171         .D MARK(PCM)
    172         K ^TMP($J,"PCM")
    173         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
    174         I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
    175         Q
    176         ;
    177         ;PCMM team selected
    178 PCMMT   ;
    179         I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
    180         N CNT,SCDT,LIST,SCERR,SCLIST,II,PCM,NAM,PNAM,OK
    181         S SCDT("BEGIN")=PXRMSDT,SCDT("END")=PXRMSDT
    182         ;Include patient if in team on any day in range
    183         S SCDT("INCL")=0
    184         S II=""
    185         ;Get patient list for each team
    186         F  S II=$O(PXRMPCM(II)) Q:II=""  D
    187         .S PCM=$P(PXRMPCM(II),U),NAM=$P(PXRMPCM(II),U,2)
    188         .K ^TMP($J,"PCM")
    189         .S OK=$$PTTM^PXRMXAP(PCM,.SCERR) Q:'OK
    190         .I $O(^TMP($J,"PCM",0))="" Q
    191         .S FACILITY=$$FAC^PXRMXAP(PCM)
    192         .S CNT=0 F  S CNT=$O(^TMP($J,"PCM",CNT)) Q:CNT'>0  D
    193         ..S DFN=$P(^TMP($J,"PCM",CNT),U)
    194         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from PCMM Team List",.BUSY)
    195         ..D UPD1(DFN,NAM,FACILITY,II)
    196         .D MARK(PCM)
    197         K ^TMP($J,"PCM")
    198         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
    199         I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
    200         Q
    201         ;
    202         ;Individual Patients selected
    203 IND     ;
    204         N CNT,DFN,DUMMY,LIST,NAM
    205         S (DUMMY,NAM)="PATIENT"
    206         S CNT=0 F  S CNT=$O(PXRMPAT(CNT)) Q:CNT'>0  D
    207         .S DFN=$P(PXRMPAT(CNT),U)
    208         .D UPD1(DFN,"INDIVIDUAL PATIENTS","FACILITY",DFN)
    209         I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
    210         Q
    211         ;
    212         ;Patient lists selected
    213 LIST    ;
    214         I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
    215         N DFN,DSUB,DUMMY,LCNT,LIEN,LIST,NAM
    216         S (DUMMY,NAM)="PATIENT",LCNT=0
    217         F  S LCNT=$O(PXRMLIST(LCNT)) Q:'LCNT  D
    218         .S LIEN=$P(PXRMLIST(LCNT),U) Q:'LIEN
    219         .S NAM=$P(^PXRMXP(810.5,LIEN,0),U)
    220         .S DSUB=0
    221         .F  S DSUB=$O(^PXRMXP(810.5,LIEN,30,DSUB)) Q:'DSUB  D
    222         ..S DFN=$P($G(^PXRMXP(810.5,LIEN,30,DSUB,0)),U) Q:'DFN
    223         ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from Reminder Patient List",.BUSY)
    224         ..D UPD1(DFN,NAM,"FACILITY",LIEN)
    225         I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
    226         I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
    227         Q
    228         ;
    229 UPD1(DFN,NAM,FACILITY,INP)      ;
    230         ;Remove test patients.
    231         I 'PXRMTPAT,$$TESTPAT^VADPT(DFN)=1 Q
    232         ;Remove patients that are deceased.
    233         I 'PXRMDPAT,$P($G(^DPT(DFN,.35)),U,1)>0 Q
    234         S ^TMP($J,"PXRM PATIENT LIST",DFN)=""
    235         S ^TMP($J,"PXRM PATIENT EVAL",DFN)=""
    236         D TMP(DFN,NAM,FACILITY,INP)
    237         Q
    238         ;
     1PXRMXSL1 ; SLC/PJH - Process Visits/Appts Reminder Due report;12/09/2005
     2 ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
     3 ;
     4 ; Called from PXRMXSE
     5 ;
     6TMP(DFN,NAM,FACILITY,INP) ;Update ^TMP("PXRMX"
     7 I PXRMFCMB="Y" S FACILITY="COMBINED FACILITIES"
     8 I PXRMLCMB="Y" S NAM="COMBINED LOCATIONS"
     9 S ^TMP("PXRMX",$J,FACILITY,NAM,DFN)=INP
     10 Q
     11 ;
     12 ;Mark location as found
     13MARK(IC) ;
     14 S ^XTMP(PXRMXTMP,"MARKED AS FOUND",IC)=""
     15 Q
     16 ;
     17 ;Check if facility is on list, PXMRFACN.
     18HFAC(HLOCIEN) ;
     19 N DIV,HFAC
     20 ;DBIA #2804
     21 S HFAC=$P(^SC(HLOCIEN,0),U,4)
     22 I HFAC="" S DIV=$P($G(^SC(HLOCIEN,0)),U,15) S:DIV'="" HFAC=$P($G(^DG(40.8,DIV,0)),U,7)
     23 I HFAC="" S HFAC=+$P($$SITE^VASITE,U,3)
     24 I HFAC="" Q ""
     25 I '$D(PXRMFACN(HFAC)) Q ""
     26 Q HFAC
     27 ;
     28INPADM ;
     29 ;Build list of inpatients admissions and current patients on a ward
     30 N BD,DFN,ED,FACILITY,HIEN,NAM
     31 S NAM="All Locations"
     32 S HIEN=0
     33 F  S HIEN=$O(^XTMP(PXRMXTMP,"HLOC",HIEN)) Q:HIEN'>0  D
     34 .S FACILITY=$P(^XTMP(PXRMXTMP,"HLOC",HIEN),U,1)
     35 .;Get WARDIEN,WARDNAM and return DFN's in PATS
     36 .N PATS
     37 .I PXRMFD="C" D WARD^PXRMXAP(HIEN,.PATS)
     38 .I PXRMFD="A" D
     39 ..; Get admissions from patient movements and return DFN's in PATS
     40 ..S BD=PXRMBDT-.0001
     41 ..S ED=PXRMEDT+.2359
     42 ..D ADM^PXRMXAP(HIEN,.PATS,BD,ED)
     43 .;Split report by location
     44 .I PXRMLCMB="N" S NAM=$P(^XTMP(PXRMXTMP,"HLOC",HIEN),U,2)
     45 .;Build ^TMP for selected patients
     46 .S DFN="",FOUND=0
     47 .F  S DFN=$O(PATS(DFN)) Q:DFN=""  D
     48 ..S ^TMP($J,"PXRM PATIENT EVAL",DFN)=""
     49 ..D TMP(DFN,NAM,FACILITY,HIEN) D MARK(HIEN)
     50 Q
     51 ;
     52BHLOC ;
     53 N CLINIEN,END,FACILITY,NAM,HLIEN,I,START
     54 I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
     55 ;All inpatient, outpatient all location credit stop and encounter
     56 S START=$H
     57 I $P(PXRMLCSC,U)["HA"!($P(PXRMLCSC,U)="CA") D
     58 .S HLIEN=0 F  S HLIEN=$O(^SC(HLIEN)) Q:HLIEN'>0  D
     59 ..S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
     60 ..S NAM=$P(^SC(HLIEN,0),U)
     61 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
     62 ..;All inpatient location
     63 ..I $P(PXRMLCSC,U)="HAI",$D(^SC(HLIEN,42)) S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
     64 ..;All outpatient locations
     65 ..I $P(PXRMLCSC,U)="HA",'$D(^SC(HLIEN,42)) S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
     66 ..;All encounters with a credit stop
     67 ..I $P(PXRMLCSC,U)="CA",$P($G(^SC(HLIEN,0)),U,7)>0 S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM Q
     68 ;Select hosiptal locations
     69 I $P(PXRMLCSC,U,1)="HS" D
     70 .S HLIEN=0 F  S HLIEN=$O(PXRMLOCN(HLIEN)) Q:HLIEN'>0  D
     71 ..S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
     72 ..S NAM=$P(^SC(HLIEN,0),U)
     73 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
     74 ..S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM
     75 ;Select Credit Stops
     76 I PXRMSEL="L",$P(PXRMLCSC,U)="CS" D
     77 .S CLINIEN=0 F  S CLINIEN=$O(PXRMCSN(CLINIEN)) Q:CLINIEN'>0  D
     78 ..S HLIEN=0 F  S HLIEN=$O(^SC("AST",CLINIEN,HLIEN)) Q:HLIEN'>0  D
     79 ...S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
     80 ...S NAM=$P(^DIC(40.7,CLINIEN,0),U)_" "_$P(PXRMCS($G(PXRMCSN(CLINIEN))),U,3)
     81 ...I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
     82 ...S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_NAM_U_$P(PXRMCS($G(PXRMCSN(CLINIEN))),U,3)
     83 ;Selected Clinic Groups
     84 I PXRMSEL="L",$E(PXRMLCSC)="G" D
     85 .S CGRPIEN=0 F  S CGRPIEN=$O(PXRMCGRN(CGRPIEN)) Q:CGRPIEN'>0  D
     86 ..S HLIEN=0 F  S HLIEN=$O(^SC("ASCRPW",CGRPIEN,HLIEN)) Q:HLIEN'>0  D
     87 ...S FACILITY=$$HFAC(HLIEN) I FACILITY'>0 Q
     88 ...I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Building Hospital Locations List",.BUSY)
     89 ...S ^XTMP(PXRMXTMP,"HLOC",HLIEN)=FACILITY_U_$P(^SC(HLIEN,0),U)_U_CGRPIEN
     90 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
     91 S END=$H
     92 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DETIME(START,END,"Building Hospital Locations")
     93 Q
     94 ;
     95DETIME(START,END,SECTION) ;
     96 N ETIME,TEXT
     97 S ETIME=$$HDIFF^XLFDT(END,START,2)
     98 I ETIME>90 D
     99 . S ETIME=$$HDIFF^XLFDT(END,START,3)
     100 . S TEXT="Elapsed time for "_SECTION_": "_ETIME
     101 E  S TEXT="Elapsed time for "_SECTION_": "_ETIME_" secs"
     102 D MES^XPDUTL(TEXT)
     103 Q
     104 ;
     105OERR ;
     106 N CNT,II,NAM,OTM
     107 I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
     108 S II=""
     109 ;Get patient list for each team
     110 F  S II=$O(PXRMOTM(II)) Q:II=""  D
     111 .S OTM=$P(PXRMOTM(II),U),NAM=$P(PXRMOTM(II),U,2)
     112 .;Build list of patients for OE/RR team ; DBIA #2692
     113 .K ^TMP($J,"OTM")
     114 .D TEAMPTS^ORQPTQ1("^TMP($J,""OTM"",",OTM,1)
     115 .I $G(^TMP($J,"OTM",1))["No patients found" Q
     116 .I PXRMTCMB="Y" N OTM,NAM S OTM="COMBINED",NAM="COMBINED TEAMS"
     117 .S CNT=0 F  S CNT=$O(^TMP($J,"OTM",CNT)) Q:CNT'>0  D
     118 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from OE/RR List",.BUSY)
     119 ..S DFN=$P(^TMP($J,"OTM",CNT),U)
     120 ..D UPD1(DFN,NAM,"FACILITY",II)
     121 .D MARK(OTM)
     122 K ^TMP($J,"OTM")
     123 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
     124 I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
     125 Q
     126 ;
     127 ;PCMM provider selected
     128PCMMP ;
     129 I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
     130 N CNT,SCDT,LIST,SCERR,SCLIST,II,PCM,NAM,PNAM,PXRM,OK
     131 S SCDT("BEGIN")=PXRMSDT,SCDT("END")=PXRMSDT
     132 ;Include patient if in team on any day in range
     133 S SCDT("INCL")=0
     134 S II=""
     135 ;Get patient list for each PROVIDER
     136 F  S II=$O(PXRMPRV(II)) Q:II=""  D
     137 .S PCM=$P(PXRMPRV(II),U),NAM=$P(PXRMPRV(II),U,2)
     138 .;Get patients for practs. roles - excluding assoc clinics
     139 .K ^TMP($J,"PCM")
     140 .N SCTEAM D PTPR^PXRMXAP(PCM,PXRMREP)
     141 .I $O(^TMP($J,"PCM",0))="" Q
     142 .;Save in ^TMP in alpha order within team number (internal)
     143 .S CNT=0 F  S CNT=$O(^TMP($J,"PCM",CNT)) Q:CNT'>0  D
     144 ..S DFN=$P(^TMP($J,"PCM",CNT),U)
     145 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from Primary Provider List",.BUSY)
     146 ..I PXRMPRIM="P",($$PCASSIGN^PXRMXAP(DFN)'=1) Q
     147 ..;For detailed provider report get assoc clinic
     148 ..I PXRMREP="D" S DCLN=$P(^TMP($J,"PCM",CNT),U,7) I $G(DCLN)'="" S ^XTMP(PXRMXTMP,"HLOC",DCLN)=""
     149 ..I $G(DCLN)'="" S PXRMDCLN(DCLN)=""
     150 ..D UPD1(DFN,NAM,"FACILITY",+$G(DCLN))
     151 .D MARK(PCM)
     152 K ^TMP($J,"PCM")
     153 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
     154 I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
     155 Q
     156 ;
     157 ;PCMM team selected
     158PCMMT ;
     159 I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
     160 N CNT,SCDT,LIST,SCERR,SCLIST,II,PCM,NAM,PNAM,OK
     161 S SCDT("BEGIN")=PXRMSDT,SCDT("END")=PXRMSDT
     162 ;Include patient if in team on any day in range
     163 S SCDT("INCL")=0
     164 S II=""
     165 ;Get patient list for each team
     166 F  S II=$O(PXRMPCM(II)) Q:II=""  D
     167 .S PCM=$P(PXRMPCM(II),U),NAM=$P(PXRMPCM(II),U,2)
     168 .K ^TMP($J,"PCM")
     169 .S OK=$$PTTM^PXRMXAP(PCM,.SCERR) Q:'OK
     170 .I $O(^TMP($J,"PCM",0))="" Q
     171 .S FACILITY=$$FAC^PXRMXAP(PCM)
     172 .S CNT=0 F  S CNT=$O(^TMP($J,"PCM",CNT)) Q:CNT'>0  D
     173 ..S DFN=$P(^TMP($J,"PCM",CNT),U)
     174 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from PCMM Team List",.BUSY)
     175 ..D UPD1(DFN,NAM,FACILITY,II)
     176 .D MARK(PCM)
     177 K ^TMP($J,"PCM")
     178 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
     179 I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
     180 Q
     181 ;
     182 ;Individual Patients selected
     183IND ;
     184 N CNT,DFN,DUMMY,LIST,NAM
     185 S (DUMMY,NAM)="PATIENT"
     186 S CNT=0 F  S CNT=$O(PXRMPAT(CNT)) Q:CNT'>0  D
     187 .S DFN=$P(PXRMPAT(CNT),U)
     188 .D UPD1(DFN,"INDIVIDUAL PATIENTS","FACILITY",DFN)
     189 I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
     190 Q
     191 ;
     192 ;Patient lists selected
     193LIST ;
     194 I '(PXRMQUE!$D(IO("S"))) D INIT^PXRMXBSY(.BUSY)
     195 N DFN,DSUB,DUMMY,LCNT,LIEN,LIST,NAM
     196 S (DUMMY,NAM)="PATIENT",LCNT=0
     197 F  S LCNT=$O(PXRMLIST(LCNT)) Q:'LCNT  D
     198 .S LIEN=$P(PXRMLIST(LCNT),U) Q:'LIEN
     199 .S NAM=$P(^PXRMXP(810.5,LIEN,0),U)
     200 .S DSUB=0
     201 .F  S DSUB=$O(^PXRMXP(810.5,LIEN,30,DSUB)) Q:'DSUB  D
     202 ..S DFN=$P($G(^PXRMXP(810.5,LIEN,30,DSUB,0)),U) Q:'DFN
     203 ..I ('(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")))&(DBDOWN=0) D SPIN^PXRMXBSY("Collecting patients from Reminder Patient List",.BUSY)
     204 ..D UPD1(DFN,NAM,"FACILITY",LIEN)
     205 I '(PXRMQUE!$D(IO("S"))!(PXRMTABS="Y")) D DONE^PXRMXBSY("Done")
     206 I PXRMREP="D",$D(^TMP($J,"PXRM PATIENT EVAL"))>0 D SDAM301^PXRMXSL2(DT,"",PXRMSEL,PXRMFD,PXRMREP)
     207 Q
     208 ;
     209UPD1(DFN,NAM,FACILITY,INP) ;
     210 ;Remove test patients.
     211 I 'PXRMTPAT,$$TESTPAT^VADPT(DFN)=1 Q
     212 ;Remove patients that are deceased.
     213 I 'PXRMDPAT,$P($G(^DPT(DFN,.35)),U,1)>0 Q
     214 S ^TMP($J,"PXRM PATIENT LIST",DFN)=""
     215 S ^TMP($J,"PXRM PATIENT EVAL",DFN)=""
     216 D TMP(DFN,NAM,FACILITY,INP)
     217 Q
     218 ;
Note: See TracChangeset for help on using the changeset viewer.