| 1 | GMTS ; SLC/KER - Health Summary Main Routine ; 02/27/2002
 | 
|---|
| 2 |  ;;2.7;Health Summary;**16,24,28,30,31,35,49**;Oct 20, 1995
 | 
|---|
| 3 |  ;            
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA   510  ^DISV(
 | 
|---|
| 6 |  ;   DBIA 10035  ^DPT(
 | 
|---|
| 7 |  ;   DBIA 10076  ^XUSEC("GMTS VIEW ONLY"
 | 
|---|
| 8 |  ;   DBIA  2160  ^XUTL("OR"
 | 
|---|
| 9 |  ;   DBIA 10086  ^%ZIS
 | 
|---|
| 10 |  ;   DBIA 10089  ^%ZISC
 | 
|---|
| 11 |  ;   DBIA 10063  ^%ZTLOAD
 | 
|---|
| 12 |  ;   DBIA   148  PATIENT^ORU1
 | 
|---|
| 13 |  ;   DBIA 10141  $$VERSION^XPDUTL
 | 
|---|
| 14 |  ;            
 | 
|---|
| 15 | MAIN ; Controls branching
 | 
|---|
| 16 |  ;            
 | 
|---|
| 17 |  ;   GMTSPXGO & GMRANGE are set in 2 calling 
 | 
|---|
| 18 |  ;   options, They aren't meant to be used together.
 | 
|---|
| 19 |  ;            
 | 
|---|
| 20 |  I +$G(GMTSPXGO)'>0,$L($T(PATIENT^ORU1)),($$VERSION^XPDUTL("OR")>2.19) D MAIN^GMTSDVR Q
 | 
|---|
| 21 |  N DIROUT,DUOUT,ZTRTN,GMTSPX1,GMTSPX2,GMNAME,GMPSAP
 | 
|---|
| 22 |  S GMTSTYP=0 K DIC,DIROUT,DUOUT
 | 
|---|
| 23 |  S DIC("B")=$P($G(^GMT(142,+$G(^DISV(+$G(DUZ),"^GMT(142,")),0)),U)
 | 
|---|
| 24 |  F  Q:$D(DIROUT)!$D(DUOUT)  D SELTYP Q:GMTSTYP'>0!$D(DIROUT)!$D(DUOUT)  D
 | 
|---|
| 25 |  . N GMPAT,DFN,GMTSMULT
 | 
|---|
| 26 |  . F  Q:$D(DIROUT)  D  Q:$D(DIROUT)!$D(DUOUT)!(+$D(GMPAT)'>0)!+$G(ORVP)
 | 
|---|
| 27 |  . . K GMPAT,DFN
 | 
|---|
| 28 |  . . I +$G(ORVP) D
 | 
|---|
| 29 |  . . . S (DFN,GMPAT(1))=+ORVP,GMNAME=$P($G(^DPT(+DFN,0)),U) Q:GMNAME=""  S GMPATT(GMNAME,DFN)="",(GMTSPX1,GMTSPX2)=""
 | 
|---|
| 30 |  . . . W !!,"For patient ",GMNAME," please answer the following."
 | 
|---|
| 31 |  . . . I +$G(GMTSPXGO)>0 D MENU^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1)
 | 
|---|
| 32 |  . . . I $G(GMTSPX1)']""!($G(GMTSPX2)']"") S DIROUT=1 K GMPAT,GMPATT Q
 | 
|---|
| 33 |  . . . Q:$D(DIROUT)  S GMPAT(GMNAME_(9999999-GMTSPX1),+DFN)=+DFN_U_$G(GMTSPX1)_U_$G(GMTSPX2)
 | 
|---|
| 34 |  . . I '(+($G(ORVP))) F  Q:$D(DIROUT)  K GMPATT D SELPT Q:$D(DIROUT)!('$D(GMPATT))  S GMNAME="" F  S GMNAME=$O(GMPATT(GMNAME)) Q:GMNAME=""!$D(DIROUT)  F DFN=0:0 S DFN=$O(GMPATT(GMNAME,DFN)) Q:DFN=""  D  Q:$D(DIROUT)
 | 
|---|
| 35 |  . . . S (GMTSPX1,GMTSPX2)="" W !!,"For patient ",GMNAME," please answer the following."
 | 
|---|
| 36 |  . . . I +$G(GMTSPXGO)>0 D MENU^GMTSPXU2(DFN,.GMTSPX2,.GMTSPX1) I $G(GMTSPX1)']""!($G(GMTSPX2)']"") Q
 | 
|---|
| 37 |  . . . Q:$D(DIROUT)
 | 
|---|
| 38 |  . . . S GMPAT(GMNAME_(9999999-GMTSPX1),+DFN)=+DFN_U_$G(GMTSPX1)_U_$G(GMTSPX2)
 | 
