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

BIDUVLS2.m

Go to the documentation of this file.
  1. BIDUVLS2 ;IHS/CMI/MWR - VIEW DUE LIST VIEW.; MAY 10, 2010
  1. ;;8.5;IMMUNIZATION;;SEP 01,2011
  1. ;;* MICHAEL REMILLARD, DDS * CIMARRON MEDICAL INFORMATICS, FOR IHS *
  1. ;; LIST TEMPLATE CODE FOR VIEWING PATIENTS DUE, SET LINES FOR
  1. ;; INDIVIDUAL PATIENTS.
  1. ;
  1. ;
  1. ;----------
  1. PATIENT(BILINE,BIDFN,BINFO,BIDASH,BIMMRF,BIMMLF) ;EP
  1. ;---> Set line in Listman display global.
  1. ;---> Parameters:
  1. ; 1 - BILINE (req) Line Number in display area.
  1. ; 2 - BIDFN (req) Patient DFN.
  1. ; 3 - BINFO (req) Array of Additional Info elements.
  1. ; 4 - BIDASH (opt) 1=Omit Dash line between records; 0=include it.
  1. ; 5 - BIMMRF (opt) Imms Received Filter array (subscript=CVX's included).
  1. ; 6 - BIMMLF (opt) Lot Number Filter array (subscript=lot number text).
  1. ;
  1. Q:$G(BILINE)=""
  1. N BIPLIN,BIPLIN1,X
  1. ;
  1. ;---> Patient demographic line.
  1. S X=" "_$E($$NAME^BIUTL1(BIDFN),1,19)
  1. S X=$$PAD^BIUTL5(X,22)_$$PAD^BIUTL5($$HRCN^BIUTL1(BIDFN,DUZ(2)),8)
  1. ;S X=X_" "_$$DOBF^BIUTL1(BIDFN,,,1)_" "_$$SEX^BIUTL1(BIDFN) vvv83
  1. S X=X_" "_$$DOBF^BIUTL1(BIDFN,$G(BIFDT),,1)
  1. S X=$$PAD^BIUTL5(X,54)_$$SEX^BIUTL1(BIDFN)
  1. S X=$$PAD^BIUTL5(X,58)_$E($$CURCOM^BIUTL11(BIDFN,1),1,21)
  1. D:'$G(BIDASH) WRITE(.BILINE)
  1. D WRITE(.BILINE,X) K X
  1. ;---> Preserve line number of Patient demographic line, for record
  1. ;---> line count and for address and phone lines below.
  1. S BIPLIN=BILINE-1,BIPLIN1=BILINE+1
  1. ;
  1. ;---> Next section: Write specifed Additional Information in BINFO.
  1. ;
  1. ;--> Check if BINFO("ALL") exists. If so, set BIALL=1 and display all Info.
  1. N BIALL S BIALL=0
  1. S:$D(BINFO("ALL")) BIALL=1
  1. ;
  1. ;---> First, build Data String, BINFODS, of Add Info elements (2nd piece of
  1. ;---> BI TABLE ADD INFO File #9002084.82).
  1. N BINFODS
  1. D
  1. .N N S N=0
  1. .F S N=$O(BINFO(N)) Q:'N D
  1. ..S BINFODS=$G(BINFODS)_$P($G(^BIADDIN(N,0)),U,2)_"^"
  1. .S:'$G(BINFODS) BINFODS=0
  1. ;
  1. ;---> Forecast.
  1. D:((BINFODS[15)!BIALL) WRITE(.BILINE),FORECAST(.BILINE,BIDFN,$G(BIFDT))
  1. ;
  1. ;---> Address.
  1. D:((BINFODS[12)!BIALL)
  1. .N X S X="Address..: "_$E($$STREET^BIUTL1(BIDFN),1,38)
  1. .S BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. .S X=" "_$$CTYSTZ^BIUTL1(BIDFN),BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. ;
  1. ;---> Phone Number.
  1. D:((BINFODS[11)!BIALL)
  1. .N X S X="Phone....: "_$$HPHONE^BIUTL1(BIDFN),BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. ;
  1. ;---> Parent/Guardian.
  1. D:((BINFODS[17)!BIALL)
  1. .N X S X="Parent...: "_$$PARENT^BIUTL1(BIDFN),BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. ;
  1. ;---> Case Manager.
  1. D:((BINFODS[18)!BIALL)
  1. .N X S X="Case Mgr.: "_$$CMGR^BIUTL1(BIDFN,1,1),BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. ;
  1. ;---> Reason Inactivated.
  1. D:((BINFODS[19)!BIALL)
  1. .Q:('$$INACT^BIUTL1(BIDFN))
  1. .N X S X="Inactive.: "_$$INACTRE^BIUTL1(BIDFN),BIPLIN1=BIPLIN1+1
  1. .D APPEND(BIPLIN1,X,.BILINE)
  1. ;
  1. ;---> Immunization History.
  1. I (BINFODS[13)!(BINFODS[14)!(BINFODS[20)!(BINFODS[22)!(BINFODS[25)!BIALL D
  1. .;---> Write either History or History w/Lot#'s, VFC, with or without Skin Tests.
  1. .N X D
  1. ..I (BINFODS[14)&(BINFODS'[25) S X=2 Q
  1. ..I (BINFODS'[14)&(BINFODS[25) S X=5 Q
  1. ..I (BINFODS[14)&(BINFODS[25) S X=7 Q
  1. ..S X=1
  1. .;
  1. .;---> Include location where shot was given.
  1. .N Y S Y=$S(BINFODS[22:1,1:0)
  1. .N Z S Z=1
  1. .D:(BINFODS[20)
  1. ..I ((BINFODS'[13)&(BINFODS'[14)&(BINFODS'[25)) S Z=2 Q
  1. ..S Z=0
  1. .D WRITE(.BILINE),WRITE(.BILINE," History:")
  1. .D HISTORY1^BILETPR1(.BILINE,BIDFN,X,,"BIDULV",,,Z,Y,.BIMMRF,.BIMMLF)
  1. ;
  1. ;
  1. ;---> Refusals.
  1. D:((BINFODS[23)!BIALL)
  1. .N A,X1,X2,X3 S (X1,X2,X3)=""
  1. .D CONTRA^BIUTL11(BIDFN,.A,1,1)
  1. .Q:('$D(A))
  1. .D WRITE(.BILINE)
  1. .S X1=" Refusals: "
  1. .N N,M S N=0,M=0
  1. .F S N=$O(A(N)) Q:'N D
  1. ..N X S M=M+1
  1. ..S X=$$VNAME^BIUTL2($$HL7TX^BIUTL2(N))_" ("_$$SLDT2^BIUTL5($P(A(N),U,2),1)_")"
  1. ..S:"235689"[M X=", "_X
  1. ..I M<4 S X1=X1_X Q
  1. ..I M<7 S:M=4 X2=" ",X1=X1_"," S X2=X2_X Q
  1. ..S:M=7 X3=" ",X2=X2_"," S X3=X3_X Q
  1. .I X1]"" D WRITE(.BILINE,X1)
  1. .I X2]"" D WRITE(.BILINE,X2)
  1. .I X3]"" D WRITE(.BILINE,X3)
  1. ;
  1. ;---> Next Appointment.
  1. D:((BINFODS[21)!BIALL)
  1. .;---> Write either Patient's Next Appointment if there is one.
  1. .N X S X=$$NEXTAPPT^BIUTL11(BIDFN)
  1. .D:X]""
  1. ..S X=" Next Appointment: "_$E(X,1,57)
  1. ..D WRITE(.BILINE),WRITE(.BILINE,X)
  1. ;
  1. ;---> Directions to House.
  1. D:((BINFODS[16)!BIALL)
  1. .Q:'$O(^AUPNPAT(BIDFN,12,0))
  1. .D WRITE(.BILINE)
  1. .N X S X=" Directions to the home of "_$$NAME^BIUTL1(BIDFN,1)_":"
  1. .D WRITE(.BILINE,X)
  1. .N N S N=0
  1. .F S N=$O(^AUPNPAT(BIDFN,12,N)) Q:'N D
  1. ..S X=$G(^AUPNPAT(BIDFN,12,N,0))
  1. ..D WRITE(.BILINE," "_X)
  1. ;
  1. D:'$G(BIDASH) WRITE(.BILINE," "_$$SP^BIUTL5(73,"-"))
  1. ;---> Mark the top line of this record with the total lines in it.
  1. D MARK^BIW(BIPLIN,BILINE-BIPLIN,"BIDULV")
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. FORECAST(BILINE,BIDFN,BIFDT) ;EP
  1. ;---> Retrieve and store Imm Forecast in WP ^TMP global.
  1. ;---> Parameters:
  1. ; 2 - BILINE (ret) Last line written into ^TMP array.
  1. ; 3 - BIDFN (req) Patient's IEN in VA PATIENT File #2.
  1. ; 4 - BIFDT (opt) Forecast Date.
  1. ;
  1. Q:'$D(BILINE) Q:'$G(BIDFN)
  1. ;
  1. ;---> If Patient is deceased, display date instead of forecast.
  1. N X S X=$$DECEASED^BIUTL1(BIDFN,1)
  1. I X D WRITE(.BILINE),WRITE(.BILINE," DECEASED: "_$$TXDT^BIUTL5(X)) Q
  1. ;
  1. ;---> If Forecast Date not provided, set it equal to today.
  1. S:'$G(BIFDT) BIFDT=DT
  1. ;
  1. ;---> RPC to gather Immunization History.
  1. ; BIRETVAL - Return value of valid data from RPC.
  1. ; BIRETERR - Return value (text string) of error from RPC.
  1. ;
  1. N BIRETVAL,BIRETERR S BIRETVAL=""
  1. ;---> Next line: 4th param=1 to not call Immserve because forecast
  1. ;---> just got updated in retrieving patients: +225^BIDUR.
  1. D IMMFORC^BIRPC(.BIRETVAL,BIDFN,BIFDT,1)
  1. ;
  1. ;---> If BIRETERR has a value, store it and quit.
  1. S BIRETERR=$P(BIRETVAL,BI31,2)
  1. I BIRETERR]"" D Q
  1. .D WRITE(.BILINE),WRITE(.BILINE," "_BIRETERR),WRITE(.BILINE)
  1. ;
  1. ;---> Set BIFDTORC=to the Immunization Forecast for this patient.
  1. N BIFDTORC,I,V S V="|",BIFDTORC=$P(BIRETVAL,BI31,1)
  1. ;
  1. ;---> Loop through "^"-pieces of Imm Forecast, getting data.
  1. F I=1:1 S Y=$P(BIFDTORC,U,I) Q:Y="" D
  1. .N X,Z S X=$S(I=1:" Needs: ",1:" ")
  1. .;---> If the forecast for this vaccine contains an error,
  1. .;---> write Vaccine Group Name Error, such as, $P("DTP ERROR:",":").
  1. .S Z=$P(Y,V),Z=X_$P(Z,":")
  1. .D WRITE(.BILINE,Z)
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. WRITE(BILINE,BIVAL) ;EP
  1. ;---> Write a line to the ^TMP global for WP or Listman.
  1. ;---> Parameters:
  1. ; 1 - BILINE (ret) Last line# in the WP ^TMP global.
  1. ; 2 - BIVAL (opt) Value/text of line (Null=blank line).
  1. ;
  1. Q:'$D(BILINE)
  1. S:$G(BIVAL)="" BIVAL=" "
  1. S BILINE=BILINE+1,^TMP("BIDULV",$J,BILINE,0)=BIVAL
  1. Q
  1. ;
  1. ;
  1. ;----------
  1. APPEND(BIPLIN1,BIVAL,BILINE) ;EP
  1. ;---> Append BIVAL to existing line or create new line.
  1. ;---> Parameters:
  1. ; 1 - BIPLIN1 (ret) Line down from demog line to be added to.
  1. ; 2 - BIVAL (opt) Value/text of line (Null=blank line).
  1. ; 3 - BILINE (ret) Last line# in the WP ^TMP global.
  1. ;
  1. Q:'$D(BILINE)
  1. Q:$G(BIVAL)=""
  1. ;
  1. ;---> If line already exists, append to it.
  1. N X
  1. I $D(^TMP("BIDULV",$J,BIPLIN1,0)) S X=^(0) D Q
  1. .S X=$$PAD^BIUTL5(X,32)_BIVAL
  1. .S ^TMP("BIDULV",$J,BIPLIN1,0)=X
  1. ;
  1. ;---> If line doesn't exist, create it.
  1. D WRITE(.BILINE,$$SP^BIUTL5(32)_BIVAL)
  1. Q