- IVMCQ2 ;ALB/KCL - API FOR FINANCIAL QUERIES (continued) ; 27-APR-95
- ;;2.0;INCOME VERIFICATION MATCH;**17**;21-OCT-94
- ;
- ;
- MONITOR ; Description: This entry point is used to monitor the IVM FINANCIAL
- ; QUERY LOG file and check for query transmissions that have not been
- ; responded to for more than 2 days. If a query is > 2 days old, the
- ; corresponding entry in the IVM FINANCIAL QUERY LOG file will be
- ; updated/closed and a new financial query may be sent.
- ;
- N IVMQLOG,QRYIEN,%
- ;
- ; roll through query log entries with 'open' status
- S QRYIEN=0 F S QRYIEN=$O(^IVM(301.62,"AC",0,QRYIEN)) Q:'QRYIEN D
- .;
- .; obtain record from IVM FINANCIAL QUERY LOG
- .Q:'$$GET(+QRYIEN,.IVMQLOG)
- .;
- .; quit if query msg not old enough
- .Q:IVMQLOG("SENT")>$$FMADD^XLFDT(DT,-2)
- .;
- .; update/auto-close query in IVM FINANCIAL QUERY LOG file
- .D NOW^%DTC,UPD(IVMQLOG("DFN"),+QRYIEN,%,6,2)
- .;
- .; quit if new query is not needed
- .Q:'$$NEED^IVMCQ(IVMQLOG("DFN"))
- .;
- .; send new query
- .I $$QUERY^IVMCQ1(IVMQLOG("DFN"),IVMQLOG("TRANBY"),IVMQLOG("NOTIFY"),IVMQLOG("OPTION"))
- ;
- Q
- ;
- ;
- FIND(DFN,IVMMSG,IVMRECD,IVMCR,IVMCS) ; Description: Used to find and update
- ; entry in IVM FINANCIAL QUERY LOG file.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ; IVMMSG - query message id
- ; IVMRECD - date/time query response received
- ; IVMCR - query closure reason code
- ; IVMCS - query closure source (1|DCD -- 2|DHCP)
- ;
- ; Output: none
- ;
- I '$G(DFN)!'$G(IVMCR)!'$G(IVMCS) G FINDQ
- N IVM,IVMD
- S IVM=0 F S IVM=$O(^IVM(301.62,"B",DFN,IVM)) Q:'IVM D
- .S IVMD=$G(^IVM(301.62,+IVM,0))
- .Q:$P(IVMD,"^",5)'=$G(IVMMSG) ; message, query ID's not same
- .D UPD(DFN,+IVM,$G(IVMRECD),IVMCR,IVMCS)
- FINDQ Q
- ;
- ;
- UPD(DFN,IVMDA,IVMRECD,IVMCR,IVMCS) ; Description: Used to update record found in IVM FINANCIAL QUERY LOG file.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ; IVMMSG - query message id
- ; IVMRECD - date/time query response received
- ; IVMCR - query closure reason code
- ; IVMCS - query closure source (1|DCD -- 2|DHCP)
- ;
- ; Output: none
- ;
- I '$G(DFN)!'$G(IVMDA)!'$G(IVMCR)!'$G(IVMCS) G FINDQ
- N DA,DIE,DR,IVMCRP,IVMOPT
- S IVMCRP=$O(^IVM(301.94,"AC",IVMCR,0)) S:'IVMCRP IVMCRP=IVMCR
- S DIE="^IVM(301.62,",DA=IVMDA
- S DR=".03////1"_$S($G(IVMRECD):";.06////"_IVMRECD,1:"")
- S DR=DR_";1.01////"_IVMCRP_";1.02///NOW;1.03////"_IVMCS
- D ^DIE
- ;
- ; determine if query reply requires user notification
- I '$$NOTIFY(IVMDA)
- ;
- UPDQ Q
- ;
- ;
- FINDMSG(MSGID) ;
- ; Description: Used to find a record in the IVM FINANCIAL QUERY LOG
- ; file, given the unique message id assigned to the query by the
- ; HL7 package.
- ;
- ; Input:
- ; MSGID - The unique id assigned to the query by the HL7 package and
- ; stored in the IVM FINANCIAL QUERY LOG as the HL7 MESSAGE
- ; CONTROL ID field.
- ;
- ; Output:
- ; Function Value - If successful, returns the ien of the record in
- ; the file, otherwise returns 0 on failure.
- ;
- Q:($G(MSGID)="") 0
- Q +$O(^IVM(301.62,"C",MSGID,0))
- ;
- ;
- GET(IEN,IVMQRY) ;
- ; Description: Used to obtain a record in the IVM FINANCIAL QUERY LOG
- ; file. The values are returned in the IVMQRY() array.
- ;
- ; Input:
- ; IEN - internal entry number of a record in the IVM FINANCIAL QUERY LOG file.
- ;
- ; Output:
- ; Function Value - 1 on success, 0 on failure.
- ; IVMQRY() array, pass by reference. Subscripts are:
- ; "DFN" - PATIENT field
- ; "SENT" - QUERY TRANS DT/TM field
- ; "STATUS" - QUERY STATUS field
- ; "TRANBY" - TRANSMITTED BY field
- ; "MSGID" - HL7 MESSAGE CONTROL ID field
- ; "RESPONSE" - QUERY RESPONSE REC'D DT/TM field
- ; "OPTION" - DHCP OPTION field
- ; "NOTIFY" - NOTIFY FLAG field
- ; "CLOSURE RSN" - CLOSURE REASON field
- ; "CLOSURE" - CLOSURE DT/TM field
- ; "CLOSURE SRC" - CLOSURE SOURCE field
- ;
- N IVMNODE
- K IVMQRY S IVMQRY=""
- Q:'$G(IEN) 0
- ;
- S IVMNODE=$G(^IVM(301.62,IEN,0))
- Q:IVMNODE="" 0
- ;
- S IVMQRY("DFN")=$P(IVMNODE,"^")
- S IVMQRY("SENT")=$P(IVMNODE,"^",2)
- S IVMQRY("STATUS")=$P(IVMNODE,"^",3)
- S IVMQRY("TRANBY")=$P(IVMNODE,"^",4)
- S IVMQRY("MSGID")=$P(IVMNODE,"^",5)
- S IVMQRY("RESPONSE")=$P(IVMNODE,"^",6)
- S IVMQRY("OPTION")=$P(IVMNODE,"^",7)
- S IVMQRY("NOTIFY")=$P(IVMNODE,"^",8)
- ;
- S IVMNODE=$G(^IVM(301.62,IEN,1))
- S IVMQRY("CLOSURE RSN")=$P(IVMNODE,"^")
- S IVMQRY("CLOSURE")=$P(IVMNODE,"^",2)
- S IVMQRY("CLOSURE SRC")=$P(IVMNODE,"^",3)
- ;
- Q 1
- ;
- ;
- DELETE(IEN) ;
- ; Description: Delete record in the IVM FINANCIAL QUERY LOG file,
- ; given the internal entry number (IEN).
- ;
- ; Input:
- ; IEN - The internal entry number of the record.
- ;
- ; Output:
- ; Function Value - 1 on success, 0 on failure.
- ;
- Q:'$G(IEN) 0
- N DIK,DA
- S DIK="^IVM(301.62,"
- S DA=IEN
- D ^DIK
- Q 1
- ;
- ;
- LASTQRY(DFN) ; Description: Used to find the last financial query for a patient.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ;
- ; Output:
- ; Function Value - If successful, returns the ien of the record in
- ; the file, otherwise returns 0 on failure.
- ;
- Q:'$G(DFN) 0
- N QRYDT
- S QRYDT=$O(^IVM(301.62,"ADT1",DFN,9999999.999999),-1)
- Q:'QRYDT 0
- Q $O(^IVM(301.62,"ADT1",DFN,QRYDT,0))
- ;
- ;
- OPEN(DFN) ; Description: Used to determine if a patient has a financial query that is open (QUERY STATUS=TRANSMITTED).
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ;
- ; Output:
- ; Function Value - returns 1 if open query, otherwise returns 0.
- ;
- N IVMQRY,IVMIEN,OPEN
- S OPEN=0
- S IVMIEN=$$LASTQRY($G(DFN))
- I IVMIEN,$$GET(IVMIEN,.IVMQRY) D
- .I 'IVMQRY("STATUS") S OPEN=1
- Q OPEN
- ;
- SENT(DFN,IVMDT) ; Description: Used to determine if a query was sent for a patien on a specific date.
- ;
- ; Input:
- ; DFN - IEN of patient record in PATIENT file
- ; IVMDT - (optional) Date/Time - default TODAY
- ;
- ; Output:
- ; Function Value: returns 1 if query sent on date, 0 otherwise.
- ;
- N IVMIDT,IVMIEN,IVMLDT,IVMQRY,SAMEDAY
- ;
- S SAMEDAY=0
- I '$G(DFN) G SENTQ
- S IVMIDT=$S($G(IVMDT)>0:IVMDT,1:DT) S:'$P(IVMIDT,".",2) IVMIDT=IVMIDT_.999999
- S IVMIEN=$$LASTQRY(DFN)
- I IVMIEN,$$GET(IVMIEN,.IVMQRY) D
- .I $P(IVMIDT,".")=$P(IVMQRY("SENT"),".") S SAMEDAY=1
- ;
- SENTQ Q SAMEDAY
- ;
- ;
- QRYQUE(DFN) ; Description: Queue off job to send a financial query to the
- ; the HEC. This does first check to see if a query is needed.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ;
- ; Output: none
- ;
- N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- S ZTDESC="IVM Financial Query" ; task description
- S ZTDTH=$H ; task start time
- S ZTRTN="QUERY^IVMCQ2(DFN)" ; entry point of tasked routine
- S ZTSAVE("DFN")="" ; input parameters
- S ZTIO="" ; i/o device - (not needed)
- D ^%ZTLOAD
- Q
- ;
- QRYQUE2(DFN,DUZ,NOTIFY,OPTION) ; Description: Queue off job to send a financial query to the
- ; the HEC. This version does NOT first check to see if a query is
- ; needed, but does check to see if a query is currently open.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ; DUZ (optional)
- ; NOTIFY - (optional) 1 if the user requested notification when reply received
- ; OPTION - (optional) the option where the query was requested
- ;
- ; Output: none
- ;
- N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- S ZTDESC="IVM Financial Query" ; task description
- S ZTDTH=$H ; task start time
- S ZTRTN="QUERY2^IVMCQ1(DFN,$G(DUZ),$G(NOTIFY),$G(OPTION),,1)" ; entry point of tasked routine
- S ZTSAVE("DFN")="",ZTSAVE("DUZ")="",ZTSAVE("NOTIFY")="",ZTSAVE("OPTION")=""
- S ZTIO="" ; i/o device - (not needed)
- D ^%ZTLOAD
- Q
- ;
- QUERY(DFN) ; Description: Determine if a financial query should be sent to the HEC.
- ;
- ; Input:
- ; DFN - ien of patient record in PATIENT file
- ;
- ; Output: none
- ;
- ;
- I '$G(DFN) Q
- I '$$NEED^IVMCQ(DFN,0) Q
- ;
- ; send query for patient
- I $$QUERY^IVMCQ1(DFN)
- ;
- Q
- ;
- ;
- NOTIFY(QRYIEN) ; Description: Send notification message of reply received for financial query.
- ;
- ; Input:
- ; QRYIEN - ien of record in IVM FINANCIAL QUERY LOG file
- ;
- ; Output:
- ; Function Value: 1 on success, 0 on failure
- ;
- N DIFROM,IVMTEXT,PATIENT,QARRAY,SUCCESS,XMDUZ,XMTEXT,XMSUB,XMY,XMZ
- ;
- S SUCCESS=0
- ;
- I '$G(QRYIEN) G MSGQ
- ;
- ; obtain record from IVM FINANCIAL QUERY LOG
- I '$$GET(QRYIEN,.QARRAY) G MSGQ
- ;
- ; check NOTIFY FLAG
- I '$G(QARRAY("NOTIFY")) G MSGQ
- ;
- ; obtain patient identifiers
- I '$$GETPAT^IVMUFNC($G(QARRAY("DFN")),.PATIENT) G MSGQ
- ;
- ; build notification message
- S XMDUZ="IVM PACKAGE"
- S XMY(QARRAY("TRANBY")_"@"_$G(^XMB("NETNAME")))=""
- S XMSUB="Financial Query Reply for: "_PATIENT("NAME")_" ("_PATIENT("SSN")_")"
- S XMTEXT="IVMTEXT("
- S IVMTEXT(1)="A reply to the financial query that you sent has been received."
- S IVMTEXT(2)=" "
- S IVMTEXT(3)=" Patient Name: "_PATIENT("NAME")
- S IVMTEXT(4)=" Patient SSN: "_PATIENT("SSN")
- S IVMTEXT(5)=" "
- S IVMTEXT(6)=" Query Transmission Date/Time: "_$$EXTERNAL^DILFD(301.62,.02,"F",QARRAY("SENT"))
- S IVMTEXT(7)=" Query Response Date/Time: "_$$EXTERNAL^DILFD(301.62,.06,"F",QARRAY("RESPONSE"))
- S IVMTEXT(8)=" "
- S IVMTEXT(9)=" Closure Reason: "_$$EXTERNAL^DILFD(301.62,1.01,"F",QARRAY("CLOSURE RSN"))
- S IVMTEXT(10)=" Closure Source: "_$$EXTERNAL^DILFD(301.62,1.03,"F",QARRAY("CLOSURE SRC"))
- ;
- D ^XMD
- ;
- S SUCCESS=1
- ;
- MSGQ Q SUCCESS
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIVMCQ2 9629 printed Jan 18, 2025@03:02:01 Page 2
- IVMCQ2 ;ALB/KCL - API FOR FINANCIAL QUERIES (continued) ; 27-APR-95
- +1 ;;2.0;INCOME VERIFICATION MATCH;**17**;21-OCT-94
- +2 ;
- +3 ;
- MONITOR ; Description: This entry point is used to monitor the IVM FINANCIAL
- +1 ; QUERY LOG file and check for query transmissions that have not been
- +2 ; responded to for more than 2 days. If a query is > 2 days old, the
- +3 ; corresponding entry in the IVM FINANCIAL QUERY LOG file will be
- +4 ; updated/closed and a new financial query may be sent.
- +5 ;
- +6 NEW IVMQLOG,QRYIEN,%
- +7 ;
- +8 ; roll through query log entries with 'open' status
- +9 SET QRYIEN=0
- FOR
- SET QRYIEN=$ORDER(^IVM(301.62,"AC",0,QRYIEN))
- if 'QRYIEN
- QUIT
- Begin DoDot:1
- +10 ;
- +11 ; obtain record from IVM FINANCIAL QUERY LOG
- +12 if '$$GET(+QRYIEN,.IVMQLOG)
- QUIT
- +13 ;
- +14 ; quit if query msg not old enough
- +15 if IVMQLOG("SENT")>$$FMADD^XLFDT(DT,-2)
- QUIT
- +16 ;
- +17 ; update/auto-close query in IVM FINANCIAL QUERY LOG file
- +18 DO NOW^%DTC
- DO UPD(IVMQLOG("DFN"),+QRYIEN,%,6,2)
- +19 ;
- +20 ; quit if new query is not needed
- +21 if '$$NEED^IVMCQ(IVMQLOG("DFN"))
- QUIT
- +22 ;
- +23 ; send new query
- +24 IF $$QUERY^IVMCQ1(IVMQLOG("DFN"),IVMQLOG("TRANBY"),IVMQLOG("NOTIFY"),IVMQLOG("OPTION"))
- End DoDot:1
- +25 ;
- +26 QUIT
- +27 ;
- +28 ;
- FIND(DFN,IVMMSG,IVMRECD,IVMCR,IVMCS) ; Description: Used to find and update
- +1 ; entry in IVM FINANCIAL QUERY LOG file.
- +2 ;
- +3 ; Input:
- +4 ; DFN - ien of patient record in PATIENT file
- +5 ; IVMMSG - query message id
- +6 ; IVMRECD - date/time query response received
- +7 ; IVMCR - query closure reason code
- +8 ; IVMCS - query closure source (1|DCD -- 2|DHCP)
- +9 ;
- +10 ; Output: none
- +11 ;
- +12 IF '$GET(DFN)!'$GET(IVMCR)!'$GET(IVMCS)
- GOTO FINDQ
- +13 NEW IVM,IVMD
- +14 SET IVM=0
- FOR
- SET IVM=$ORDER(^IVM(301.62,"B",DFN,IVM))
- if 'IVM
- QUIT
- Begin DoDot:1
- +15 SET IVMD=$GET(^IVM(301.62,+IVM,0))
- +16 ; message, query ID's not same
- if $PIECE(IVMD,"^",5)'=$GET(IVMMSG)
- QUIT
- +17 DO UPD(DFN,+IVM,$GET(IVMRECD),IVMCR,IVMCS)
- End DoDot:1
- FINDQ QUIT
- +1 ;
- +2 ;
- UPD(DFN,IVMDA,IVMRECD,IVMCR,IVMCS) ; Description: Used to update record found in IVM FINANCIAL QUERY LOG file.
- +1 ;
- +2 ; Input:
- +3 ; DFN - ien of patient record in PATIENT file
- +4 ; IVMMSG - query message id
- +5 ; IVMRECD - date/time query response received
- +6 ; IVMCR - query closure reason code
- +7 ; IVMCS - query closure source (1|DCD -- 2|DHCP)
- +8 ;
- +9 ; Output: none
- +10 ;
- +11 IF '$GET(DFN)!'$GET(IVMDA)!'$GET(IVMCR)!'$GET(IVMCS)
- GOTO FINDQ
- +12 NEW DA,DIE,DR,IVMCRP,IVMOPT
- +13 SET IVMCRP=$ORDER(^IVM(301.94,"AC",IVMCR,0))
- if 'IVMCRP
- SET IVMCRP=IVMCR
- +14 SET DIE="^IVM(301.62,"
- SET DA=IVMDA
- +15 SET DR=".03////1"_$SELECT($GET(IVMRECD):";.06////"_IVMRECD,1:"")
- +16 SET DR=DR_";1.01////"_IVMCRP_";1.02///NOW;1.03////"_IVMCS
- +17 DO ^DIE
- +18 ;
- +19 ; determine if query reply requires user notification
- +20 IF '$$NOTIFY(IVMDA)
- +21 ;
- UPDQ QUIT
- +1 ;
- +2 ;
- FINDMSG(MSGID) ;
- +1 ; Description: Used to find a record in the IVM FINANCIAL QUERY LOG
- +2 ; file, given the unique message id assigned to the query by the
- +3 ; HL7 package.
- +4 ;
- +5 ; Input:
- +6 ; MSGID - The unique id assigned to the query by the HL7 package and
- +7 ; stored in the IVM FINANCIAL QUERY LOG as the HL7 MESSAGE
- +8 ; CONTROL ID field.
- +9 ;
- +10 ; Output:
- +11 ; Function Value - If successful, returns the ien of the record in
- +12 ; the file, otherwise returns 0 on failure.
- +13 ;
- +14 if ($GET(MSGID)="")
- QUIT 0
- +15 QUIT +$ORDER(^IVM(301.62,"C",MSGID,0))
- +16 ;
- +17 ;
- GET(IEN,IVMQRY) ;
- +1 ; Description: Used to obtain a record in the IVM FINANCIAL QUERY LOG
- +2 ; file. The values are returned in the IVMQRY() array.
- +3 ;
- +4 ; Input:
- +5 ; IEN - internal entry number of a record in the IVM FINANCIAL QUERY LOG file.
- +6 ;
- +7 ; Output:
- +8 ; Function Value - 1 on success, 0 on failure.
- +9 ; IVMQRY() array, pass by reference. Subscripts are:
- +10 ; "DFN" - PATIENT field
- +11 ; "SENT" - QUERY TRANS DT/TM field
- +12 ; "STATUS" - QUERY STATUS field
- +13 ; "TRANBY" - TRANSMITTED BY field
- +14 ; "MSGID" - HL7 MESSAGE CONTROL ID field
- +15 ; "RESPONSE" - QUERY RESPONSE REC'D DT/TM field
- +16 ; "OPTION" - DHCP OPTION field
- +17 ; "NOTIFY" - NOTIFY FLAG field
- +18 ; "CLOSURE RSN" - CLOSURE REASON field
- +19 ; "CLOSURE" - CLOSURE DT/TM field
- +20 ; "CLOSURE SRC" - CLOSURE SOURCE field
- +21 ;
- +22 NEW IVMNODE
- +23 KILL IVMQRY
- SET IVMQRY=""
- +24 if '$GET(IEN)
- QUIT 0
- +25 ;
- +26 SET IVMNODE=$GET(^IVM(301.62,IEN,0))
- +27 if IVMNODE=""
- QUIT 0
- +28 ;
- +29 SET IVMQRY("DFN")=$PIECE(IVMNODE,"^")
- +30 SET IVMQRY("SENT")=$PIECE(IVMNODE,"^",2)
- +31 SET IVMQRY("STATUS")=$PIECE(IVMNODE,"^",3)
- +32 SET IVMQRY("TRANBY")=$PIECE(IVMNODE,"^",4)
- +33 SET IVMQRY("MSGID")=$PIECE(IVMNODE,"^",5)
- +34 SET IVMQRY("RESPONSE")=$PIECE(IVMNODE,"^",6)
- +35 SET IVMQRY("OPTION")=$PIECE(IVMNODE,"^",7)
- +36 SET IVMQRY("NOTIFY")=$PIECE(IVMNODE,"^",8)
- +37 ;
- +38 SET IVMNODE=$GET(^IVM(301.62,IEN,1))
- +39 SET IVMQRY("CLOSURE RSN")=$PIECE(IVMNODE,"^")
- +40 SET IVMQRY("CLOSURE")=$PIECE(IVMNODE,"^",2)
- +41 SET IVMQRY("CLOSURE SRC")=$PIECE(IVMNODE,"^",3)
- +42 ;
- +43 QUIT 1
- +44 ;
- +45 ;
- DELETE(IEN) ;
- +1 ; Description: Delete record in the IVM FINANCIAL QUERY LOG file,
- +2 ; given the internal entry number (IEN).
- +3 ;
- +4 ; Input:
- +5 ; IEN - The internal entry number of the record.
- +6 ;
- +7 ; Output:
- +8 ; Function Value - 1 on success, 0 on failure.
- +9 ;
- +10 if '$GET(IEN)
- QUIT 0
- +11 NEW DIK,DA
- +12 SET DIK="^IVM(301.62,"
- +13 SET DA=IEN
- +14 DO ^DIK
- +15 QUIT 1
- +16 ;
- +17 ;
- LASTQRY(DFN) ; Description: Used to find the last financial query for a patient.
- +1 ;
- +2 ; Input:
- +3 ; DFN - ien of patient record in PATIENT file
- +4 ;
- +5 ; Output:
- +6 ; Function Value - If successful, returns the ien of the record in
- +7 ; the file, otherwise returns 0 on failure.
- +8 ;
- +9 if '$GET(DFN)
- QUIT 0
- +10 NEW QRYDT
- +11 SET QRYDT=$ORDER(^IVM(301.62,"ADT1",DFN,9999999.999999),-1)
- +12 if 'QRYDT
- QUIT 0
- +13 QUIT $ORDER(^IVM(301.62,"ADT1",DFN,QRYDT,0))
- +14 ;
- +15 ;
- OPEN(DFN) ; Description: Used to determine if a patient has a financial query that is open (QUERY STATUS=TRANSMITTED).
- +1 ;
- +2 ; Input:
- +3 ; DFN - ien of patient record in PATIENT file
- +4 ;
- +5 ; Output:
- +6 ; Function Value - returns 1 if open query, otherwise returns 0.
- +7 ;
- +8 NEW IVMQRY,IVMIEN,OPEN
- +9 SET OPEN=0
- +10 SET IVMIEN=$$LASTQRY($GET(DFN))
- +11 IF IVMIEN
- IF $$GET(IVMIEN,.IVMQRY)
- Begin DoDot:1
- +12 IF 'IVMQRY("STATUS")
- SET OPEN=1
- End DoDot:1
- +13 QUIT OPEN
- +14 ;
- SENT(DFN,IVMDT) ; Description: Used to determine if a query was sent for a patien on a specific date.
- +1 ;
- +2 ; Input:
- +3 ; DFN - IEN of patient record in PATIENT file
- +4 ; IVMDT - (optional) Date/Time - default TODAY
- +5 ;
- +6 ; Output:
- +7 ; Function Value: returns 1 if query sent on date, 0 otherwise.
- +8 ;
- +9 NEW IVMIDT,IVMIEN,IVMLDT,IVMQRY,SAMEDAY
- +10 ;
- +11 SET SAMEDAY=0
- +12 IF '$GET(DFN)
- GOTO SENTQ
- +13 SET IVMIDT=$SELECT($GET(IVMDT)>0:IVMDT,1:DT)
- if '$PIECE(IVMIDT,".",2)
- SET IVMIDT=IVMIDT_.999999
- +14 SET IVMIEN=$$LASTQRY(DFN)
- +15 IF IVMIEN
- IF $$GET(IVMIEN,.IVMQRY)
- Begin DoDot:1
- +16 IF $PIECE(IVMIDT,".")=$PIECE(IVMQRY("SENT"),".")
- SET SAMEDAY=1
- End DoDot:1
- +17 ;
- SENTQ QUIT SAMEDAY
- +1 ;
- +2 ;
- QRYQUE(DFN) ; Description: Queue off job to send a financial query to the
- +1 ; the HEC. This does first check to see if a query is needed.
- +2 ;
- +3 ; Input:
- +4 ; DFN - ien of patient record in PATIENT file
- +5 ;
- +6 ; Output: none
- +7 ;
- +8 NEW ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- +9 ; task description
- SET ZTDESC="IVM Financial Query"
- +10 ; task start time
- SET ZTDTH=$HOROLOG
- +11 ; entry point of tasked routine
- SET ZTRTN="QUERY^IVMCQ2(DFN)"
- +12 ; input parameters
- SET ZTSAVE("DFN")=""
- +13 ; i/o device - (not needed)
- SET ZTIO=""
- +14 DO ^%ZTLOAD
- +15 QUIT
- +16 ;
- QRYQUE2(DFN,DUZ,NOTIFY,OPTION) ; Description: Queue off job to send a financial query to the
- +1 ; the HEC. This version does NOT first check to see if a query is
- +2 ; needed, but does check to see if a query is currently open.
- +3 ;
- +4 ; Input:
- +5 ; DFN - ien of patient record in PATIENT file
- +6 ; DUZ (optional)
- +7 ; NOTIFY - (optional) 1 if the user requested notification when reply received
- +8 ; OPTION - (optional) the option where the query was requested
- +9 ;
- +10 ; Output: none
- +11 ;
- +12 NEW ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
- +13 ; task description
- SET ZTDESC="IVM Financial Query"
- +14 ; task start time
- SET ZTDTH=$HOROLOG
- +15 ; entry point of tasked routine
- SET ZTRTN="QUERY2^IVMCQ1(DFN,$G(DUZ),$G(NOTIFY),$G(OPTION),,1)"
- +16 SET ZTSAVE("DFN")=""
- SET ZTSAVE("DUZ")=""
- SET ZTSAVE("NOTIFY")=""
- SET ZTSAVE("OPTION")=""
- +17 ; i/o device - (not needed)
- SET ZTIO=""
- +18 DO ^%ZTLOAD
- +19 QUIT
- +20 ;
- QUERY(DFN) ; Description: Determine if a financial query should be sent to the HEC.
- +1 ;
- +2 ; Input:
- +3 ; DFN - ien of patient record in PATIENT file
- +4 ;
- +5 ; Output: none
- +6 ;
- +7 ;
- +8 IF '$GET(DFN)
- QUIT
- +9 IF '$$NEED^IVMCQ(DFN,0)
- QUIT
- +10 ;
- +11 ; send query for patient
- +12 IF $$QUERY^IVMCQ1(DFN)
- +13 ;
- +14 QUIT
- +15 ;
- +16 ;
- NOTIFY(QRYIEN) ; Description: Send notification message of reply received for financial query.
- +1 ;
- +2 ; Input:
- +3 ; QRYIEN - ien of record in IVM FINANCIAL QUERY LOG file
- +4 ;
- +5 ; Output:
- +6 ; Function Value: 1 on success, 0 on failure
- +7 ;
- +8 NEW DIFROM,IVMTEXT,PATIENT,QARRAY,SUCCESS,XMDUZ,XMTEXT,XMSUB,XMY,XMZ
- +9 ;
- +10 SET SUCCESS=0
- +11 ;
- +12 IF '$GET(QRYIEN)
- GOTO MSGQ
- +13 ;
- +14 ; obtain record from IVM FINANCIAL QUERY LOG
- +15 IF '$$GET(QRYIEN,.QARRAY)
- GOTO MSGQ
- +16 ;
- +17 ; check NOTIFY FLAG
- +18 IF '$GET(QARRAY("NOTIFY"))
- GOTO MSGQ
- +19 ;
- +20 ; obtain patient identifiers
- +21 IF '$$GETPAT^IVMUFNC($GET(QARRAY("DFN")),.PATIENT)
- GOTO MSGQ
- +22 ;
- +23 ; build notification message
- +24 SET XMDUZ="IVM PACKAGE"
- +25 SET XMY(QARRAY("TRANBY")_"@"_$GET(^XMB("NETNAME")))=""
- +26 SET XMSUB="Financial Query Reply for: "_PATIENT("NAME")_" ("_PATIENT("SSN")_")"
- +27 SET XMTEXT="IVMTEXT("
- +28 SET IVMTEXT(1)="A reply to the financial query that you sent has been received."
- +29 SET IVMTEXT(2)=" "
- +30 SET IVMTEXT(3)=" Patient Name: "_PATIENT("NAME")
- +31 SET IVMTEXT(4)=" Patient SSN: "_PATIENT("SSN")
- +32 SET IVMTEXT(5)=" "
- +33 SET IVMTEXT(6)=" Query Transmission Date/Time: "_$$EXTERNAL^DILFD(301.62,.02,"F",QARRAY("SENT"))
- +34 SET IVMTEXT(7)=" Query Response Date/Time: "_$$EXTERNAL^DILFD(301.62,.06,"F",QARRAY("RESPONSE"))
- +35 SET IVMTEXT(8)=" "
- +36 SET IVMTEXT(9)=" Closure Reason: "_$$EXTERNAL^DILFD(301.62,1.01,"F",QARRAY("CLOSURE RSN"))
- +37 SET IVMTEXT(10)=" Closure Source: "_$$EXTERNAL^DILFD(301.62,1.03,"F",QARRAY("CLOSURE SRC"))
- +38 ;
- +39 DO ^XMD
- +40 ;
- +41 SET SUCCESS=1
- +42 ;
- MSGQ QUIT SUCCESS