|---|
| 39 |  . . Q:$D(DIROUT)!(+$D(GMPAT)'>0)
 | 
|---|
| 40 |  . . I +$G(GMRANGE)>0 D GETRANGE^GMTSU(.GMTSPX1,.GMTSPX2) Q:$G(GMTSPX1)=""!($G(GMTSPX2)="")
 | 
|---|
| 41 |  . . Q:$D(DIROUT)
 | 
|---|
| 42 |  . . D RESUB^GMTSDVR(.GMPAT)
 | 
|---|
| 43 |  . . S GMPSAP=$$RXAP^GMTSPD2 Q:$D(DIROUT)!$D(DTOUT)
 | 
|---|
| 44 |  . . S ZTRTN="PQ^GMTS"
 | 
|---|
| 45 |  . . D HSOUT^GMTSDVR,END W !
 | 
|---|
| 46 |  K GMTSTYP,GMTSTITL,GMTSEG,GMTSEGI,GMTSEGC,GMX,DFN,X,Y,I,GMP,GMPATT
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | SELTYP ; Select a Health Summary Type for printing
 | 
|---|
| 49 |  Q:GMTSTYP=-1  S DIC=142,DIC("A")="Select Health Summary Type: ",DIC(0)="AEQM",DIC("S")="I $P(^(0),U)'=""GMTS HS ADHOC OPTION"""
 | 
|---|
| 50 |  S Y=$$TYPE^GMTSULT K DIC S GMTSTYP=+Y,GMTSTITL=$S($D(^GMT(142,+Y,"T")):^("T"),1:"") S:GMTSTITL="" GMTSTITL=$P(Y,"^",2)
 | 
|---|
| 51 |  I GMTSTYP>0,$S($D(^GMT(142,GMTSTYP,1,0))=0:1,$O(^(0))'>0:1,1:0) W !,"This Summary Type includes no components...Please choose another." G SELTYP
 | 
|---|
| 52 | SELTYP1 ; Get each component record
 | 
|---|
| 53 |  K GMTSEG,GMTSEGI S (GMI,S1)=0 F  S S1=$O(^GMT(142,GMTSTYP,1,S1)) Q:'S1  S GMX=^(S1,0) D LOADSEG
 | 
|---|
| 54 |  S GMTSEGC=GMI K S1,S2,GMI
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | LOADSEG ; Load enabled components into GMTSEG array
 | 
|---|
| 57 |  S GMTS0=^GMT(142.1,$P(GMX,"^",2),0)
 | 
|---|
| 58 |  S GMI=GMI+1,GMTSEG(GMI)=GMX,GMTSEGI($P(GMX,U,2))=GMI D SELFILE
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | SELPT ; Select a patient
 | 
|---|
| 61 |  N DUOUT,GMTSPRO,GMTSVER K ^XUTL("OR",$J,"ORU"),^("ORV"),^("ORW"),^("ORLP"),GMP
 | 
|---|
| 62 |  S GMTSVER=+($$VERSION^XPDUTL("OR")),GMTSPRO=+($$PROK^GMTSU("ORU1",11))
 | 
|---|
| 63 |  D:+GMTSVER>2.9&(GMTSPRO) PATIENT^ORU1(.GMP,,"I  $P($G(^(""OOS"")),""^"")")
 | 
|---|
| 64 |  D:+GMTSVER'>2.9!('GMTSPRO) PATIENT^ORU1(.GMP)
 | 
|---|
| 65 |  D PATCOPY^GMTSDVR(.GMP,.GMPATT)
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 | SELFILE ; Load Selection Items in GMTSEG( array
 | 
|---|
| 68 |  N SF,SR,S2 S S2=0 F  S S2=$O(^GMT(142,GMTSTYP,1,S1,1,S2)) Q:'S2  D
 | 
|---|
| 69 |  . S ENTRY=^(S2,0),SR=U_$P(ENTRY,";",2) Q:SR="^"
 | 
|---|
| 70 |  . S SF=+$P(@(SR_"0)"),U,2) Q:+SF=0
 | 
|---|
| 71 |  . S GMTSEG(GMI,SF,S2)=$P(ENTRY,";"),GMTSEG(GMI,SF,0)=SR
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 | PQ ; Queued subroutine for HS by patient
 | 
|---|
| 74 |  N DFN,GMTS,GMTS1,GMTS2,GMTSAGE,GMTSDOB,GMTSDTM,GMTSLO,GMTSLPG,GMTSPNM
 | 
|---|
| 75 |  N GMTSRB,GMTSSN,GMTSTOF,GMTSWARD,GMTJ,I,IX0,J,M4,P17,SEX
 | 
|---|
| 76 |  N TRFAC,VAERR,VAIN
 | 
|---|
| 77 |  S GMTJ=0 F  S GMTJ=$O(GMPAT(GMTJ)) Q:GMTJ'>0!$D(DIROUT)  D
 | 
|---|
| 78 |  . S DFN=+$G(GMPAT(GMTJ))
 | 
|---|
| 79 |  . I +$G(GMTSPXGO)>0 S GMTSPX1=$P($G(GMPAT(GMTJ)),U,2) D
 | 
|---|
| 80 |  . . S GMTSPX2=$P($G(GMPAT(GMTJ)),U,3)
 | 
|---|
| 81 |  . . I +GMTSPX1'>0!+GMTSPX2'>0 K GMTSPX1,GMTSPX2
 | 
|---|
| 82 |  . N GMDUOUT
 | 
|---|
| 83 |  . D EN^GMTS1
 | 
|---|
| 84 |  . Q:$D(DIROUT)!+$G(GMDUOUT)
 | 
|---|
| 85 |  . D ACTPROF^GMTSDVR(DFN)
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 | HSOUT ; Output Summary, with DEVICE handling
 | 
|---|
| 88 |  K ZTSK
 | 
|---|
| 89 |  I $D(^XUSEC("GMTS VIEW ONLY",DUZ)) D EN^GMTS1 Q
 | 
|---|
| 90 |  K IOP S %ZIS="PQ" D ^%ZIS Q:POP
 | 
|---|
| 91 |  G:$D(IO("Q")) QUE
 | 
|---|
| 92 | NOQUE ; Print non-queued output to selected device
 | 
|---|
| 93 |  D EN^GMTS1
 | 
|---|
| 94 |  D ^%ZISC
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 | QUE ; Call TaskMan to Queue output
 | 
|---|
| 97 |  K IO("Q"),ZTSAVE F %="DFN","GMTS*","ENTRY" S ZTSAVE(%)=""
 | 
|---|
| 98 |  S ZTRTN="EN^GMTS1",ZTDESC="HEALTH SUMMARY",ZTIO=ION
 | 
|---|
| 99 |  D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Cancelled!")
 | 
|---|
| 100 |  K ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE D ^%ZISC
 | 
|---|
| 101 |  S IOP="HOME" D ^%ZIS
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 | END ; Clean up environmental variables and EXIT Health Summary
 | 
|---|
| 104 |  K %T,DIC,GMTS,GMTSLO,GMTSPNM,GMTSRB,GMTSWARD,GMTSDOB,DIC,X,Y,VA,VAIN,VAINDT,VADM,VAEL,VAPA,VAERR,GMTSSN,GMTS0,GMTS1,GMTS2
 | 
|---|
| 105 |  K GMTSAGE,GMTSTIM,GMTSEGN,GMTSEGH,GMTSEGL,GMTSHDR,GMTSNPG,GMTSPG,GMTSQIT,GMTSX,ENTRY,Z1,GMTSDTM,GMTSLOCK,GMTSLPG,SEX,POP,C,GMTSTOF
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 | ENCWA ; Entry point printing components
 | 
|---|
| 108 |  ;            
 | 
|---|
| 109 |  ;   GMTSPRM can be set to any component abbreviations 
 | 
|---|
| 110 |  ;   except ones that require selection items. Needs 
 | 
|---|
| 111 |  ;   to be valid component abbreviation from the "C"
 | 
|---|
| 112 |  ;   x-ref of File 142.1.
 | 
|---|
| 113 |  ;            
 | 
|---|
| 114 |  ;   Call with DFN, GMTSPRM="CD,CN,CW,ADR", GMTSTITL="TITLE"
 | 
|---|
| 115 |  ;            
 | 
|---|
| 116 |  ;     GMTSPX1=Optional FM date for ending date
 | 
|---|
| 117 |  ;     GMTSPX2=Optional FM date for beginning date
 | 
|---|
| 118 |  ;            
 | 
|---|
| 119 |  ;   NOTE: Optional date range variables are both 
 | 
|---|
| 120 |  ;         required if a date range is desired.
 | 
|---|
| 121 |  ;            
 | 
|---|
| 122 |  N GMI,GMJ,GMTSEG,GMTSEGI,GMTSEGC
 | 
|---|
| 123 |  S GMTS1="9999999",GMTS2="6666666",GMI=0,GMTSPNF=1
 | 
|---|
| 124 |  I '$D(GMTSPRM) W !,"The parameter GMTSPRM is undefined.",! Q
 | 
|---|
| 125 |  I '$D(GMTSTITL) W !,"The parameter GMTSTITL is undefined.",! Q
 | 
|---|
| 126 |  I '+$G(DFN) W !,"The parameter DFN is undefined.",! Q
 | 
|---|
| 127 |  F GMJ=1:1:$L(GMTSPRM,",") S ABB=$P(GMTSPRM,",",GMJ) D LOAD Q:GMJ=-1
 | 
|---|
| 128 |  S GMTSEGC=GMI K ABB,IFN
 | 
|---|
| 129 |  D EN^GMTS1
 | 
|---|
| 130 |  D END K GMTSEG,GMTSEGI,GMTSEGC,GMTSTITL,GMTSPRM,GMTSPNF
 | 
|---|
| 131 |  Q
 | 
|---|
| 132 | LOAD ; Load GMTSEG() using GMTSPRM abbreviations
 | 
|---|
| 133 |  S IFN=$O(^GMT(142.1,"C",ABB,"")) Q:IFN=""
 | 
|---|
| 134 |  S GMI=GMI+1,GMTSEG(GMI)=GMI_"^"_IFN,GMTSEGI(IFN)=GMI
 | 
|---|
| 135 |  Q
 | 
|---|