- FHWORA ; HISC/GJC - OE/RR Procedure Call (Assessments) ;11/6/97 15:35
- ;;5.5;DIETETICS;**8**;Jan 28, 2005;Build 28
- FHWORADT(DFN) ; Pass back the Assessment Dates for a particular patient.
- ;----------------------------------------------------------------------
- ; Input : DFN -> the ien of the patient
- ; Output: -1^error text -> no assessments passed back with reason being
- ; error text
- ; 1 -> Assessments for our patient have been found. Data will
- ; stored in:
- ; ^TMP($J,"FHADT",DFN,inv internal dt/time)=ext dt/time
- ;----------------------------------------------------------------------
- Q:'$L(DFN) "-1^patient data missing"
- S FHZ115="P"_DFN D CHECK^FHOMDPA I FHDFN="" Q "-1^patient data missing"
- Q:'$D(^FHPT(FHDFN,0)) "-1^invalid patient (not in Dietetics Patient file)"
- Q:'+$O(^FHPT(FHDFN,"N",0)) "-1^No assessments on file"
- ;K ^TMP($J,"FHADT",DFN) N FH115A,I S I=6929298 ;7/1/2007
- ;K ^TMP($J,"FHADT",DFN) N FH115A,I S I=6929398 ;6/1/2007
- K ^TMP($J,"FHADT",DFN) N FH115A,I S I=6928998 ;10/1/2007
- F S I=$O(^FHPT(FHDFN,"N",I)) Q:I'>0 D
- . S FH115A=$G(^FHPT(FHDFN,"N",I,0))
- . S ^TMP($J,"FHADT",DFN,I)=$$FMTE^XLFDT($P(FH115A,"^"),1)
- . Q
- Q $S($D(^TMP($J,"FHADT",DFN)):1,1:"-1^No assessments prior to 10/1/2007 on file")
- ;
- FHWORASM(DFN,FHADTX) ; Store Assessment data so it can be displayed
- ;----------------------------------------------------------------------
- ; Input : DFN -> ien of the patient
- ; FHADTX -> Assessment Date (external format)
- ; Output: -1^error text, error text will be failure reason
- ; 1, no error data to be stored in:
- ; ^TMP($J,"FHASM",DFN,seq #)="lines of text"
- ;----------------------------------------------------------------------
- Q:'$L(DFN) "-1^patient data missing"
- S FHZ115="P"_DFN D CHECK^FHOMDPA I FHDFN="" Q "-1^patient data missing"
- Q:'$L(FHADTX) "-1^patient assessment date missing"
- Q:+FHADTX=FHADTX "-1^expecting the external format for a date/time"
- Q:'$D(^FHPT(FHDFN,0)) "-1^invalid patient (not in Dietetics Patient file)"
- N FHADTI,FHADTINV D DT^DILF("T",FHADTX,.FHADTI)
- Q:FHADTI=-1 "-1^invalid assessment date"
- S FHADTINV=(9999999-FHADTI)
- Q:'$D(^FHPT(FHDFN,"N",FHADTINV,0)) "-1^No assessments on file for this date/time"
- K ^TMP($J,"FHASM",DFN)
- N ACIR,ACIRP,ADT,AGE,AMP,BFAMA,BFAMAP,BMI,BMIP,CCIR,CCIRP,CNT,DTP,DWGT
- N FHAPPER,FHASMNT,FHLAB,FHUNIT,FLD,FRM,HGP,HGT,I,IBW,KCAL,N,NAM,NB,PRO
- N RC,SCA,SCAP,SEX,STR,STR1,TAB,TSF,TSFP,UWGT,WGP,WGT,X,X1,X2,X3,XD,Y,Z
- S CNT=0
- ; Note: '^FH(119.9,1' is the Dietetics Site Parameter file!
- S FHUNIT=$P($G(^FH(119.9,1,3)),"^") ; Eng. or Metric units of measure
- S FHASMNT(0)=$G(^FHPT(FHDFN,"N",FHADTINV,0))
- F I=1:1:22 S @$P("ADT SEX AGE HGT HGP WGT WGP DWGT UWGT IBW FRM AMP X X X KCAL PRO FLD RC XD BMI BMIP"," ",I)=$P(FHASMNT(0),"^",I)
- S SIGN=$P(FHASMNT(0),U,23) S:SIGN'="" SIGN1="Entered by: "_$P($P(^VA(200,SIGN,0),U),",",2)_" "_$P($P(^VA(200,SIGN,0),U),",") K SIGN
- S NAM=$P(^DPT(DFN,0),"^"),NB=$P(FHASMNT(0),"^",25)
- S SEX=$S(SEX="M":"Male",SEX="F":"Female",1:"")
- S FHASMNT(1)=$G(^FHPT(FHDFN,"N",FHADTINV,1))
- F I=1:1:10 S @$P("TSF TSFP SCA SCAP ACIR ACIRP CCIR CCIRP BFAMA BFAMAP"," ",I)=$P(FHASMNT(1),"^",I)
- S FHAPPER=$G(^FHPT(FHDFN,"N",FHADTINV,2)),I=0
- F S I=$O(^FHPT(FHDFN,"N",FHADTINV,"L",I)) Q:I'>0 S FHLAB(I)=$G(^(I,0))
- D SETUP^FHWORA1
- Q $S($D(^TMP($J,"FHASM",DFN)):1,1:"-1^No assessments on file for this date/time")
- ;
- CNT(X) ; Increment our subscript
- S X=X+1 S CNT=X
- Q CNT
- ;
- S ^TMP($J,"FHASM",DFN,$$CNT^FHWORA(CNT))=" "
- S ^TMP($J,"FHASM",DFN,$$CNT^FHWORA(CNT))="Comments"
- S ^TMP($J,"FHASM",DFN,$$CNT^FHWORA(CNT))=" "
- Q:'+$O(^FHPT(FHDFN,"N",FHADTINV,"X",0)) ; quit if no comments
- N DIW,DIWF,DIWI,DIWL,DIWR,DIWT,DIWTC,DIWX,FHI,X
- S DIWF="",DIWL=1,DIWR=79 K ^UTILITY($J,"W",DIWL) S FHI=0
- F S FHI=$O(^FHPT(FHDFN,"N",FHADTINV,"X",FHI)) Q:FHI'>0 D
- . S X=$G(^FHPT(FHDFN,"N",FHADTINV,"X",FHI,0)) D ^DIWP
- . Q
- S I=0 F S I=$O(^UTILITY($J,"W",DIWL,I)) Q:I'>0 D
- . S ^TMP($J,"FHASM",DFN,$$CNT(CNT))=$G(^UTILITY($J,"W",DIWL,I,0))
- . Q
- K ^UTILITY($J,"W",DIWL)
- Q
- ;
- LAB(I) ; Display lab data for our patient.
- S X1=$P(FHLAB(I),"^",7) Q:X1="" S DTP=X1\1 D DTP^FH
- S:'X3 ^TMP($J,"FHASM",DFN,$$CNT(CNT))=" " ; initial linefeed
- S X3=X3+1 ; lab data found? $S(X3>0:"Yes",1:"No")
- K STR S $P(STR," ",81)="",TAB=5
- S $E(STR,(TAB+1),(TAB+$L($P(FHLAB(I),"^"))))=$P(FHLAB(I),"^")
- S TAB=27
- S $E(STR,(TAB+1),(TAB+$L($P(FHLAB(I),"^",6))))=$P(FHLAB(I),"^",6)
- S TAB=40
- S $E(STR,(TAB+1),(TAB+$L($P(FHLAB(I),"^",4))))=$P(FHLAB(I),"^",4)
- S TAB=51
- S $E(STR,(TAB+1),(TAB+$L($P(FHLAB(I),"^",5))))=$P(FHLAB(I),"^",5)
- S TAB=65,$E(STR,(TAB+1),(TAB+$L(DTP)))=DTP
- S ^TMP($J,"FHASM",DFN,$$CNT(CNT))=STR
- Q
- ;
- TRUNC(I) ; Set each node to no more than eighty (80) chars in length.
- N A,B,C S A=$L(I(0)),B=A\80
- F C=1:1:B S ^TMP($J,"FHASM",DFN,$$CNT(CNT))=$E(I(0),$S(C=1:1,1:((C-1)*80)),((C*80)-1))
- S ^TMP($J,"FHASM",DFN,$$CNT(CNT))=$E(I(0),(((80*B)+1)-1),A)
- Q
- FHWORA ; HISC/GJC - OE/RR Procedure Call (Assessments) ;11/6/97 15:35
- +1 ;;5.5;DIETETICS;**8**;Jan 28, 2005;Build 28
- FHWORADT(DFN) ; Pass back the Assessment Dates for a particular patient.
- +1 ;----------------------------------------------------------------------
- +2 ; Input : DFN -> the ien of the patient
- +3 ; Output: -1^error text -> no assessments passed back with reason being
- +4 ; error text
- +5 ; 1 -> Assessments for our patient have been found. Data will
- +6 ; stored in:
- +7 ; ^TMP($J,"FHADT",DFN,inv internal dt/time)=ext dt/time
- +8 ;----------------------------------------------------------------------
- +9 IF '$LENGTH(DFN)
- QUIT "-1^patient data missing"
- +10 SET FHZ115="P"_DFN
- DO CHECK^FHOMDPA
- IF FHDFN=""
- QUIT "-1^patient data missing"
- +11 IF '$DATA(^FHPT(FHDFN,0))
- QUIT "-1^invalid patient (not in Dietetics Patient file)"
- +12 IF '+$ORDER(^FHPT(FHDFN,"N",0))
- QUIT "-1^No assessments on file"
- +13 ;K ^TMP($J,"FHADT",DFN) N FH115A,I S I=6929298 ;7/1/2007
- +14 ;K ^TMP($J,"FHADT",DFN) N FH115A,I S I=6929398 ;6/1/2007
- +15 ;10/1/2007
- KILL ^TMP($JOB,"FHADT",DFN)
- NEW FH115A,I
- SET I=6928998
- +16 FOR
- SET I=$ORDER(^FHPT(FHDFN,"N",I))
- IF I'>0
- QUIT
- Begin DoDot:1
- +17 SET FH115A=$GET(^FHPT(FHDFN,"N",I,0))
- +18 SET ^TMP($JOB,"FHADT",DFN,I)=$$FMTE^XLFDT($PIECE(FH115A,"^"),1)
- +19 QUIT
- End DoDot:1
- +20 QUIT $SELECT($DATA(^TMP($JOB,"FHADT",DFN)):1,1:"-1^No assessments prior to 10/1/2007 on file")
- +21 ;
- FHWORASM(DFN,FHADTX) ; Store Assessment data so it can be displayed
- +1 ;----------------------------------------------------------------------
- +2 ; Input : DFN -> ien of the patient
- +3 ; FHADTX -> Assessment Date (external format)
- +4 ; Output: -1^error text, error text will be failure reason
- +5 ; 1, no error data to be stored in:
- +6 ; ^TMP($J,"FHASM",DFN,seq #)="lines of text"
- +7 ;----------------------------------------------------------------------
- +8 IF '$LENGTH(DFN)
- QUIT "-1^patient data missing"
- +9 SET FHZ115="P"_DFN
- DO CHECK^FHOMDPA
- IF FHDFN=""
- QUIT "-1^patient data missing"
- +10 IF '$LENGTH(FHADTX)
- QUIT "-1^patient assessment date missing"
- +11 IF +FHADTX=FHADTX
- QUIT "-1^expecting the external format for a date/time"
- +12 IF '$DATA(^FHPT(FHDFN,0))
- QUIT "-1^invalid patient (not in Dietetics Patient file)"
- +13 NEW FHADTI,FHADTINV
- DO DT^DILF("T",FHADTX,.FHADTI)
- +14 IF FHADTI=-1
- QUIT "-1^invalid assessment date"
- +15 SET FHADTINV=(9999999-FHADTI)
- +16 IF '$DATA(^FHPT(FHDFN,"N",FHADTINV,0))
- QUIT "-1^No assessments on file for this date/time"
- +17 KILL ^TMP($JOB,"FHASM",DFN)
- +18 NEW ACIR,ACIRP,ADT,AGE,AMP,BFAMA,BFAMAP,BMI,BMIP,CCIR,CCIRP,CNT,DTP,DWGT
- +19 NEW FHAPPER,FHASMNT,FHLAB,FHUNIT,FLD,FRM,HGP,HGT,I,IBW,KCAL,N,NAM,NB,PRO
- +20 NEW RC,SCA,SCAP,SEX,STR,STR1,TAB,TSF,TSFP,UWGT,WGP,WGT,X,X1,X2,X3,XD,Y,Z
- +21 SET CNT=0
- +22 ; Note: '^FH(119.9,1' is the Dietetics Site Parameter file!
- +23 ; Eng. or Metric units of measure
- SET FHUNIT=$PIECE($GET(^FH(119.9,1,3)),"^")
- +24 SET FHASMNT(0)=$GET(^FHPT(FHDFN,"N",FHADTINV,0))
- +25 FOR I=1:1:22
- SET @$PIECE("ADT SEX AGE HGT HGP WGT WGP DWGT UWGT IBW FRM AMP X X X KCAL PRO FLD RC XD BMI BMIP"," ",I)=$PIECE(FHASMNT(0),"^",I)
- +26 SET SIGN=$PIECE(FHASMNT(0),U,23)
- IF SIGN'=""
- SET SIGN1="Entered by: "_$PIECE($PIECE(^VA(200,SIGN,0),U),",",2)_" "_$PIECE($PIECE(^VA(200,SIGN,0),U),",")
- KILL SIGN
- +27 SET NAM=$PIECE(^DPT(DFN,0),"^")
- SET NB=$PIECE(FHASMNT(0),"^",25)
- +28 SET SEX=$SELECT(SEX="M":"Male",SEX="F":"Female",1:"")
- +29 SET FHASMNT(1)=$GET(^FHPT(FHDFN,"N",FHADTINV,1))
- +30 FOR I=1:1:10
- SET @$PIECE("TSF TSFP SCA SCAP ACIR ACIRP CCIR CCIRP BFAMA BFAMAP"," ",I)=$PIECE(FHASMNT(1),"^",I)
- +31 SET FHAPPER=$GET(^FHPT(FHDFN,"N",FHADTINV,2))
- SET I=0
- +32 FOR
- SET I=$ORDER(^FHPT(FHDFN,"N",FHADTINV,"L",I))
- IF I'>0
- QUIT
- SET FHLAB(I)=$GET(^(I,0))
- +33 DO SETUP^FHWORA1
- +34 QUIT $SELECT($DATA(^TMP($JOB,"FHASM",DFN)):1,1:"-1^No assessments on file for this date/time")
- +35 ;
- CNT(X) ; Increment our subscript
- +1 SET X=X+1
- SET CNT=X
- +2 QUIT CNT
- +3 ;
- +1 SET ^TMP($JOB,"FHASM",DFN,$$CNT^FHWORA(CNT))=" "
- +2 SET ^TMP($JOB,"FHASM",DFN,$$CNT^FHWORA(CNT))="Comments"
- +3 SET ^TMP($JOB,"FHASM",DFN,$$CNT^FHWORA(CNT))=" "
- +4 ; quit if no comments
- IF '+$ORDER(^FHPT(FHDFN,"N",FHADTINV,"X",0))
- QUIT
- +5 NEW DIW,DIWF,DIWI,DIWL,DIWR,DIWT,DIWTC,DIWX,FHI,X
- +6 SET DIWF=""
- SET DIWL=1
- SET DIWR=79
- KILL ^UTILITY($JOB,"W",DIWL)
- SET FHI=0
- +7 FOR
- SET FHI=$ORDER(^FHPT(FHDFN,"N",FHADTINV,"X",FHI))
- IF FHI'>0
- QUIT
- Begin DoDot:1
- +8 SET X=$GET(^FHPT(FHDFN,"N",FHADTINV,"X",FHI,0))
- DO ^DIWP
- +9 QUIT
- End DoDot:1
- +10 SET I=0
- FOR
- SET I=$ORDER(^UTILITY($JOB,"W",DIWL,I))
- IF I'>0
- QUIT
- Begin DoDot:1
- +11 SET ^TMP($JOB,"FHASM",DFN,$$CNT(CNT))=$GET(^UTILITY($JOB,"W",DIWL,I,0))
- +12 QUIT
- End DoDot:1
- +13 KILL ^UTILITY($JOB,"W",DIWL)
- +14 QUIT
- +15 ;
- LAB(I) ; Display lab data for our patient.
- +1 SET X1=$PIECE(FHLAB(I),"^",7)
- IF X1=""
- QUIT
- SET DTP=X1\1
- DO DTP^FH
- +2 ; initial linefeed
- IF 'X3
- SET ^TMP($JOB,"FHASM",DFN,$$CNT(CNT))=" "
- +3 ; lab data found? $S(X3>0:"Yes",1:"No")
- SET X3=X3+1
- +4 KILL STR
- SET $PIECE(STR," ",81)=""
- SET TAB=5
- +5 SET $EXTRACT(STR,(TAB+1),(TAB+$LENGTH($PIECE(FHLAB(I),"^"))))=$PIECE(FHLAB(I),"^")
- +6 SET TAB=27
- +7 SET $EXTRACT(STR,(TAB+1),(TAB+$LENGTH($PIECE(FHLAB(I),"^",6))))=$PIECE(FHLAB(I),"^",6)
- +8 SET TAB=40
- +9 SET $EXTRACT(STR,(TAB+1),(TAB+$LENGTH($PIECE(FHLAB(I),"^",4))))=$PIECE(FHLAB(I),"^",4)
- +10 SET TAB=51
- +11 SET $EXTRACT(STR,(TAB+1),(TAB+$LENGTH($PIECE(FHLAB(I),"^",5))))=$PIECE(FHLAB(I),"^",5)
- +12 SET TAB=65
- SET $EXTRACT(STR,(TAB+1),(TAB+$LENGTH(DTP)))=DTP
- +13 SET ^TMP($JOB,"FHASM",DFN,$$CNT(CNT))=STR
- +14 QUIT
- +15 ;
- TRUNC(I) ; Set each node to no more than eighty (80) chars in length.
- +1 NEW A,B,C
- SET A=$LENGTH(I(0))
- SET B=A\80
- +2 FOR C=1:1:B
- SET ^TMP($JOB,"FHASM",DFN,$$CNT(CNT))=$EXTRACT(I(0),$SELECT(C=1:1,1:((C-1)*80)),((C*80)-1))
- +3 SET ^TMP($JOB,"FHASM",DFN,$$CNT(CNT))=$EXTRACT(I(0),(((80*B)+1)-1),A)
- +4 QUIT