- GMTSPXU2 ;SLC/KKA,SBW - PCE Drivers for visits ; 08/27/2002
- ;;2.7;Health Summary;**2,56**;Oct 20, 1995
- ;
- ; External References
- ; DBIA 10141 $$VERSION^XPDUTL
- ; DBIA 10026 ^DIR
- ; DBIA 17 ^DGPM("ATID1")
- ; DBIA 17 ^DGPM( file #405
- ; DBIA 10103 $$FMTE^XLFDT
- ; DBIA 1273 VISIT^PXRHS14
- ;
- ;
- ; Allows user to choose Outpatient Visits based
- ; on V files or Inpatient visits based on patient
- ; movement file.
- N DIR,SEL,DTOUT,DIRUT
- S (GMTSPX2,GMTSPX1)=""
- ;
- ; If PCE not installed just allow for inpatient
- ; range selection
- I $$VERSION^XPDUTL("PX")'>0 D INPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1) Q
- S DIR(0)="SO^1:Outpatient Visit Date;2:Admission Date"
- S DIR("?")="Select 1 or 2 or ^ to exit"
- D ^DIR
- Q:$D(DIRUT)!(+$G(Y)'>0)
- S SEL=+Y
- D:SEL=1 OUTPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
- D:SEL=2 INPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
- Q
- ;
- OUTPAT(DFN,DATEFROM,DATETO) ; Select by Outpatient Visit Date
- N INPDATE,DIRUT,DTOUT
- D OUTLOOK(DFN,.INPDATE)
- Q:INPDATE']""
- I INPDATE]"" S (DATEFROM,DATETO)=$P(INPDATE,".")
- Q
- INPAT(DFN,DATEFROM,DATETO) ; Select by Inpatient Visit Date
- N DIRUT,DTOUT
- D INLOOK(DFN,.DATEFROM,.DATETO)
- I DATEFROM']""!(DATETO']"") S (DATEFROM,DATETO)=""
- Q
- INLOOK(DFN,GMTSADM,GMTSDC) ; Displays Patient's Admission Dates
- N DIR,Y,X,ADT,RECNR,CTR,HIT,DCDT,ADMDT,SELNR
- S (GMTSADM,GMTSDC)=""
- I '$D(^DGPM("ATID1",DFN)) W !!,"No admissions on file for this patient" Q
- K ^TMP("GMTSPX",$J)
- S (CTR,HIT,ADT,SELNR)=0
- F S ADT=$O(^DGPM("ATID1",DFN,ADT)) Q:+ADT'>0 D Q:$D(DIRUT)!+$G(Y)
- . S RECNR=0
- . F S RECNR=$O(^DGPM("ATID1",DFN,ADT,RECNR)) Q:RECNR'>0 D Q:$D(DIRUT)!+$G(Y)
- . . S ADMDT=$P(^DGPM(RECNR,0),U)
- . . S DCDT=$P($G(^DGPM(+$P(^DGPM(RECNR,0),U,17),0)),U)
- . . D:'HIT INHDR S HIT=1,SELNR=SELNR+1,CTR=CTR+1
- . . W !,?7,SELNR,?15,$$FMTE^XLFDT(ADMDT,"2P")
- . . W:DCDT]"" ?45,$$FMTE^XLFDT(DCDT,"2P")
- . . S ^TMP("GMTSPX",$J,SELNR)=ADMDT_U_DCDT
- . . I CTR>9 D Q:$D(DTOUT)!$D(DUOUT)!(+$G(Y)>0)
- . . . S DIR("A")="Enter a number between 1 and "_SELNR_", press return to continue or '^' to exit: "
- . . . S DIR(0)="NOA^1:"_SELNR D ^DIR S CTR=0 W !
- Q:$D(DUOUT)!$D(DTOUT)!$D(DIROUT)
- I SELNR>0,(CTR>0),(CTR'>9)&(+$G(Y)'>0) D
- . S DIR("A")="Enter a number between 1 and "_SELNR_": "
- . S DIR(0)="NOA^1:"_SELNR D ^DIR W !
- Q:$D(DUOUT)!$D(DTOUT)!$D(DIROUT)!(+$G(Y)'>0)
- S GMTSADM=$P($P($G(^TMP("GMTSPX",$J,+Y)),U),".")
- S GMTSDC=$P($P($G(^TMP("GMTSPX",$J,+Y)),U,2),".")
- I GMTSADM]"",GMTSDC="" S GMTSDC=DT
- K ^TMP("GMTSPX",$J)
- Q
- ;
- INHDR ; Based on the VISIT File
- W !!,?15,"ADMISSION DATE/TIME",?45,"DISCHARGE DATE/TIME",!
- Q
- ;
- OUTLOOK(DFN,OUT) ; Display Outpatient Visits
- ;
- ; This option displays outpatient visits from the
- ; Visit (#9000010) file to the screen. Outpatient
- ; visits = visits with a service category of:
- ;
- ; Ambulatory
- ; Observation
- ; Day Surgery
- ; Nursing Home
- ;
- ; A number, the visit date, and the hospital location
- ; or credit stop will be display on the screen. The
- ; order of the display will be from most recent visits
- ; to oldest visits. The user can pick the visit they
- ; want and the visit date is passed back to the calling
- ; routine by parameter passing by reference.
- ;
- N DIR,Y,X,VISITDT,CTR,SELNR,RECNR,CLINIC,HIT,VISIT,HLOC
- S OUT=""
- K ^TMP("HS",$J),^TMP("PXV",$J)
- S (CTR,HIT,SELNR,VISITDT,RECNR)=0
- S VISITDT="",RECNR=""
- F D VISIT^PXRHS14(DFN,.VISITDT,.RECNR,1,"ASOR") Q:VISITDT'>0 D Q:$D(DUOUT)!$D(DTOUT)!(+$G(Y)>0)
- . S NODE=$G(^TMP("PXV",$J,VISITDT,RECNR))
- . K ^TMP("PXV",$J)
- . Q:NODE']""
- . S VISIT=$P(NODE,U)
- . S CLINIC=$P(NODE,U,4)
- . S HLOC=$P(NODE,U,6)
- . D:'HIT OUTHDR S HIT=1 S SELNR=SELNR+1,CTR=CTR+1
- . W !,?7,SELNR,?15,$$FMTE^XLFDT(VISIT,"2P"),?45,$S(HLOC]"":HLOC,1:CLINIC)
- . S ^TMP("HS",$J,SELNR)=RECNR_U_VISIT_U_CLINIC_U_HLOC
- . I CTR>9 D Q:$D(DTOUT)!$D(DUOUT)!(+$G(Y)>0)
- . . S DIR("A")="Enter a number between 1 and "_SELNR_", press return to continue or '^' to exit: "
- . . S DIR(0)="NOA^1:"_SELNR D ^DIR S CTR=0 W !
- I SELNR>0&(CTR>0)&(CTR'>9) D
- . S DIR("A")="Enter a number between 1 and "_SELNR_": "
- . S DIR(0)="NOA^1:"_SELNR D ^DIR W !
- I SELNR'>0 W !!,"No Outpatient visits for this patient" Q
- S OUT=$P($G(^TMP("HS",$J,+$G(Y))),U,2)
- K ^TMP("HS",$J),^TMP("PXV",$J)
- Q
- OUTHDR ; Header for screen Display
- W !!,?15,"VISIT DATE/TIME",?45,"HOSPITAL LOCATION/CLINIC",!
- Q
- GMTSPXU2 ;SLC/KKA,SBW - PCE Drivers for visits ; 08/27/2002
- +1 ;;2.7;Health Summary;**2,56**;Oct 20, 1995
- +2 ;
- +3 ; External References
- +4 ; DBIA 10141 $$VERSION^XPDUTL
- +5 ; DBIA 10026 ^DIR
- +6 ; DBIA 17 ^DGPM("ATID1")
- +7 ; DBIA 17 ^DGPM( file #405
- +8 ; DBIA 10103 $$FMTE^XLFDT
- +9 ; DBIA 1273 VISIT^PXRHS14
- +10 ;
- +1 ;
- +2 ; Allows user to choose Outpatient Visits based
- +3 ; on V files or Inpatient visits based on patient
- +4 ; movement file.
- +5 NEW DIR,SEL,DTOUT,DIRUT
- +6 SET (GMTSPX2,GMTSPX1)=""
- +7 ;
- +8 ; If PCE not installed just allow for inpatient
- +9 ; range selection
- +10 IF $$VERSION^XPDUTL("PX")'>0
- DO INPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
- QUIT
- +11 SET DIR(0)="SO^1:Outpatient Visit Date;2:Admission Date"
- +12 SET DIR("?")="Select 1 or 2 or ^ to exit"
- +13 DO ^DIR
- +14 IF $DATA(DIRUT)!(+$GET(Y)'>0)
- QUIT
- +15 SET SEL=+Y
- +16 IF SEL=1
- DO OUTPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
- +17 IF SEL=2
- DO INPAT^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
- +18 QUIT
- +19 ;
- OUTPAT(DFN,DATEFROM,DATETO) ; Select by Outpatient Visit Date
- +1 NEW INPDATE,DIRUT,DTOUT
- +2 DO OUTLOOK(DFN,.INPDATE)
- +3 IF INPDATE']""
- QUIT
- +4 IF INPDATE]""
- SET (DATEFROM,DATETO)=$PIECE(INPDATE,".")
- +5 QUIT
- INPAT(DFN,DATEFROM,DATETO) ; Select by Inpatient Visit Date
- +1 NEW DIRUT,DTOUT
- +2 DO INLOOK(DFN,.DATEFROM,.DATETO)
- +3 IF DATEFROM']""!(DATETO']"")
- SET (DATEFROM,DATETO)=""
- +4 QUIT
- INLOOK(DFN,GMTSADM,GMTSDC) ; Displays Patient's Admission Dates
- +1 NEW DIR,Y,X,ADT,RECNR,CTR,HIT,DCDT,ADMDT,SELNR
- +2 SET (GMTSADM,GMTSDC)=""
- +3 IF '$DATA(^DGPM("ATID1",DFN))
- WRITE !!,"No admissions on file for this patient"
- QUIT
- +4 KILL ^TMP("GMTSPX",$JOB)
- +5 SET (CTR,HIT,ADT,SELNR)=0
- +6 FOR
- SET ADT=$ORDER(^DGPM("ATID1",DFN,ADT))
- IF +ADT'>0
- QUIT
- Begin DoDot:1
- +7 SET RECNR=0
- +8 FOR
- SET RECNR=$ORDER(^DGPM("ATID1",DFN,ADT,RECNR))
- IF RECNR'>0
- QUIT
- Begin DoDot:2
- +9 SET ADMDT=$PIECE(^DGPM(RECNR,0),U)
- +10 SET DCDT=$PIECE($GET(^DGPM(+$PIECE(^DGPM(RECNR,0),U,17),0)),U)
- +11 IF 'HIT
- DO INHDR
- SET HIT=1
- SET SELNR=SELNR+1
- SET CTR=CTR+1
- +12 WRITE !,?7,SELNR,?15,$$FMTE^XLFDT(ADMDT,"2P")
- +13 IF DCDT]""
- WRITE ?45,$$FMTE^XLFDT(DCDT,"2P")
- +14 SET ^TMP("GMTSPX",$JOB,SELNR)=ADMDT_U_DCDT
- +15 IF CTR>9
- Begin DoDot:3
- +16 SET DIR("A")="Enter a number between 1 and "_SELNR_", press return to continue or '^' to exit: "
- +17 SET DIR(0)="NOA^1:"_SELNR
- DO ^DIR
- SET CTR=0
- WRITE !
- End DoDot:3
- IF $DATA(DTOUT)!$DATA(DUOUT)!(+$GET(Y)>0)
- QUIT
- End DoDot:2
- IF $DATA(DIRUT)!+$GET(Y)
- QUIT
- End DoDot:1
- IF $DATA(DIRUT)!+$GET(Y)
- QUIT
- +18 IF $DATA(DUOUT)!$DATA(DTOUT)!$DATA(DIROUT)
- QUIT
- +19 IF SELNR>0
- IF (CTR>0)
- IF (CTR'>9)&(+$GET(Y)'>0)
- Begin DoDot:1
- +20 SET DIR("A")="Enter a number between 1 and "_SELNR_": "
- +21 SET DIR(0)="NOA^1:"_SELNR
- DO ^DIR
- WRITE !
- End DoDot:1
- +22 IF $DATA(DUOUT)!$DATA(DTOUT)!$DATA(DIROUT)!(+$GET(Y)'>0)
- QUIT
- +23 SET GMTSADM=$PIECE($PIECE($GET(^TMP("GMTSPX",$JOB,+Y)),U),".")
- +24 SET GMTSDC=$PIECE($PIECE($GET(^TMP("GMTSPX",$JOB,+Y)),U,2),".")
- +25 IF GMTSADM]""
- IF GMTSDC=""
- SET GMTSDC=DT
- +26 KILL ^TMP("GMTSPX",$JOB)
- +27 QUIT
- +28 ;
- INHDR ; Based on the VISIT File
- +1 WRITE !!,?15,"ADMISSION DATE/TIME",?45,"DISCHARGE DATE/TIME",!
- +2 QUIT
- +3 ;
- OUTLOOK(DFN,OUT) ; Display Outpatient Visits
- +1 ;
- +2 ; This option displays outpatient visits from the
- +3 ; Visit (#9000010) file to the screen. Outpatient
- +4 ; visits = visits with a service category of:
- +5 ;
- +6 ; Ambulatory
- +7 ; Observation
- +8 ; Day Surgery
- +9 ; Nursing Home
- +10 ;
- +11 ; A number, the visit date, and the hospital location
- +12 ; or credit stop will be display on the screen. The
- +13 ; order of the display will be from most recent visits
- +14 ; to oldest visits. The user can pick the visit they
- +15 ; want and the visit date is passed back to the calling
- +16 ; routine by parameter passing by reference.
- +17 ;
- +18 NEW DIR,Y,X,VISITDT,CTR,SELNR,RECNR,CLINIC,HIT,VISIT,HLOC
- +19 SET OUT=""
- +20 KILL ^TMP("HS",$JOB),^TMP("PXV",$JOB)
- +21 SET (CTR,HIT,SELNR,VISITDT,RECNR)=0
- +22 SET VISITDT=""
- SET RECNR=""
- +23 FOR
- DO VISIT^PXRHS14(DFN,.VISITDT,.RECNR,1,"ASOR")
- IF VISITDT'>0
- QUIT
- Begin DoDot:1
- +24 SET NODE=$GET(^TMP("PXV",$JOB,VISITDT,RECNR))
- +25 KILL ^TMP("PXV",$JOB)
- +26 IF NODE']""
- QUIT
- +27 SET VISIT=$PIECE(NODE,U)
- +28 SET CLINIC=$PIECE(NODE,U,4)
- +29 SET HLOC=$PIECE(NODE,U,6)
- +30 IF 'HIT
- DO OUTHDR
- SET HIT=1
- SET SELNR=SELNR+1
- SET CTR=CTR+1
- +31 WRITE !,?7,SELNR,?15,$$FMTE^XLFDT(VISIT,"2P"),?45,$SELECT(HLOC]"":HLOC,1:CLINIC)
- +32 SET ^TMP("HS",$JOB,SELNR)=RECNR_U_VISIT_U_CLINIC_U_HLOC
- +33 IF CTR>9
- Begin DoDot:2
- +34 SET DIR("A")="Enter a number between 1 and "_SELNR_", press return to continue or '^' to exit: "
- +35 SET DIR(0)="NOA^1:"_SELNR
- DO ^DIR
- SET CTR=0
- WRITE !
- End DoDot:2
- IF $DATA(DTOUT)!$DATA(DUOUT)!(+$GET(Y)>0)
- QUIT
- End DoDot:1
- IF $DATA(DUOUT)!$DATA(DTOUT)!(+$GET(Y)>0)
- QUIT
- +36 IF SELNR>0&(CTR>0)&(CTR'>9)
- Begin DoDot:1
- +37 SET DIR("A")="Enter a number between 1 and "_SELNR_": "
- +38 SET DIR(0)="NOA^1:"_SELNR
- DO ^DIR
- WRITE !
- End DoDot:1
- +39 IF SELNR'>0
- WRITE !!,"No Outpatient visits for this patient"
- QUIT
- +40 SET OUT=$PIECE($GET(^TMP("HS",$JOB,+$GET(Y))),U,2)
- +41 KILL ^TMP("HS",$JOB),^TMP("PXV",$JOB)
- +42 QUIT
- OUTHDR ; Header for screen Display
- +1 WRITE !!,?15,"VISIT DATE/TIME",?45,"HOSPITAL LOCATION/CLINIC",!
- +2 QUIT