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

BGOVEXAM.m

Go to the documentation of this file.
  1. BGOVEXAM ; IHS/BAO/TMD - V Exam Management ;02-Oct-2013 13:02;PLS
  1. ;;1.1;BGO COMPONENTS;**1,3,11,12,13**;Mar 20, 2007;Build 3
  1. ; Return exam records for a patient
  1. ; DFN = Patient IEN
  1. ; .RET = Returned as a list of record in one of two formats:
  1. ; For exams:
  1. ; E ^ Exam Name [2] ^ Visit Date [3] ^ Result [4] ^ Comment [5] ^ Provider Name [6] ^ Facility Name [7] ^
  1. ; Provider IEN [8] ^ Location Name [9] ^ Exam IEN [10] ^ V File IEN [11] ^ Visit IEN [12] ^ Visit Category [13] ^
  1. ; Visit Locked [14] ^ Event date [15]
  1. ;
  1. ; For refusals:
  1. ; R ^ Exam Name [2] ^ Refusal Date [3] ^ Reason [4] ^ Comment [5] ^ Exam IEN [6] ^ V File IEN [7] ^
  1. ; Refusal Locked [8]
  1. GET(RET,DFN) ;EP
  1. N X,CNT,REC,VCAT,EXAM,VDT,VXAM,RESULT,LOC,FAC,FACNAM,EXNAME,PRVIEN,PRVNAME,EVNDT
  1. N EXAM,VDATE,VIEN,COMMENT
  1. S RET=$$TMPGBL^BGOUTL
  1. S (CNT,EXAM)=0
  1. F S EXAM=$O(^AUPNVXAM("AA",DFN,EXAM)) Q:'EXAM D
  1. .S VDT=0
  1. .F S VDT=$O(^AUPNVXAM("AA",DFN,EXAM,VDT)) Q:'VDT D
  1. ..S VXAM=0
  1. ..F S VXAM=$O(^AUPNVXAM("AA",DFN,EXAM,VDT,VXAM)) Q:'VXAM D
  1. ...S REC=$G(^AUPNVXAM(VXAM,0))
  1. ...Q:REC=""
  1. ...S RESULT=$$EXTERNAL^DILFD($$FNUM,.04,,$P(REC,U,4))
  1. ...I RESULT="",$O(^AUPNPREF("AA",DFN,9999999.15,EXAM,VDT,"")) Q
  1. ...S EXNAME=$P($G(^AUTTEXAM(EXAM,0)),U)
  1. ...S PRVIEN=$P($G(^AUPNVXAM(VXAM,12)),U,4)
  1. ...;Patch 11
  1. ...S EVNDT=$$FMTDATE^BGOUTL($P($G(^AUPNVXAM(VXAM,12)),U,1))
  1. ...S PRVNAME=$S('PRVIEN:"",1:$P($G(^VA(200,+PRVIEN,0)),U))
  1. ...S VIEN=$P(REC,U,3)
  1. ...Q:'VIEN
  1. ...S LOC=$P($G(^AUPNVSIT(VIEN,0)),U,6)
  1. ...S FAC=$S(LOC:$P($G(^AUTTLOC(LOC,0)),U,10),1:"")
  1. ...S FACNAM=$S(LOC:$P($G(^AUTTLOC(LOC,0)),U),1:"")
  1. ...S:FACNAM FACNAM=$P($G(^DIC(4,FACNAM,0)),U)
  1. ...S:$P($G(^AUPNVSIT(VIEN,21)),U)'="" FACNAM=$P(^(21),U)
  1. ...S VCAT=$P($G(^AUPNVSIT(VIEN,0)),U,7)
  1. ...S VDATE=$$FMTDATE^BGOUTL(9999999-VDT)
  1. ...S COMMENT=$P($G(^AUPNVXAM(VXAM,811)),U)
  1. ...S CNT=CNT+1
  1. ...S @RET@(CNT)="E"_U_EXNAME_U_VDATE_U_RESULT_U_COMMENT_U_PRVNAME_U_FACNAM_U_PRVIEN_U_LOC_U_EXAM_U_VXAM_U_VIEN_U_VCAT_U_$$ISLOCKED^BEHOENCX(VIEN)_U_EVNDT
  1. ; Add refusal data
  1. N ARRAY,CNT2,Z,STR,SAVE,SAVE2,DATA
  1. S CNT2=0,ARRAY="DATA"
  1. D REFGET^BGOUTL2(.ARRAY,DFN,9999999.15,.CNT2)
  1. S Z=0 F S Z=$O(@ARRAY@(Z)) Q:Z="" D
  1. .S STR=$G(@ARRAY@(Z))
  1. .S SAVE=$P(STR,U,13),SAVE2=$P(STR,U,11)
  1. .I SAVE'="" S $P(STR,U,11)=SAVE,$P(STR,U,13)=SAVE2
  1. .S CNT=CNT+1
  1. .S @RET@(CNT)=STR
  1. Q
  1. ; Return a list of exam types
  1. ; Returned as a list of records in the format:
  1. ; Exam Type IEN ^ Exam Name ^ Exam Code ^ CPT Code
  1. GETTYPES(RET,DUMMY) ;EP
  1. N EXAM,CNT,REC,NAME,CODE,CPT
  1. S RET=$$TMPGBL^BGOUTL
  1. S (CNT,EXAM)=0
  1. F S EXAM=$O(^AUTTEXAM(EXAM)) Q:'EXAM D
  1. .S REC=$G(^AUTTEXAM(EXAM,0))
  1. .Q:'$L(REC)
  1. .Q:$P(REC,U,4)=1
  1. .;Do not allow nutritional screening in list
  1. .Q:$P(REC,U,2)=40
  1. .S NAME=$P(REC,U)
  1. .S CODE=$P(REC,U,2)
  1. .S CPT=$P(REC,U,11)
  1. .S CNT=CNT+1,@RET@(CNT)=EXAM_U_NAME_U_CODE_U_CPT
  1. Q
  1. ; Get list of valid results for a given EXAM Name or IEN
  1. GETRSLTS(RET,EXAM) ;EP
  1. N CNT,RL,RLIST
  1. ;S RET=$$TMPGBL^BGOUTL,CNT=0
  1. K RET
  1. S CNT=0
  1. Q:$G(EXAM)=""
  1. I EXAM'?1.N D
  1. .S EXAM=$O(^AUTTEXAM("B",EXAM,""))
  1. Q:'EXAM
  1. D VXAMR^AUPNCIX(EXAM,"RLIST")
  1. S RL=0
  1. F S RL=$O(RLIST(RL)) Q:'RL S CNT=CNT+1,RET(CNT)=$P(RLIST(RL),U,2)
  1. Q
  1. ; Get primary provider for this V EXAM
  1. PRIPRV(RET,VXAM) ;EP
  1. S RET=$$PRIPRV^BGOUTL($P(^AUPNVXAM(VXAM,0),U,3))
  1. Q
  1. ; Delete a V EXAM or associated refusal
  1. ; INP = IEN ^ "R" if refusal, otherwise null
  1. DEL(RET,INP) ;EP
  1. N IEN,REFUSAL
  1. S IEN=+INP
  1. S REFUSAL=$P(INP,U,2)="R"
  1. I 'IEN S RET=$$ERR^BGOUTL(1008)
  1. E I REFUSAL S RET=$$REFDEL^BGOUTL2(IEN)
  1. E D VFDEL^BGOUTL2(.RET,$$FNUM,IEN)
  1. Q
  1. ; Set exam or refusal record
  1. ; INP = V Exam IEN (if edit) [1] ^ Exam IEN [2] ^ Visit IEN [3] ^ Provider IEN [4] ^ Result [5] ^ Comment [6] ^
  1. ; Event Date [7] ^ Location IEN [8] ^ Other Location [9] ^ Historical Flag [10] ^ DFN [11]
  1. ; .RET = Returned as -1^error text if error
  1. SET(RET,INP) ;EP
  1. N VFIEN,VCAT,TYPE,VIEN,DFN,PROV,RESULT,COMMENT,EVNTDT,LOCIEN,OUTLOC,HIST,FDA,FNUM,VFNEW
  1. S RET="",FNUM=$$FNUM
  1. S VFIEN=$P(INP,U)
  1. S VFNEW='VFIEN
  1. S TYPE=$P(INP,U,2)
  1. S VIEN=+$P(INP,U,3)
  1. I 'TYPE S RET=$$ERR^BGOUTL(1077) Q
  1. S HIST=$P(INP,U,10)
  1. S DFN=$P(INP,U,11)
  1. I 'VIEN,'HIST S RET=$$ERR^BGOUTL(1002) Q
  1. S VCAT=$P($G(^AUPNVSIT(VIEN,0)),U,7)
  1. S:VCAT="E" HIST=1
  1. S PROV=$P(INP,U,4)
  1. ;IHS/MSC/MGH Patch 11
  1. I PROV="" S PROV=DUZ
  1. I 'PROV,'VFIEN S RET=$$ERR^BGOUTL(1027) Q
  1. S RESULT=$P(INP,U,5)
  1. S:RESULT="NORMAL"!(RESULT="NEGATIVE") RESULT="N"
  1. S COMMENT=$P(INP,U,6)
  1. S EVNTDT=$P(INP,U,7)
  1. I EVNTDT="" S EVNTDT=$$NOW^XLFDT
  1. S LOCIEN=$P(INP,U,8)
  1. S OUTLOC=$P(INP,U,9)
  1. I HIST D Q:RET
  1. .S RET=$$MAKEHIST^BGOUTL(DFN,EVNTDT,$S($L(OUTLOC):OUTLOC,1:LOCIEN),VIEN)
  1. .S:RET>0 VIEN=RET,RET="",VCAT="E"
  1. S RET=$$CHKVISIT^BGOUTL(VIEN,DFN)
  1. Q:RET
  1. I 'VFIEN D Q:'VFIEN
  1. .D VFNEW^BGOUTL2(.RET,FNUM,TYPE,VIEN,"Exam")
  1. .S:RET>0 VFIEN=RET,RET=""
  1. S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. S @FDA@(.01)="`"_TYPE
  1. S @FDA@(.04)=RESULT
  1. S:'VFNEW!$L(COMMENT) @FDA@(81101)=COMMENT
  1. ;IHS/MSC/MGH Patch 11 change for new fields
  1. ;S @FDA@(1204)="`"_DUZ
  1. S @FDA@(1204)="`"_PROV
  1. S @FDA@(1201)=EVNTDT
  1. ;Patch 11 Set date entered
  1. I VFNEW D
  1. .S @FDA@(1216)="N"
  1. .S @FDA@(1217)="`"_DUZ
  1. ;Patch 11 Set last modified
  1. S @FDA@(1218)="N"
  1. S @FDA@(1219)="`"_DUZ
  1. S RET=$$UPDATE^BGOUTL(.FDA,"E")
  1. I RET,VFNEW,$$DELETE^BGOUTL(FNUM,VFIEN)
  1. D:'RET VFEVT^BGOUTL2(FNUM,VFIEN,'VFNEW)
  1. S:'RET RET=VFIEN
  1. Q
  1. ; Return V File #
  1. FNUM() Q 9000010.13