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/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/ORQPT.m

    r613 r623  
    1 ORQPT   ; SLC/MKB - Patient Selection ; 4/18/07 7:20am
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**52,82,85,215,243**;Dec 17, 1997;Build 242
    3         ;
    4         ; Ref. to ^UTILITY via IA 10061
    5         ; SLC/PKS - 3/2000: Modified to deal with "Combinations."
    6         ;
    7 EN      ; -- main entry point for OR PATIENT SELECTION
    8         I $G(ORVP),'($D(ORPNM)&$D(ORSSN)) K ORVP ; reset
    9         D EN^VALM("OR PATIENT SELECTION")
    10         Q
    11         ;
    12 HDR     ; -- header code
    13         N X I '$G(ORVP) S X="** No patient selected **"
    14         E  S X=$G(ORPNM)_"   "_$G(ORSSN)
    15         S VALMHDR(1)="Current patient: "_X
    16         Q
    17         ;
    18 INIT    ; -- init variables and list array
    19         ; Modifications for multiple "Combination" lists by PKS.
    20         ;
    21         ; PARAM herein might end up as: ORLP DEFAULT CLINIC WEDNESDAY
    22         ;    (Param Name and current DOW)
    23         ; ORY might end up passed as:  5^5^C;1;T-360;T+60;A
    24         ;    (#lines^#pts^source;serviceSection;startDate;stopDate;sort)
    25         ;
    26         N ORY,ORX,PARAM,ORYZB,ORYZE
    27         ;
    28         ;added by CLA 12/12/96 - gets SERVICE/SECTION of user:
    29         N ORSRV S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
    30         ;
    31         S ORY=$$GET^XPAR("USR^SRV.`"_$G(ORSRV),"ORLP DEFAULT LIST SOURCE",1,"I") ; Gets default list source for this user.
    32         I $L(ORY) D  S ORY=ORY_";"_ORX
    33         . ; PKS: Set "PARAM" var to parameter name in param def file:
    34         . S PARAM="ORLP DEFAULT "_$S(ORY="T":"TEAM",ORY="S":"SPECIALTY",ORY="P":"PROVIDER",ORY="W":"WARD",ORY="C":"CLINIC",ORY="M":"COMBINATION",1:"")
    35         . S:ORY="C" PARAM=PARAM_" "_$$UP^XLFSTR($$DOW^XLFDT(DT)) ; For clinics, add current DOW.
    36         . S ORX=$$GET^XPAR("USR^SRV.`"_$G(ORSRV),PARAM,1,"I") ; Source param.
    37         . ; Next lines modified by PKS for "Combinations" and dates:
    38         . I (ORY="C")!(ORY="M") D
    39         . . S ORYZB=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"I")) ; Gets clinic start date.
    40         . . I ORYZB="T+0" S ORYZB=$$FMTE^XLFDT(DT,ORYZB)
    41         . . S ORX=ORX_";"_ORYZB
    42         . . S ORYZE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"I")) ; Add ";" & stop date.
    43         . . I ORYZE="T+0" S ORYZE=$$FMTE^XLFDT(DT,ORYZE)
    44         . . S ORX=ORX_";"_ORYZE
    45         S $P(ORY,";",5)=$$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT LIST ORDER",1,"I") ; Add default sort order.
    46         ;
    47         ; Call tag that builds the actual Patient Selection List:
    48         D BUILD(ORY)
    49         Q
    50         ;
    51 DEFAULT()       ; -- Returns default action
    52         I '$P($G(^TMP("OR",$J,"PATIENTS",0)),U,2) Q "Change View"
    53         I XQORM("B")="Quit" Q "Close"
    54         Q "Next Screen"
    55         ;
    56 MSG()   ; -- Lmgr msg bar
    57         Q "Enter the number of the patient chart to be opened"
    58         ;
    59 HELP    ; -- help code
    60         N X D FULL^VALM1 S VALMBCK="R"
    61         W !!,"Enter the display number of the patient whose chart you wish to open"
    62         W !,"or enter a patient name, SSN, or initial/last 4 combination.  To"
    63         W !,"change the list of patients displayed on this screen, enter CV.  To"
    64         W !,"have the new list automatically displayed when selecting a new patient,"
    65         W !,"enter SV.  Enter FD to search by patient name or identifier."
    66         W !!,"Press <return> to continue ..." R X:DTIME
    67         Q
    68         ;
    69 EXIT    ; -- exit code
    70         K ^TMP("OR",$J,"PATIENTS"),XQORM("ALT")
    71         Q
    72         ;
    73 BUILD(LIST)     ; -- build list in ^TMP("OR",$J,"PATIENTS")
    74         N ORI,ORX,ORY,LCNT,NUM,DFN,NAME,TYPE,PTR,BEG,END,SORT,DOB,RBED,%DT,X,Y,TITLE,PTID,SENS
    75         S TYPE=$E(LIST),PTR=+$P(LIST,";",2),SORT=$P(LIST,";",5)
    76         ; Next 5 lines added by PKS:
    77         I ((SORT="S")&(TYPE'="M")) S SORT="A"    ; Reset invalid sorts.
    78         I TYPE="M" D                             ; Deal with combinations.
    79         .I ((SORT="P")!(SORT="A")!(SORT="S")) Q  ; P,A,S are acceptable.
    80         .S SORT="A"                              ; Default.
    81         S $P(LIST,";",5)=SORT                    ; Reset in case of change.
    82         S BEG=$P(LIST,";",3) I $L(BEG) S X=BEG,%DT="X" D ^%DT S BEG=Y
    83         S END=$P(LIST,";",4) I $L(END) S X=END,%DT="X" D ^%DT S END=Y
    84         I TYPE="T" D TEAMPTS^ORQPTQ1(.ORY,PTR) S TITLE="Team "_$P($G(^OR(100.21,+PTR,0)),U)
    85         I TYPE="P" D PROVPTS^ORQPTQ2(.ORY,PTR) S TITLE="Provider "_$P($G(^VA(200,+PTR,0)),U)
    86         I TYPE="S" D SPECPTS^ORQPTQ2(.ORY,PTR) S TITLE="Specialty "_$P($G(^DIC(45.7,+PTR,0)),U)
    87         I TYPE="W" D WARDPTS^ORQPTQ2(.ORY,PTR) S TITLE="Ward "_$P($G(^DIC(42,+PTR,0)),U)
    88         I TYPE="C" D CLINPTS^ORQPTQ2(.ORY,PTR,BEG,END) S TITLE="Clinic "_$P($G(^SC(+PTR,0)),U)
    89         ; Next line added by PKS for "Combinations:"
    90         I TYPE="M" N MSG D COMBPTS^ORQPTQ6(1,PTR,BEG,END) S TITLE="Combination List" ; Sets MSG,LCNT,NUM, and writes ^TMP("OR",$J,"PATIENTS").
    91         ; Next section added by PKS for "Combinations:"
    92         I TYPE="M" D  G BQ    ; Check MSG var, then go to BQ tag.
    93         .I MSG'="" D          ; Did call to COMBPTS assign an error message?
    94         ..S LCNT=1,NUM=0      ; Set defaults.
    95         ..S ^TMP("OR",$J,"PATIENTS",1,0)="     "_MSG ; Write error msg.
    96         D CLEAN^VALM10 S (LCNT,NUM)=0 ; All but "M" types reset, go on to B1.
    97         ;
    98 B1      S ORI=0 F  S ORI=$O(ORY(ORI)) Q:ORI'>0  I ORY(ORI) D  ; sort
    99         . S DFN=+ORY(ORI)
    100         . ;sort logic added by CLA 7/23/97:
    101         . S ORX=""
    102         . I SORT="P",(TYPE="C") S ORX=$P($G(ORY(ORI)),U,4) D
    103         .. S $P(ORX,".",2)=$E($P(ORX,".",2)_"000",1,4)
    104         ..S ORX=ORX_U_$P(ORY(ORI),U,2)
    105         . I SORT="R",(TYPE'="C") S ORX=$P($G(^DPT(+ORY(ORI),.101)),U)_U_$P(ORY(ORI),U,2)
    106         . I SORT="T" S ORX="" ; Need to add terminal digit sorting.
    107         . ; If no sort specified, default to alphabetic (plus app't if clinic type):
    108         . I ORX="" S ORX=$P(ORY(ORI),U,2)_U_$P($G(ORY(ORI)),U,4)
    109         . S ^TMP("OR",$J,"PATIENTS","B",ORX_DFN)=ORY(ORI) ; DFN ^ Name
    110         I '$D(^TMP("OR",$J,"PATIENTS")) D  G BQ
    111         . N MSG
    112         . S MSG="No patients found"
    113         . S LCNT=1,NUM=0
    114         . I $D(ORY(1)) S MSG=$P(ORY(1),"^",2) ; error message from search
    115         . S ^TMP("OR",$J,"PATIENTS",1,0)="     "_MSG
    116 B2      S ORX="" F  S ORX=$O(^TMP("OR",$J,"PATIENTS","B",ORX)) Q:ORX=""  S ORY=^(ORX) D
    117         . S DFN=+ORY,NAME=$P(ORY,U,2)
    118         . S DOB=$$FMTE^XLFDT($P($G(^DPT(DFN,0)),U,3))
    119         . S:(TYPE'="C") RBED=$P($G(^DPT(DFN,.101)),U)
    120         . I (TYPE="C") S RBED=$S(SORT="P":$$FMTE^XLFDT($P(ORX,U)),1:$$FMTE^XLFDT($P(^TMP("OR",$J,"PATIENTS","B",ORX),U,4)))
    121         . ;Q:RBED=""  removed by CLA 7/23/97 to prevent blank lines
    122         . S LCNT=LCNT+1,NUM=NUM+1
    123         . S ^TMP("OR",$J,"PATIENTS","IDX",NUM)=ORY ; DFN ^ NAME
    124         . ; Next lines modified/added by PKS on 1/24/2001:
    125         . ; Check for "sensitive" patients:
    126         . S PTID=""
    127         . S PTID=$$ID(DFN)
    128         . S SENS=$$SSN^DPTLK1(DFN)
    129         . I SENS["*" S PTID=""
    130         . S DOB=$$DOB^DPTLK1(DFN)
    131         . S ^TMP("OR",$J,"PATIENTS",LCNT,0)=$$LJ^XLFSTR(NUM,5)_$$LJ^XLFSTR(NAME,31)_$$LJ^XLFSTR(PTID,10)_$$LJ^XLFSTR(DOB,15)_$G(RBED)
    132         . D CNTRL^VALM10(LCNT,1,5,IOINHI,IOINORM)
    133 BQ      S ^TMP("OR",$J,"PATIENTS",0)=LCNT_U_NUM_U_$G(LIST) ; #lines^#pts^context
    134         S ^TMP("OR",$J,"PATIENTS","#")=$O(^ORD(101,"B","ORQPT SELECT PATIENT",0))_"^1:"_NUM
    135         S RBED=$S(TYPE="C":"Appointment Date",TYPE="M":"Source   Other",1:"Room-Bed")
    136         D CHGCAP^VALM("ROOM-BED",RBED) K VALMHDR
    137         S VALMCNT=LCNT,VALMBG=1,VALMBCK="R" S:$L($G(TITLE)) VALM("TITLE")=TITLE
    138         Q
    139         ;
    140 ID(DFN) ; -- Returns short ID for patient ID
    141         N ID S ID=$P($G(^DPT(DFN,.36)),U,4) ; short ID
    142         I '$L(ID) S ID=$E($P($G(^DPT(DFN,0)),U,9),6,9) ; last 4 of SSN
    143         Q "("_$E(NAME)_ID_")"
    144         ;
    145 APPT(DFN,CLINIC,FROM,TO)        ; -- Return [next?] clinic appointment
    146         ; returns date/time next appt or "", returns "^error message" on error
    147         N ERR,ERRMSG,VASD,VAERR K ^UTILITY("VASD",$J)  ;IA 10061
    148         S VASD("F")=FROM,VASD("T")=TO,VASD("C",CLINIC)=""
    149         D SDA^ORQRY01(.ERR,.ERRMSG)
    150         I ERR K ^UTILITY("VASD",$J) Q ERRMSG
    151         S NEXT=+$O(^UTILITY("VASD",$J,0)),NEXT=$P($G(^(NEXT,"I")),U)
    152         K ^UTILITY("VASD",$J)
    153         Q NEXT
    154         ;
    155 ALT     ; -- XQORM("ALT") code to search File 2 for patient X
    156         N DIC,DFN,Y,ORX S ORX=X D FULL^VALM1
    157         S DIC=2,DIC(0)="EQM",X=$S($D(XQORMRCL):" ",1:ORX)
    158         D ^DIC I Y'>0 S VALMBCK="R" Q  ;S XQORMERR=1 Q
    159         S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
    160         S DFN=+Y G:DFN'=+$G(ORVP) SLCT1 ; set patient variables
    161         Q
    162         ;
    163 FIND    ; -- find patient in ^DPT
    164         N X,Y,DIC,ORX,DFN
    165         S DIC=2,DIC(0)="AEQM" D FULL^VALM1
    166         D ^DIC I Y'>0 S VALMBCK="R" Q
    167         S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
    168         S DFN=+Y G:DFN'=+$G(ORVP) SLCT1 ; set patient variables
    169         Q
    170         ;
    171 SELECT  ; -- select patient from list
    172         N NMBR,X,Y,Z,DIC,DFN,ORX S NMBR=+$P(XQORNOD(0),"=",2)
    173         S Y=$G(^TMP("OR",$J,"PATIENTS","IDX",NMBR)),DFN=+Y
    174         I 'DFN W $C(7),!!,NMBR_" is not a valid selection.",! S VALMBCK="" H 1 Q
    175         ;W "   "_$P(Y,U,2) S ^DISV(DUZ,"^DPT(")=DFN
    176         D FULL^VALM1 S DIC=2,DIC(0)="EQM",X="`"_DFN D ^DIC I Y<0 S VALMBCK="R" Q
    177         S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
    178 SLCT1   ; -- may enter here with DFN from FIND
    179         N VADM,VAEL,VAIN,VA,VAERR,LOC,ORCNV
    180         D OERR^VADPT,ELIG^VADPT
    181         S LOC=+$G(^DIC(42,+VAIN(4),44))_";SC(" I 'LOC,'$D(XQAID) D
    182         . I $G(NMBR) N X S X=$$CONTEXT^ORQPT1 I $E(X)="C" S LOC=$P(X,";",2)_";SC(" Q:LOC  ; use clinic if selected from list, else ask
    183         . S LOC="" ;,X=$$LOCATION^ORCMENU1(1) S:X LOC=X
    184         S ORL=LOC,ORL(0)=$P($G(^SC(+ORL,0)),U),ORL(1)=VAIN(5)
    185         S ORVP=DFN_";DPT(",ORPNM=VADM(1),ORSSN=$P(VADM(2),U,2)
    186         S ORDOB=$P(VADM(3),U,2),ORAGE=VADM(4),ORSEX=$P(VADM(5),U)
    187         S ORTS=+VAIN(3),ORWARD=VAIN(4),ORATTEND=+VAIN(11),ORSC=$G(VAEL(3))
    188         I $P($G(^DGSL(38.1,+ORVP,0)),"^",2),($G(^DPT(+ORVP,.1))]""!$D(^XUSEC("DG SENSITIVITY",DUZ))) D
    189         . ; if senstive patient and (patient inpatient or user holds key)
    190         . ; prevents sensitive patient warning from scrolling off screen
    191         . N X
    192         . W !!,"Press <return> to continue ..."
    193         . R X:DTIME
    194 SLCT2   ; -- convert patient's orders, if not already done
    195         Q
    196         ;
    197 OK(DATE)        ; -- Patient is deceased; ok to continue?
    198         N X,Y,DIR S DIR(0)="YA",DIR("B")="NO"
    199         S DIR("A")="Do you wish to continue? "
    200         W $C(7),!!,"This patient died "_$$FMTE^XLFDT(DATE)_"!"
    201         D ^DIR
    202         Q +Y
     1ORQPT ; SLC/MKB - Patient Selection ;3/16/05  08:28
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**52,82,85,215**;Dec 17, 1997
     3 ;
     4 ; Ref. to ^UTILITY via IA 10061
     5 ; SLC/PKS - 3/2000: Modified to deal with "Combinations."
     6 ;
     7EN ; -- main entry point for OR PATIENT SELECTION
     8 I $G(ORVP),'($D(ORPNM)&$D(ORSSN)) K ORVP ; reset
     9 D EN^VALM("OR PATIENT SELECTION")
     10 Q
     11 ;
     12HDR ; -- header code
     13 N X I '$G(ORVP) S X="** No patient selected **"
     14 E  S X=$G(ORPNM)_"   "_$G(ORSSN)
     15 S VALMHDR(1)="Current patient: "_X
     16 Q
     17 ;
     18INIT ; -- init variables and list array
     19 ; Modifications for multiple "Combination" lists by PKS.
     20 ;
     21 ; PARAM herein might end up as: ORLP DEFAULT CLINIC WEDNESDAY
     22 ;    (Param Name and current DOW)
     23 ; ORY might end up passed as:  5^5^C;1;T-360;T+60;A
     24 ;    (#lines^#pts^source;serviceSection;startDate;stopDate;sort)
     25 ;
     26 N ORY,ORX,PARAM,ORYZB,ORYZE
     27 ;
     28 ;added by CLA 12/12/96 - gets SERVICE/SECTION of user:
     29 N ORSRV S ORSRV=$G(^VA(200,DUZ,5)) I +ORSRV>0 S ORSRV=$P(ORSRV,U)
     30 ;
     31 S ORY=$$GET^XPAR("USR^SRV.`"_$G(ORSRV),"ORLP DEFAULT LIST SOURCE",1,"I") ; Gets default list source for this user.
     32 I $L(ORY) D  S ORY=ORY_";"_ORX
     33 . ; PKS: Set "PARAM" var to parameter name in param def file:
     34 . S PARAM="ORLP DEFAULT "_$S(ORY="T":"TEAM",ORY="S":"SPECIALTY",ORY="P":"PROVIDER",ORY="W":"WARD",ORY="C":"CLINIC",ORY="M":"COMBINATION",1:"")
     35 . S:ORY="C" PARAM=PARAM_" "_$$UP^XLFSTR($$DOW^XLFDT(DT)) ; For clinics, add current DOW.
     36 . S ORX=$$GET^XPAR("USR^SRV.`"_$G(ORSRV),PARAM,1,"I") ; Source param.
     37 . ; Next lines modified by PKS for "Combinations" and dates:
     38 . I (ORY="C")!(ORY="M") D
     39 . . S ORYZB=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC START DATE",1,"I")) ; Gets clinic start date.
     40 . . I ORYZB="T+0" S ORYZB=$$FMTE^XLFDT(DT,ORYZB)
     41 . . S ORX=ORX_";"_ORYZB
     42 . . S ORYZE=$$UP^XLFSTR($$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT CLINIC STOP DATE",1,"I")) ; Add ";" & stop date.
     43 . . I ORYZE="T+0" S ORYZE=$$FMTE^XLFDT(DT,ORYZE)
     44 . . S ORX=ORX_";"_ORYZE
     45 S $P(ORY,";",5)=$$GET^XPAR("USR^SRV.`"_$G(ORSRV)_"^DIV^SYS^PKG","ORLP DEFAULT LIST ORDER",1,"I") ; Add default sort order.
     46 ;
     47 ; Call tag that builds the actual Patient Selection List:
     48 D BUILD(ORY)
     49 Q
     50 ;
     51DEFAULT() ; -- Returns default action
     52 I '$P($G(^TMP("OR",$J,"PATIENTS",0)),U,2) Q "Change View"
     53 I XQORM("B")="Quit" Q "Close"
     54 Q "Next Screen"
     55 ;
     56MSG() ; -- Lmgr msg bar
     57 Q "Enter the number of the patient chart to be opened"
     58 ;
     59HELP ; -- help code
     60 N X D FULL^VALM1 S VALMBCK="R"
     61 W !!,"Enter the display number of the patient whose chart you wish to open"
     62 W !,"or enter a patient name, SSN, or initial/last 4 combination.  To"
     63 W !,"change the list of patients displayed on this screen, enter CV.  To"
     64 W !,"have the new list automatically displayed when selecting a new patient,"
     65 W !,"enter SV.  Enter FD to search by patient name or identifier."
     66 W !!,"Press <return> to continue ..." R X:DTIME
     67 Q
     68 ;
     69EXIT ; -- exit code
     70 K ^TMP("OR",$J,"PATIENTS"),XQORM("ALT")
     71 Q
     72 ;
     73BUILD(LIST) ; -- build list in ^TMP("OR",$J,"PATIENTS")
     74 N ORI,ORX,ORY,LCNT,NUM,DFN,NAME,TYPE,PTR,BEG,END,SORT,DOB,RBED,%DT,X,Y,TITLE,PTID,SENS
     75 S TYPE=$E(LIST),PTR=+$P(LIST,";",2),SORT=$P(LIST,";",5)
     76 ; Next 5 lines added by PKS:
     77 I ((SORT="S")&(TYPE'="M")) S SORT="A"    ; Reset invalid sorts.
     78 I TYPE="M" D                             ; Deal with combinations.
     79 .I ((SORT="P")!(SORT="A")!(SORT="S")) Q  ; P,A,S are acceptable.
     80 .S SORT="A"                              ; Default.
     81 S $P(LIST,";",5)=SORT                    ; Reset in case of change.
     82 S BEG=$P(LIST,";",3) I $L(BEG) S X=BEG,%DT="X" D ^%DT S BEG=Y
     83 S END=$P(LIST,";",4) I $L(END) S X=END,%DT="X" D ^%DT S END=Y
     84 I TYPE="T" D TEAMPTS^ORQPTQ1(.ORY,PTR) S TITLE="Team "_$P($G(^OR(100.21,+PTR,0)),U)
     85 I TYPE="P" D PROVPTS^ORQPTQ2(.ORY,PTR) S TITLE="Provider "_$P($G(^VA(200,+PTR,0)),U)
     86 I TYPE="S" D SPECPTS^ORQPTQ2(.ORY,PTR) S TITLE="Specialty "_$P($G(^DIC(45.7,+PTR,0)),U)
     87 I TYPE="W" D WARDPTS^ORQPTQ2(.ORY,PTR) S TITLE="Ward "_$P($G(^DIC(42,+PTR,0)),U)
     88 I TYPE="C" D CLINPTS^ORQPTQ2(.ORY,PTR,BEG,END) S TITLE="Clinic "_$P($G(^SC(+PTR,0)),U)
     89 ; Next line added by PKS for "Combinations:"
     90 I TYPE="M" N MSG D COMBPTS^ORQPTQ6(1,PTR,BEG,END) S TITLE="Combination List" ; Sets MSG,LCNT,NUM, and writes ^TMP("OR",$J,"PATIENTS").
     91 ; Next section added by PKS for "Combinations:"
     92 I TYPE="M" D  G BQ    ; Check MSG var, then go to BQ tag.
     93 .I MSG'="" D          ; Did call to COMBPTS assign an error message?
     94 ..S LCNT=1,NUM=0      ; Set defaults.
     95 ..S ^TMP("OR",$J,"PATIENTS",1,0)="     "_MSG ; Write error msg.
     96 D CLEAN^VALM10 S (LCNT,NUM)=0 ; All but "M" types reset, go on to B1.
     97 ;
     98B1 S ORI=0 F  S ORI=$O(ORY(ORI)) Q:ORI'>0  I ORY(ORI) D  ; sort
     99 . S DFN=+ORY(ORI)
     100 . ;sort logic added by CLA 7/23/97:
     101 . S ORX=""
     102 . I SORT="P",(TYPE="C") S ORX=$P($G(ORY(ORI)),U,4) D
     103 .. S $P(ORX,".",2)=$E($P(ORX,".",2)_"000",1,4)
     104 ..S ORX=ORX_U_$P(ORY(ORI),U,2)
     105 . I SORT="R",(TYPE'="C") S ORX=$P($G(^DPT(+ORY(ORI),.101)),U)_U_$P(ORY(ORI),U,2)
     106 . I SORT="T" S ORX="" ; Need to add terminal digit sorting.
     107 . ; If no sort specified, default to alphabetic (plus app't if clinic type):
     108 . I ORX="" S ORX=$P(ORY(ORI),U,2)_U_$P($G(ORY(ORI)),U,4)
     109 . S ^TMP("OR",$J,"PATIENTS","B",ORX_DFN)=ORY(ORI) ; DFN ^ Name
     110 I '$D(^TMP("OR",$J,"PATIENTS")) D  G BQ
     111 . N MSG
     112 . S MSG="No patients found"
     113 . S LCNT=1,NUM=0
     114 . I $D(ORY(1)) S MSG=$P(ORY(1),"^",2) ; error message from search
     115 . S ^TMP("OR",$J,"PATIENTS",1,0)="     "_MSG
     116B2 S ORX="" F  S ORX=$O(^TMP("OR",$J,"PATIENTS","B",ORX)) Q:ORX=""  S ORY=^(ORX) D
     117 . S DFN=+ORY,NAME=$P(ORY,U,2)
     118 . S DOB=$$FMTE^XLFDT($P($G(^DPT(DFN,0)),U,3))
     119 . S:(TYPE'="C") RBED=$P($G(^DPT(DFN,.101)),U)
     120 . I (TYPE="C") S RBED=$S(SORT="P":$$FMTE^XLFDT($P(ORX,U)),1:$$FMTE^XLFDT($P(^TMP("OR",$J,"PATIENTS","B",ORX),U,4)))
     121 . ;Q:RBED=""  removed by CLA 7/23/97 to prevent blank lines
     122 . S LCNT=LCNT+1,NUM=NUM+1
     123 . S ^TMP("OR",$J,"PATIENTS","IDX",NUM)=ORY ; DFN ^ NAME
     124 . ; Next lines modified/added by PKS on 1/24/2001:
     125 . ; Check for "sensitive" patients:
     126 . S PTID=""
     127 . S PTID=$$ID(DFN)
     128 . S SENS=$$SSN^DPTLK1(DFN)
     129 . I SENS["*" S PTID=""
     130 . S DOB=$$DOB^DPTLK1(DFN)
     131 . S ^TMP("OR",$J,"PATIENTS",LCNT,0)=$$LJ^XLFSTR(NUM,5)_$$LJ^XLFSTR(NAME,31)_$$LJ^XLFSTR(PTID,10)_$$LJ^XLFSTR(DOB,15)_$G(RBED)
     132 . D CNTRL^VALM10(LCNT,1,5,IOINHI,IOINORM)
     133BQ S ^TMP("OR",$J,"PATIENTS",0)=LCNT_U_NUM_U_$G(LIST) ; #lines^#pts^context
     134 S ^TMP("OR",$J,"PATIENTS","#")=$O(^ORD(101,"B","ORQPT SELECT PATIENT",0))_"^1:"_NUM
     135 S RBED=$S(TYPE="C":"Appointment Date",TYPE="M":"Source   Other",1:"Room-Bed")
     136 D CHGCAP^VALM("ROOM-BED",RBED) K VALMHDR
     137 S VALMCNT=LCNT,VALMBG=1,VALMBCK="R" S:$L($G(TITLE)) VALM("TITLE")=TITLE
     138 Q
     139 ;
     140ID(DFN) ; -- Returns short ID for patient ID
     141 N ID S ID=$P($G(^DPT(DFN,.36)),U,4) ; short ID
     142 I '$L(ID) S ID=$E($P($G(^DPT(DFN,0)),U,9),6,9) ; last 4 of SSN
     143 Q "("_$E(NAME)_ID_")"
     144 ;
     145APPT(DFN,CLINIC,FROM,TO) ; -- Return [next?] clinic appointment
     146 ; returns date/time next appt or "", returns "^error message" on error
     147 N ERR,ERRMSG,VASD,VAERR K ^UTILITY("VASD",$J)  ;IA 10061
     148 S VASD("F")=FROM,VASD("T")=TO,VASD("C",CLINIC)=""
     149 D SDA^ORQRY01(.ERR,.ERRMSG)
     150 I ERR K ^UTILITY("VASD",$J) Q ERRMSG
     151 S NEXT=+$O(^UTILITY("VASD",$J,0)),NEXT=$P($G(^(NEXT,"I")),U)
     152 K ^UTILITY("VASD",$J)
     153 Q NEXT
     154 ;
     155ALT ; -- XQORM("ALT") code to search File 2 for patient X
     156 N DIC,DFN,Y,ORX S ORX=X D FULL^VALM1
     157 S DIC=2,DIC(0)="EQM",X=$S($D(XQORMRCL):" ",1:ORX)
     158 D ^DIC I Y'>0 S VALMBCK="R" Q  ;S XQORMERR=1 Q
     159 S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
     160 S DFN=+Y G:DFN'=+$G(ORVP) SLCT1 ; set patient variables
     161 Q
     162 ;
     163FIND ; -- find patient in ^DPT
     164 N X,Y,DIC,ORX,DFN
     165 S DIC=2,DIC(0)="AEQM" D FULL^VALM1
     166 D ^DIC I Y'>0 S VALMBCK="R" Q
     167 S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
     168 S DFN=+Y G:DFN'=+$G(ORVP) SLCT1 ; set patient variables
     169 Q
     170 ;
     171SELECT ; -- select patient from list
     172 N NMBR,X,Y,Z,DIC,DFN,ORX S NMBR=+$P(XQORNOD(0),"=",2)
     173 S Y=$G(^TMP("OR",$J,"PATIENTS","IDX",NMBR)),DFN=+Y
     174 I 'DFN W $C(7),!!,NMBR_" is not a valid selection.",! S VALMBCK="" H 1 Q
     175 ;W "   "_$P(Y,U,2) S ^DISV(DUZ,"^DPT(")=DFN
     176 D FULL^VALM1 S DIC=2,DIC(0)="EQM",X="`"_DFN D ^DIC I Y<0 S VALMBCK="R" Q
     177 S ORX=+$G(^DPT(+Y,.35)) I ORX,'$$OK(ORX) S VALMBCK="R" Q
     178SLCT1 ; -- may enter here with DFN from FIND
     179 N VADM,VAEL,VAIN,VA,VAERR,LOC,ORCNV
     180 D OERR^VADPT,ELIG^VADPT
     181 S LOC=+$G(^DIC(42,+VAIN(4),44))_";SC(" I 'LOC,'$D(XQAID) D
     182 . I $G(NMBR) N X S X=$$CONTEXT^ORQPT1 I $E(X)="C" S LOC=$P(X,";",2)_";SC(" Q:LOC  ; use clinic if selected from list, else ask
     183 . S LOC="" ;,X=$$LOCATION^ORCMENU1(1) S:X LOC=X
     184 S ORL=LOC,ORL(0)=$P($G(^SC(+ORL,0)),U),ORL(1)=VAIN(5)
     185 S ORVP=DFN_";DPT(",ORPNM=VADM(1),ORSSN=$P(VADM(2),U,2)
     186 S ORDOB=$P(VADM(3),U,2),ORAGE=VADM(4),ORSEX=$P(VADM(5),U)
     187 S ORTS=+VAIN(3),ORWARD=VAIN(4),ORATTEND=+VAIN(11),ORSC=$G(VAEL(3))
     188 I $P($G(^DGSL(38.1,+ORVP,0)),"^",2),($G(^DPT(+ORVP,.1))]""!$D(^XUSEC("DG SENSITIVITY",DUZ))) D
     189 . ; if senstive patient and (patient inpatient or user holds key)
     190 . ; prevents sensitive patient warning from scrolling off screen
     191 . N X
     192 . W !!,"Press <return> to continue ..."
     193 . R X:DTIME
     194SLCT2 ; -- convert patient's orders, if not already done
     195 S ORCNV=$$OTF^OR3CONV(+ORVP) Q:'ORCNV  I ORCNV>0 W !,"DONE" H 1 Q
     196 I ORCNV<0 W $C(7),!!,$P(ORCNV,U,2) H 2 S VALMBCK="R" Q
     197 Q
     198 ;
     199OK(DATE) ; -- Patient is deceased; ok to continue?
     200 N X,Y,DIR S DIR(0)="YA",DIR("B")="NO"
     201 S DIR("A")="Do you wish to continue? "
     202 W $C(7),!!,"This patient died "_$$FMTE^XLFDT(DATE)_"!"
     203 D ^DIR
     204 Q +Y
Note: See TracChangeset for help on using the changeset viewer.