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

BGOVAMI2.m

Go to the documentation of this file.
  1. BGOVAMI2 ; IHS/MSC/DKA - AMI Utilities 2 ;11-Jun-2018 13:08;DU
  1. ;;1.1;BGO COMPONENTS;**13,14,24**;Mar 20, 2007;Build 1
  1. ;01.23.14 - MSC/JS - move SET here to keep within 15k routine size limits
  1. ;01.28.14 - DEBUG EVENT CALL FOR NEW AMI RECORD ADDED
  1. ;O2.06.14 - Field .17 changed to store text
  1. ;05.01.14 - MSC/DKA Allow neither Fib Init nor Fib Not Init.
  1. ;
  1. ; Add/edit V AMI entry
  1. SET(RET,INP) ;EP
  1. ; This is the exact opposite of the GET call.
  1. ; INP is an array of strings.
  1. ; The first string is the VFIEN^NumberOfLines^VisitIsLocked
  1. ; Each subsequent string is prefixed with a letter indicating the type of record:
  1. ; A - Arrival
  1. ; AT - Arrival Text (Comment)
  1. ; E - EKG Done
  1. ; EF - EKG Findings (Multiple)
  1. ; EFT - EKG Findings Text (Comment)
  1. ; ET - EKG Done Text (Comment)
  1. ; F - Fibrinolytic Therapy
  1. ; FT - Fibrinolytic Therapy Text (Comment)
  1. ; O - Onset Symptoms
  1. ; OT - Onset Symptoms Text (Comment)
  1. ; P - Protocol Standing Order
  1. ; PT - Protocol Standing Order Text (Comment)
  1. ; S - Symptom
  1. ; PC - PCI data
  1. N DESCT,FDA,FNUM,NARR,NARRPTR,NOW,NUMNEW,SUBIEN,VCODE,VFIEN,VFNEW,VFSTR,VI,VIEN,REFUSED,VISDAT,DELF,VFCOMM
  1. N ADT,EDT,FDT,ODT,PDT,ATCOMM,EFTCOMM,ETCOMM,FTCOMM,OTCOMM,PTCOMM,FIBTXT,REFDT,DFN,RET2,FI,SNO
  1. S RET="",FNUM=$$FNUM
  1. S VFIEN=+INP(0)
  1. S VFNEW='VFIEN
  1. S VIEN=$P(INP(1),U,4)
  1. S VISDAT=$G(^AUPNVSIT(VIEN,0))
  1. S DFN=$P(VISDAT,U,5)
  1. I $G(DFN)="" S RET=$$ERR^BGOUTL(1062) Q
  1. S NOW=$$NOW^XLFDT ; Use the same value for Date/Time Entered fields
  1. S RET=$$CHKVISIT^BGOUTL(VIEN) Q:RET ; Visit does not exist
  1. I VFNEW D VFNEW^BGOUTL2(.RET,FNUM,VFIEN,VIEN) S:RET>0 VFIEN=RET,RET=""
  1. I 'VFIEN S RET=$$ERR^BGOUTL(1070) Q ; Unknown file entry (Best match for Unable to Add V File Entry)
  1. S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. F VI=1:1:$P(INP(0),U,2) D
  1. .S VFSTR=INP(VI)
  1. .S VCODE=$P(VFSTR,U)
  1. .I VCODE="A" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S ADT=$P(VFSTR,U,2)
  1. ..I ADT>0,ADT'["." S ADT=(ADT-1)+.24
  1. ..S @FDA@(.01)=ADT ;ArrivalDateTime
  1. ..;S @FDA@(.01)=$P(VFSTR,U,2) ;ArrivalDateTime
  1. ..S @FDA@(1204)=$P(VFSTR,U,5) ;EncounterProvider
  1. .E I VCODE="AT" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S ATCOMM=$P(VFSTR,U,2) ; Comment (Date/Time Arrival)
  1. ..I ATCOMM="" S @FDA@(1)="@" ; Delete the comment, whether or not it already exists.
  1. ..E D
  1. ...S @FDA@(1)=$NA(FDA(FNUM,VFIEN_",",1))
  1. ...S @FDA@(1,0)=$G(@FDA@(1,0))+1
  1. ...S @FDA@(1,@FDA@(1,0))=ATCOMM
  1. .E I VCODE="E" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S SNO=$$GET^XPAR("ALL","BGO EKG DONE SNOMED",1,"E")
  1. ..I $P(VFSTR,U,2)]"" D
  1. ...S EDT=$P(VFSTR,U,2)
  1. ...I EDT>0,EDT'["." S EDT=(EDT-1)+.24
  1. ...S @FDA@(.07)=EDT ;EKGDone(Date/Time)
  1. ...;S @FDA@(.07)=$P(VFSTR,U,2) ;EKGDoneDateTime
  1. ...S @FDA@(.08)=NOW
  1. ...S @FDA@(.09)=DUZ
  1. ...S @FDA@(1201)=$P(VFSTR,U,3) ;EventDateTime
  1. ...S @FDA@(1202)=$P(VFSTR,U,4) ;OrderingProvider
  1. ...S @FDA@(1210)=$P(VFSTR,U,5) ;OutsideProviderName
  1. ...S @FDA@(1215)=$P(VFSTR,U,6) ;OrderingLocation
  1. ...I EDT>0 S @FDA@(1101)=SNO ;EKG done SNOMED term Patch 24
  1. ..I $P(VFSTR,U,2)="" D ; 1.22.14
  1. ...S @FDA@(.07)="@" ;EKGDone(Date/Time)
  1. ...S @FDA@(.08)="@" ;EKGDateTimeEntered
  1. ...S @FDA@(.09)="@" ;EKGEnteredBy
  1. ...S @FDA@(1201)="@" ;EventDateTime
  1. ...S @FDA@(1202)="@" ;OrderingProvider
  1. ...S @FDA@(1210)="@" ;OutsideProviderName
  1. ...S @FDA@(1215)="@" ;OrderingLocation
  1. ...S @FDA@(1101)="@" ;EKG done code patch 24
  1. ...S @FDA@(3)="@" ;EKG Comment [ET]
  1. .E I VCODE="EF" D
  1. ..S SUBIEN=$P(VFSTR,U,2)
  1. ..I +SUBIEN&(SUBIEN["@") D DEL^BGOVAMI1(.RET2,VFIEN,SUBIEN,14) Q
  1. ..I SUBIEN="" S NUMNEW=$G(NUMNEW)+1,SUBIEN="+"_NUMNEW
  1. ..S SUBIEN=SUBIEN_","_VFIEN_","
  1. ..S FDA=$NA(FDA(FNUM_14,SUBIEN))
  1. ..S @FDA@(.01)=$P(VFSTR,U,3) ;EkgFindingsConceptId
  1. ..S (DESCT,@FDA@(.02))=$P(VFSTR,U,4) ;Description ID
  1. ..S (NARR,@FDA@(.03))=$P(VFSTR,U,5) ;Provider Text
  1. ..I DESCT]"" I NARR]"" S NARRPTR=$$NARR(DESCT,NARR)
  1. ..S @FDA@(.03)=$S($G(NARRPTR)>0:NARRPTR,1:"")
  1. ..S @FDA@(.04)=$P(VFSTR,U,6) ;ICD-9
  1. ..S @FDA@(.06)=$P(VFSTR,U,7) ;Interpreted By
  1. ..S @FDA@(.07)=$P(VFSTR,U,8) ;Event Date/Time
  1. ..S @FDA@(.08)=NOW ; Date/Time Entered
  1. ..S @FDA@(.09)=DUZ ; Entered By
  1. .E I VCODE="EFT" D ; Use same SUBIEN as previous "EF" record
  1. ..Q:+SUBIEN&(SUBIEN["@")
  1. ..S EFTCOMM=$P(VFSTR,U,3)
  1. ..I EFTCOMM="" S @FDA@(1)="@"
  1. ..E D
  1. ...S @FDA@(1)=$NA(FDA(FNUM_14,SUBIEN,1))
  1. ...S @FDA@(1,0)=$G(@FDA@(1,0))+1
  1. ...S @FDA@(1,@FDA@(1,0))=EFTCOMM
  1. .E I VCODE="ET" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S ETCOMM=$P(VFSTR,U,2) ; EKG Comment
  1. ..I ETCOMM="" S @FDA@(3)="@"
  1. ..E D
  1. ...S @FDA@(3)=$NA(FDA(FNUM,VFIEN_",",3))
  1. ...S @FDA@(3,0)=$G(@FDA@(3,0))+1
  1. ...S @FDA@(3,@FDA@(3,0))=ETCOMM
  1. .E I VCODE="F" D
  1. ..; 2014-05-01 DKA If no date is sent, then clear both FibInit and FibNotInit fields,
  1. ..; else if a reason is not sent, set FibInit and clear FibNotInit fields,
  1. ..; otherwise set FibNotInit and clear FibInit fields.
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..;First check to see if neither FT Initiated nor FT Not Initiated (None button checked)
  1. ..I $P(VFSTR,U,2,3)=U F FI=.11:.01:.17 S @FDA@(FI)="@" ; Clear all the FibInit and FibNotInit fields
  1. ..E I $P(VFSTR,U,4)="" D ; $P4 = Did Not Init Fib Reason fld#.17
  1. ...; FT Initiated
  1. ...S FDT=$P(VFSTR,U,2)
  1. ...I FDT>0,FDT'["." S FDT=(FDT-1)+.24
  1. ...S @FDA@(.11)=FDT ;FibrinolyticTherapyInitiated
  1. ...;S @FDA@(.11)=$P(VFSTR,U,2) ;FibrinolyticTherapyInitiated
  1. ...S @FDA@(.12)=NOW,@FDA@(.13)=DUZ
  1. ...S @FDA@(.14)="@" ; Delete any previous value for FT DidNotInit
  1. ...S @FDA@(.15)="@" ; Delete any previous value for FT DidNotInitD/TEntered
  1. ...S @FDA@(.16)="@" ; Delete any previous value for FT DidNotInitEnteredBy
  1. ...S @FDA@(.17)="@" ; Delete any previous value for FT DidnotInitReason
  1. ...;IHS/MSC/MGH Try to remove any refusal reason if this is an edit
  1. ...D DELREF^BGOVAMI1(VFIEN)
  1. ..E D
  1. ...; FT Not Initiated
  1. ...S (@FDA@(.14),REFDT)=$P(VFSTR,U,3) ;DidNotInit (Date)
  1. ...S @FDA@(.15)=NOW,@FDA@(.16)=DUZ
  1. ...;S (@FDA@(.17),REFUSED)=$P(VFSTR,U,4) ;DidnotInitReason
  1. ...S REFUSED=$P(VFSTR,U,4)
  1. ...S FIBTXT=$$GET1^DIQ(9999999.102,REFUSED,.01)
  1. ...S @FDA@(.17)=FIBTXT
  1. ...S @FDA@(.11)="@" ; Delete any previous value for FT Initiated
  1. ...S @FDA@(.12)="@" ; Delete any previous value for FT D/TEntered
  1. ...S @FDA@(.13)="@" ; Delete any previous value for FT EnteredBy
  1. .E I VCODE="FT" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S FTCOMM=$P(VFSTR,U,2) ; Fibrinolytic Therapy Comment
  1. ..I FTCOMM="" S @FDA@(4)="@" ; Delete the comment, whether or not it already exists.
  1. ..E D
  1. ...S @FDA@(4)=$NA(FDA(FNUM,VFIEN_",",4))
  1. ...S @FDA@(4,0)=$G(@FDA@(4,0))+1
  1. ...S @FDA@(4,@FDA@(4,0))=FTCOMM
  1. .;IHS/MSC/MGH Patch 24 for PCI
  1. .E I VCODE="PC" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..I $P(VFSTR,U,2)="" D
  1. ...S @FDA@(1102)="@"
  1. ...S @FDA@(1103)="@"
  1. ..E D
  1. ...S @FDA@(1102)=$P(VFSTR,U,2)
  1. ...I $P(VFSTR,U,3)="" S @FDA@(1103)="@"
  1. ...E S @FDA@(1103)=$P(VFSTR,U,3)
  1. .E I VCODE="O" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S ODT=$P(VFSTR,U,2)
  1. ..I ODT>0,ODT'["." S ODT=(ODT-1)+.24
  1. ..S @FDA@(.04)=ODT ;OnsetSymptoms
  1. ..;S @FDA@(.04)=$P(VFSTR,U,2) ;OnsetSymptoms
  1. ..S @FDA@(.05)=NOW
  1. ..S @FDA@(.06)=DUZ
  1. .E I VCODE="OT" D
  1. ..S FDA=$NA(FDA(FNUM,VFIEN_","))
  1. ..S @FDA@(2)=$NA(FDA(FNUM,VFIEN_",",2))
  1. ..S OTCOMM=$P(VFSTR,U,2) ; Onset Symptoms Text
  1. ..I OTCOMM="" S @FDA@(2)="@" ; Delete the comment, whether or not it already exists.
  1. ..E D
  1. ...S @FDA@(2)=$NA(FDA(FNUM,VFIEN_",",2))
  1. ...S @FDA@(2,0)=$G(@FDA@(2,0))+1
  1. ...S @FDA@(2,@FDA@(2,0))=OTCOMM
  1. .E I VCODE="P" D ; Protocol Standing Orders (Sub-File)
  1. ..S SUBIEN=$P(VFSTR,U,2)
  1. ..I +SUBIEN&(SUBIEN["@") D DEL^BGOVAMI1(.RET2,VFIEN,SUBIEN,13) Q
  1. ..I SUBIEN="" S NUMNEW=$G(NUMNEW)+1,SUBIEN="+"_NUMNEW
  1. ..S SUBIEN=SUBIEN_","_VFIEN_","
  1. ..S FDA=$NA(FDA(FNUM_13,SUBIEN))
  1. ..S @FDA@(.01)=$P(VFSTR,U,3)
  1. ..S PDT=$P(VFSTR,U,4)
  1. ..I PDT>0,PDT'["." S PDT=(PDT-1)+.24
  1. ..S @FDA@(.02)=PDT ;ProtocolEventDateTime
  1. ..;S @FDA@(.02)=$P(VFSTR,U,4) ;ProtocolEventDateTime
  1. ..S @FDA@(.03)=NOW
  1. ..S @FDA@(.04)=DUZ
  1. .E I VCODE="PT" D ; Use same SUBIEN as previous "P" record
  1. ..Q:+SUBIEN&(SUBIEN["@")
  1. ..S PTCOMM=$P(VFSTR,U,3)
  1. ..I PTCOMM="" S @FDA@(1)="@"
  1. ..E D
  1. ...S @FDA@(1)=$NA(FDA(FNUM_13,SUBIEN,1))
  1. ...S @FDA@(1,0)=$G(@FDA@(1,0))+1
  1. ...S @FDA@(1,@FDA@(1,0))=PTCOMM
  1. ...;S @FDA@(1,@FDA@(1,0))=$P(VFSTR,U,3)
  1. .E I VCODE="S" D
  1. ..S SUBIEN=$P(VFSTR,U,2)
  1. ..I +SUBIEN&(SUBIEN["@") D DEL^BGOVAMI1(.RET2,VFIEN,SUBIEN,15) Q
  1. ..I SUBIEN="" S NUMNEW=$G(NUMNEW)+1,SUBIEN="+"_NUMNEW
  1. ..S SUBIEN=SUBIEN_","_VFIEN_","
  1. ..S FDA=$NA(FDA(FNUM_15,SUBIEN))
  1. ..S @FDA@(.01)=$P(VFSTR,U,3) ;Symptoms
  1. ..;S @FDA@(.019)=$P(VFSTR,U,4) ;Symptom Preferred Text
  1. S RET=$$UPDATE^BGOUTL(.FDA,"")
  1. I RET,VFNEW,$$DELETE^BGOUTL(FNUM,VFIEN)
  1. D:'RET VFEVT^BGOUTL2(FNUM,VFIEN,'VFNEW)
  1. S:'RET RET=VFIEN
  1. ;add #9000022 PATIENT REFUSALS FOR SERVICE/NMI file entry:
  1. I $G(REFUSED)]"" N RET S RET=$$SETREF^BGOVAMI1(DFN,REFUSED,REFDT,VFNEW)
  1. Q
  1. ;
  1. NARR(DESCT,NARR) ;Provider narrative is now provider text | descriptive SNOMED CT
  1. S NARRPTR=0
  1. S NARR=NARR_"|"_DESCT
  1. I $L(NARR) D Q:RET
  1. .S RET=$$FNDNARR^BGOUTL2(NARR)
  1. .S:RET>0 NARRPTR=RET,RET=""
  1. Q NARRPTR
  1. ;
  1. ; Return V File #
  1. ; This method signature allows this to be called as a Remote Procedure.
  1. FNUM(RET,INP) S RET=9000010.62
  1. Q RET