Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BEHOENP2

BEHOENP2.m

Go to the documentation of this file.
  1. BEHOENP2 ;MSC/IND/MGH - Summary Report for Selected Encounter ;24-Mar-2016 04:54;du
  1. ;;1.1;BEH COMPONENTS;**005003,005004,005005**;Mar 20, 2007
  1. ;=================================================================
  1. MEAS(BEHVSIT,DFN,BEHQUIT) ;EP - Find the vital measurements for this visit
  1. S BEHIEN="" F S BEHIEN=$O(^GMR(120.5,"B",BEHVSIT,BEHIEN)) Q:BEHIEN="" D
  1. .Q:$P($G(^AUPNVMSR(BEHIEN,2)),U,1)=1 ;Quit if entered in error
  1. .S BEHTYP=$$GET1^DIQ(9000010.01,BEHIEN,.01,"E")
  1. .S BEH="" S BEH=$O(^BEHOVM(90460.01,"B",BEHTYP,BEH))
  1. .I BEH'="" D
  1. ..S VDATA=$G(^BEHOVM(90460.01,BEH,0))
  1. ..S DEFAULT=$P(VDATA,U,2)
  1. ..I DEFAULT="" S DEFU=""
  1. ..I DEFAULT=1 D
  1. ...S DEFU=$P(VDATA,U,4)
  1. ..I DEFAULT=0 D
  1. ...S DEFU=$P(VDATA,U,3)
  1. .S BEHVAL=$$RND($$GET1^DIQ(9000010.01,BEHIEN,.04,"E"))
  1. .S BEHDT=$$GET1^DIQ(9000010.01,BEHIEN,.07,"E")
  1. .S BEHDTI=$$GET1^DIQ(9000010.01,BEHIEN,.07,"I")
  1. .I BEHDT="" D
  1. ..S BEHDT=$$GET1^DIQ(9000010.01,BEHIEN,1201,"E")
  1. ..S BEHDTI=$$GET1^DIQ(9000010.01,BEHIEN,1201,"I")
  1. .I BEHDT'=OLDBEHDT S BENCNT=0,OLDBEHDT=BEHDT
  1. .S QUALSTR=""
  1. .S MOD=0 F S MOD=$O(^AUPNVMSR(BEHIEN,5,MOD)) Q:'+MOD D
  1. ..S QUAL=$G(^AUPNVMSR(BEHIEN,5,MOD,0))
  1. ..S QUAL=$P($G(^GMRD(120.52,QUAL,0)),U,1)
  1. ..S QUALSTR=QUALSTR_QUAL_","
  1. .S BEHCNT=BEHCNT+1
  1. .S BEHVIT(BEHDTI,BEHCNT)=BEHTYP_U_BEHVAL_" "_DEFU_U_QUALSTR
  1. I $D(BEHVIT) D
  1. .S NAME="VITAL MEASUREMENTS"
  1. .D HDR^BEHOENPV(NAME,BEHCNT)
  1. .W !,"DT/TIME",?25,"TYPE",?40,"VALUE",?55,"MODIFIERS",!
  1. .N I,J
  1. .S I="" F S I=$O(BEHVIT(I)) Q:I="" D
  1. ..W !,$$FMTE^XLFDT(I)
  1. ..S J="" F S J=$O(BEHVIT(I,J)) Q:J="" D
  1. ...W !,?25,$P(BEHVIT(I,J),U,1),?40,$P(BEHVIT(I,J),U,2),?55,$P(BEHVIT(I,J),U,3)
  1. Q
  1. ; Write text with word wrap
  1. WRAP(TXT,RM) ;
  1. N LM,WD,X,Y
  1. S RM=$G(RM,IOM),LM=$X,WD=RM-LM
  1. Q:WD<5 ""
  1. F Q:'$L(TXT) D
  1. .I $L(TXT)'>WD W TXT S TXT="" Q
  1. .S X=0,Y=WD
  1. .F S X=$F(TXT," ",X) Q:'X!(X>WD) S Y=X
  1. .W $E(TXT,1,Y-1)
  1. .S TXT=$E(TXT,Y,9999)
  1. .W:$L(TXT) !?LM
  1. Q ""
  1. RND(X) Q $S(X=+X:+$J(X,0,2),1:X)
  1. PROBLST(SNO,FIVE) ; Add item to problem list if not already there
  1. N IEN,PROB,FOUND,NCODE,NUMBER,DATA,ICD,NUM,NUMBER,NEW,SPROB,DEL,LIEN,DATA,MATCH,STAT
  1. S SPROB="",FOUND=0
  1. S NCODE=$P(VAL,U,1)
  1. ;If this patient already has this code on his problem list, just quit
  1. S PROB="" F S PROB=$O(^AUPNPROB("APCT",DFN,SNO,PROB)) Q:PROB=""!(FOUND=1) D
  1. .S DEL=$$GET1^DIQ(9000011,PROB,2.02)
  1. .I DEL="" S MATCH=1,SPROB=PROB
  1. I 'SPROB D
  1. .S IEN="+1",OPR=0
  1. .S LIEN=$$GET1^DIQ(9000010,VIEN,.06,"I")
  1. .S NEW=1+$E($O(^AUPNPROB("AA",DFN,LIEN,""),-1),2,99)
  1. .S FDA=$NA(FDA(9000011,IEN_","))
  1. .S @FDA@(.01)=CODE
  1. .S @FDA@(.02)=DFN
  1. .S @FDA@(.03)=$$NOW^XLFDT
  1. .S @FDA@(.05)=NAR
  1. .S @FDA@(.06)=DUZ(2)
  1. .S @FDA@(.07)=NEW
  1. .S @FDA@(.08)=$$NOW^XLFDT
  1. .S STAT=$$CHKSNO(SNO)
  1. .S @FDA@(.12)=STAT
  1. .S @FDA@(.14)=DUZ
  1. .S @FDA@(1.03)=DUZ
  1. .S @FDA@(1.04)=DUZ
  1. .;IHS/MGH/MGH SNOMED fields added
  1. .S @FDA@(80001)=SNO
  1. .S @FDA@(80002)=DESC
  1. .D UPDATE^DIE("","FDA","IEN","ERR")
  1. .I '$D(ERR("DIERR")) D
  1. ..S SPROB=IEN(1)
  1. ..S DATA=SPROB_U_$G(CIA("UID"))_U_1
  1. ..D:DFN BRDCAST^CIANBEVT("PCC."_DFN_".PRB",DATA)
  1. ..;Set any extra ICD codes
  1. ..D SETICD^BGOPROB1(.RES,SPROB,FIVE,";")
  1. ..Q:+RES
  1. Q:'+SPROB ""
  1. I $D(^AUPNPROB(SPROB,14,"B",VIEN)) Q SPROB
  1. N PRIEN,FDA,IEN,ERR
  1. S PRIEN="+1,"_SPROB_","
  1. S FDA(9000011.14,PRIEN,.01)=VIEN
  1. D UPDATE^DIE(,"FDA","IEN","ERR")
  1. Q SPROB
  1. ADDICD(RET,VAL,FIVE,PROB) ;Add any additional ICD codes as POV
  1. N DUP2,SFIVE,X,I,DEL
  1. S DEL=";",PROB=$G(PROB)
  1. S SFIVE=$G(FIVE)
  1. S X=$L(FIVE,DEL)
  1. F I=2:1:X D
  1. .S $P(VAL,U,2)=$P(SFIVE,DEL,I)
  1. .D SETEXTRA(.RET,.VAL)
  1. Q
  1. SETEXTRA(RET,VAL) ;add in extra ICD codes
  1. N NAR,VAL1,SNO,DESC,X,CODE,TXT,FIVE
  1. S DESC=$P(VAL,U,11)
  1. S TXT=$P(VAL,U,10)
  1. S CODE=$P(VAL,U,2)
  1. I $$AICD^BEHOENPC S CODE=$P($$CODEN^ICDEX(CODE,80),"~",1)
  1. E S CODE=+$$CODEN^ICDCODE(CODE,80)
  1. Q:CODE'>0
  1. S $P(VAL,U,4)=$$NARR^BEHOENPC(TXT_"|"_DESC)
  1. S $P(VAL,U,2)=CODE
  1. S $P(VAL,U,6)="S"
  1. D SET^BEHOENPC(.04,4),SET^BEHOENPC(.12,6),SET^BEHOENPC(.08,7),SET^BEHOENPC(1101,9),SET^BEHOENPC(1102,11),SET^BEHOENPC(.16,12)
  1. D STORE^BEHOENPC(.07)
  1. Q
  1. CHKSNO(SNO) ;Check for term coming from pharm ed
  1. N DATA,CHK,GOOD
  1. S GOOD="E"
  1. D GETLST^XPAR(.DATA,"ALL","BEHORXED POV SNOMED LIST")
  1. F CHK=1:1:DATA D
  1. .I SNO=$P($G(DATA(CHK)),U,2) S GOOD="R"
  1. Q GOOD